WikiRest Docs

Code Examples

Ready-to-use code examples for common use cases.

Quick start examples

Python

import requests

response = requests.get(
    "https://api.wikirest.com/v1/search",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={"q": "artificial intelligence", "limit": 5}
)

for hit in response.json()["hits"]:
    print(f"{hit['title']}: {hit['text'][:100]}...")

JavaScript

const response = await fetch(
  "https://api.wikirest.com/v1/search?q=artificial+intelligence&limit=5",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);

const data = await response.json();
data.hits.forEach(hit => {
  console.log(`${hit.title}: ${hit.text.slice(0, 100)}...`);
});

RAG with OpenAI

import requests
import openai

# 1. Search Wikipedia for relevant context
wiki_response = requests.get(
    "https://api.wikirest.com/v1/search",
    headers={"X-API-Key": "WIKIREST_KEY"},
    params={"q": "quantum computing applications", "limit": 3}
).json()

# 2. Build context from search results
context = "\n\n---\n\n".join([
    f"Source: {hit['title']} ({hit['url']})\n{hit['text']}"
    for hit in wiki_response["hits"]
])

# 3. Use context in OpenAI completion
response = openai.chat.completions.create(
    model="gpt-4",
    messages=[
        {
            "role": "system",
            "content": f"""Answer questions using the following Wikipedia context.
Always cite your sources.

Context:
{context}"""
        },
        {
            "role": "user",
            "content": "What are the main applications of quantum computing?"
        }
    ]
)

print(response.choices[0].message.content)

Pagination

import requests

def search_all(query, max_results=100):
    """Fetch all results with pagination."""
    results = []
    offset = 0
    limit = 50  # Max per request

    while len(results) < max_results:
        response = requests.get(
            "https://api.wikirest.com/v1/search",
            headers={"X-API-Key": "YOUR_API_KEY"},
            params={"q": query, "limit": limit, "offset": offset}
        ).json()

        hits = response["hits"]
        if not hits:
            break

        results.extend(hits)
        offset += limit

        # Check if we've reached the end
        if len(hits) < limit:
            break

    return results[:max_results]

# Get up to 100 results
all_results = search_all("machine learning", max_results=100)

Error handling

import requests
import time

def search_with_retry(query, max_retries=3):
    """Search with automatic retry on rate limit."""
    for attempt in range(max_retries):
        response = requests.get(
            "https://api.wikirest.com/v1/search",
            headers={"X-API-Key": "YOUR_API_KEY"},
            params={"q": query, "limit": 10}
        )

        if response.status_code == 200:
            return response.json()

        if response.status_code == 429:
            # Rate limited - wait and retry
            retry_after = int(response.headers.get("Retry-After", 60))
            print(f"Rate limited. Waiting {retry_after}s...")
            time.sleep(retry_after)
            continue

        if response.status_code == 401:
            raise Exception("Invalid API key")

        response.raise_for_status()

    raise Exception("Max retries exceeded")

try:
    results = search_with_retry("test query")
except Exception as e:
    print(f"Error: {e}")

More examples

Was this page helpful?

Help us improve our documentation