API reference

POST /v1/search

The single endpoint. Different scope values return different array keys in the same envelope.

Endpoint

POST https://api.siftq.com/v1/search

Headers

Authorization: Bearer YOUR_API_KEY
Content-Type:  application/json
Accept:        application/json

Request body

FieldTypeDescription
qrequiredstringNatural-language or keyword query. UTF-8, no length cap.
scopeenumSource pool. One of: webpage, scholar, podcast, video, image, document. Default "webpage".
sizestringResults per request, "1"–"20". Note: string type, matches upstream.
formatenumResponse shape: chat_completions (default), markdown, json.
includeSummarybooleanGenerate an LLM summary of the top hits. Adds 1–3s latency.
includeRawContentbooleanFetch full page content for every result. Adds 3 credits per page fetched.
conciseSnippetbooleanTruncate each snippet to ~3 sentences of exact-match text.

Scopes & response shape

The response is always a JSON envelope with credits,total, searchParameters, plus one array under the scope-specific key:

scope=response keyitem fields
webpagewebpages[]title, link, snippet, score, position, authors[], date
scholarscholars[]same as webpage
podcastpodcasts[]+ duration (seconds)
videovideos[]+ duration, coverImage
imageimages[]imageUrl, imageWidth, imageHeight (no link/snippet)
documentdocuments[]no date

Errors

On failure, the response body is { "errCode": <number>, "errMsg": <string> } with appropriate HTTP status. Failed requests do not consume credits.

Rate limits

Free tier: 10 RPS / 1,000 queries per month. Pro: 100 RPS, 1,000 queries free then $0.003 each. Burst protection via per-key token bucket. Pricing →

SDKs

  • · npm install siftq · TypeScript / Node
  • · pip install siftq · Python
  • · MCP server: siftq mcp for Claude Desktop and any MCP-compatible client