API Reference
Four agents, four endpoints. Everything you need to integrate Scira.
Overview
Every Scira endpoint is a single POST request that returns structured JSON. No SDK required.
Get your key
Sign up and generate an API key from your dashboard.
Make a request
POST to any endpoint with your key in the x-api-key header.
Parse the result
Every response is clean JSON with text, sources, and more.
Authentication
Pass your API key in either of these request headers.
x-api-key: YOUR_API_KEYAuthorization: Bearer YOUR_API_KEYNever expose your API key in client-side code or commit it to version control. Use an environment variable like SCIRA_API_KEY.
Rate Limits
Quotas are per API key and reset daily at 00:00 UTC. Exceeding returns 429.
Search
POSTSearches the web using AI and returns a generated summary with source URLs.
Request body
messagesarrayrequiredArray of message objects. Each requires role (must be "user") and content (your query).
curl -X POST https://api.scira.ai/api/search \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"messages": [{ "role": "user", "content": "Latest AI news" }]
}'{
"text": "Here are the latest AI developments...",
"sources": [
"https://example.com/article-1",
"https://example.com/article-2"
]
}People
POSTFinds and enriches a person's profile — LinkedIn, GitHub, X, website, bio.
Request body
querystringrequiredPerson's name, optionally with role, company, or field for better accuracy.
Include context for better results — "Andrej Karpathy AI researcher" outperforms just "Andrej Karpathy".
curl -X POST https://api.scira.ai/api/people \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"query": "Andrej Karpathy AI researcher"}'{
"profile": {
"name": "Andrej Karpathy",
"x": "https://x.com/karpathy",
"linkedin": "https://linkedin.com/in/andrej-karpathy-82493482",
"github": "https://github.com/karpathy",
"website": "https://karpathy.ai/",
"bio": "AI researcher. Former Tesla AI director, ex-OpenAI."
}
}X / Twitter
POSTSearches X in real-time. Returns an AI summary, source URLs, and full tweet objects. Scope to a specific user with the optional username field.
Request body
querystringrequiredWhat to search for on X.
usernamestringLimit to a specific X user (without the @). Omit to search all of X.
curl -X POST https://api.scira.ai/api/xsearch \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{ "query": "AI Gateway", "username": "vercel" }'{
"text": "## AI Gateway\n\nVercel announced...",
"sources": ["https://x.com/vercel/status/123..."],
"results": [
{
"url": "https://x.com/vercel/status/123...",
"author": "vercel",
"publishedDate": "2024-01-15T10:30:00.000Z",
"tweet": {
"id": "123...",
"text": "Introducing AI Gateway...",
"user": { "name": "Vercel", "screen_name": "vercel", "verified": true },
"favorite_count": 1234,
"conversation_count": 56
}
}
]
}tweet is null when the tweet could not be fetched from the X API.
Searches Reddit discussions and returns an AI answer with inline citations and the raw Reddit threads.
Request body
querystringrequiredWhat to search for on Reddit.
curl -X POST https://api.scira.ai/api/reddit \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"query": "Best Next.js deployment practices"}'{
"text": "## Best Practices\n\nBased on Reddit discussions...",
"sources": [
"https://reddit.com/r/nextjs/comments/...",
"https://reddit.com/r/vercel/comments/..."
],
"results": [
{
"title": "Deploying Next.js: lessons learned",
"url": "https://reddit.com/r/nextjs/...",
"excerpt": "When deploying to Vercel, make sure to..."
}
]
}Error Handling
Standard HTTP status codes. Every error includes a JSON body with an error string.
400Bad Request
Malformed body or missing a required field.
401Unauthorized
API key is missing, expired, or invalid.
429Too Many Requests
Daily quota exceeded. Resets at 00:00 UTC.
500Server Error
Something failed on our end. Retry after a moment.
{ "error": "API key is required." }