Per‑key quotas are enforced automatically:
429:{"error": {"type": "rate_limit", "message": "too_many_requests", "retry_after": 60}}
429:{"error": {"type": "rate_limit", "message": "too_many_concurrent", "retry_after": 1}}
POST /v1/research/ask with Idempotency-Key.POST /v1/research/stream responds as text/event-stream. The server emits newline‑delimited data: messages, each a compact JSON object:
{"type":"generation_id","data":"<job_id>"}
{"type":"status","data":{"type":"started" | "searching" | "sql_querying" | "vector_querying" | "processing" | "completed" | "error","message":"string","data":{...},"timestamp":"ISO-8601"}}
{"type":"token","data":"<text-fragment>"}
{"type":"final","data":{"response":"string","chat_id":"string|null","research":[...],"internal_data":{...},"internal_document":{...}}}
{"type":"error","data":{"message":"string"}}
The response also includes:
X-Quickpulse-Job-Id, X-Job-Id, X-Generation-Id headers for resume/polling with GET /v1/research/jobs/{job_id}.query string (required)chat_id string|nulluser_id string|nullsource enum (preferred over deprecated use_silver):
govt — prioritize official/government sourcesgovt_news — official + trusted mediawhole_web — broad webadvanced_config object (optional) to tune behavior:QuickPulse advanced_config reference:
{
"source_mode": "government_only | govt_plus_trusted_media | whole_web",
"geo_bias": "india | none",
"language": "en | hi | auto",
"search_depth": "basic | advanced",
"max_results_per_query": 1,
"included_domains": [],
"excluded_domains": [],
"recency_window": "latest_only | last_12m | last_3y | all_time",
"use_indian_data": true,
"min_confidence": "low | medium | high",
"max_items": 5,
"use_indian_documents": true,
"creativity": 0.7,
"max_output_tokens": 1500,
"tool_use": "auto | never",
"give_thinking_updates": true,
"include_inline_citations": true,
"include_references_section": true,
"format_style": "markdown_report | bullet_summary | concise",
"blocked_terms": []
}
Notes:
source_mode roughly maps to source intent.blocked_terms allows you to prevent processing certain queries.message string (required)chat_id string|nulluser_id string|nulltopic string (required)reason string (required)chat_id string|nulluser_id string|nullAll error responses follow:
{"error": {"type": "<string>", "message": "<string>"}}
Clients should check HTTP status and parse error.type for programmatic behavior.
Admin endpoints (not public; excluded from OpenAPI schema) require:
X-Admin-Secret: <server-configured-secret>Endpoints:
/admin/api-keys — list keys (includes quotas/config)/admin/api-keys — create a key (accepts advanced_config)/admin/api-keys/{key_id}/revoke — revoke key/admin/api-keys/{key_id}/rotate — rotate key (returns a new raw key)/admin/api-keys/by-user/{user_id} — list keys by user