SDKs & Libraries
Official and community client libraries for WikiRest API.
Official SDKs
We're working on official SDKs for popular languages. Sign up for updates:
🐍
Python
Coming soonFull async support, Pydantic models, automatic retries.
📦
TypeScript/JavaScript
Coming soonFull TypeScript types, works in Node.js, Deno, and browsers.
🐹
Go
Coming soonIdiomatic Go with context support and connection pooling.
💎
Ruby
PlannedRuby gem with Faraday HTTP client.
Using HTTP directly
WikiRest uses a simple REST API that works with any HTTP client.
Python (requests)
import requests
API_KEY = "your_api_key"
BASE_URL = "https://api.wikirest.com/v1"
def search_wikipedia(query, limit=10):
response = requests.get(
f"{BASE_URL}/search",
headers={"X-API-Key": API_KEY},
params={"q": query, "limit": limit}
)
response.raise_for_status()
return response.json()
# Example usage
results = search_wikipedia("machine learning", limit=5)
for hit in results["hits"]:
print(f"{hit['title']}: {hit['text'][:100]}...") Python (httpx async)
import httpx
import asyncio
API_KEY = "your_api_key"
BASE_URL = "https://api.wikirest.com/v1"
async def search_wikipedia(query, limit=10):
async with httpx.AsyncClient() as client:
response = await client.get(
f"{BASE_URL}/search",
headers={"X-API-Key": API_KEY},
params={"q": query, "limit": limit}
)
response.raise_for_status()
return response.json()
# Example usage
results = asyncio.run(search_wikipedia("artificial intelligence")) JavaScript (fetch)
const API_KEY = "your_api_key";
const BASE_URL = "https://api.wikirest.com/v1";
async function searchWikipedia(query, limit = 10) {
const params = new URLSearchParams({ q: query, limit: String(limit) });
const response = await fetch(`${BASE_URL}/search?${params}`, {
headers: { "X-API-Key": API_KEY }
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
return response.json();
}
// Example usage
const results = await searchWikipedia("neural networks", 5);
results.hits.forEach(hit => console.log(hit.title)); Go
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
const (
apiKey = "your_api_key"
baseURL = "https://api.wikirest.com/v1"
)
type SearchResponse struct {
Hits []struct {
ID string `json:"id"`
Title string `json:"title"`
Text string `json:"text"`
} `json:"hits"`
Query string `json:"query"`
}
func searchWikipedia(query string, limit int) (*SearchResponse, error) {
u, _ := url.Parse(baseURL + "/search")
q := u.Query()
q.Set("q", query)
q.Set("limit", fmt.Sprintf("%d", limit))
u.RawQuery = q.Encode()
req, _ := http.NewRequest("GET", u.String(), nil)
req.Header.Set("X-API-Key", apiKey)
resp, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result SearchResponse
json.NewDecoder(resp.Body).Decode(&result)
return &result, nil
} cURL
# Search
curl -H "X-API-Key: YOUR_KEY" \
"https://api.wikirest.com/v1/search?q=quantum+computing&limit=5"
# Get specific chunk
curl -H "X-API-Key: YOUR_KEY" \
"https://api.wikirest.com/v1/chunk/12345_3"
# Get full page
curl -H "X-API-Key: YOUR_KEY" \
"https://api.wikirest.com/v1/page/12345?format=concat" LLM Framework Integrations
LangChain
Use WikiRest as a retriever in LangChain:
from langchain.retrievers import WikiRestRetriever # Coming soon
# Or use the generic API wrapper
from langchain.utilities import WikiRestAPIWrapper
wiki = WikiRestAPIWrapper(api_key="your_key")
docs = wiki.search("quantum computing", k=5) LlamaIndex
from llama_index.readers import WikiRestReader # Coming soon
reader = WikiRestReader(api_key="your_key")
documents = reader.load_data(query="machine learning", limit=10) See LangChain examples for detailed integration guides.
Community libraries
Community-maintained libraries (not officially supported):
- wikirest-php - PHP client (coming soon)
- wikirest-rust - Rust client (coming soon)
Want to build a client library? Check our API reference and let us know!