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.

01

Get your key

Sign up and generate an API key from your dashboard.

02

Make a request

POST to any endpoint with your key in the x-api-key header.

03

Parse the result

Every response is clean JSON with text, sources, and more.

Authentication

Pass your API key in either of these request headers.

Recommendedx-api-key: YOUR_API_KEY
AlternativeAuthorization: Bearer YOUR_API_KEY

Never 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.

PlanDaily requestsResets
Free20Daily · 00:00 UTC
Pro1,000Daily · 00:00 UTC

Search

POST

Searches the web using AI and returns a generated summary with source URLs.

POST/api/search

Request body

messagesarrayrequired

Array of message objects. Each requires role (must be "user") and content (your query).

Request · cURL
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" }]
  }'
Response
{
  "text": "Here are the latest AI developments...",
  "sources": [
    "https://example.com/article-1",
    "https://example.com/article-2"
  ]
}

People

POST

Finds and enriches a person's profile — LinkedIn, GitHub, X, website, bio.

POST/api/people

Request body

querystringrequired

Person's name, optionally with role, company, or field for better accuracy.

Include context for better results — "Andrej Karpathy AI researcher" outperforms just "Andrej Karpathy".

Request · cURL
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"}'
Response
{
  "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

POST

Searches X in real-time. Returns an AI summary, source URLs, and full tweet objects. Scope to a specific user with the optional username field.

POST/api/xsearch

Request body

querystringrequired

What to search for on X.

usernamestring

Limit to a specific X user (without the @). Omit to search all of X.

Request · cURL
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" }'
Response
{
  "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.

Reddit

POST

Searches Reddit discussions and returns an AI answer with inline citations and the raw Reddit threads.

POST/api/reddit

Request body

querystringrequired

What to search for on Reddit.

Request · cURL
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"}'
Response
{
  "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.

400

Bad Request

Malformed body or missing a required field.

401

Unauthorized

API key is missing, expired, or invalid.

429

Too Many Requests

Daily quota exceeded. Resets at 00:00 UTC.

500

Server Error

Something failed on our end. Retry after a moment.

Error body
{ "error": "API key is required." }