QuickPulse provides research and conversation endpoints with optional streaming, job resumption, and per-key quotas. All public endpoints are exposed under the /v1 prefix.
https://api.rsi-data.com/v1/ping — health check/v1/research/ask — non‑streaming research answer/v1/research/stream — streaming tokens and status via SSE/v1/research/jobs/{job_id} — check a running or completed streaming job/v1/conversation — general conversation agent/v1/clarify — topic/timeline clarification prompt/v1/ping) using:
Authorization: Bearer <api_key>Authorization: Bearer <api_key> (required for all except /v1/ping)Content-Type: application/jsonIdempotency-Key: <opaque-string> (dedupes identical POSTs for /v1/research/ask)Accept: text/event-streamquery stringchat_id string|nulluser_id string|nullsource enum: govt | govt_news | whole_web (preferred)
use_silver (deprecated int) backwards compatadvanced_config object (see full reference in Auth & Usage)message stringchat_id string|nulluser_id string|nulltopic stringreason stringchat_id string|nulluser_id string|nullresponse stringchat_id string|nullweb_searched_data array of objectsindian_data objectindian_documents objectresponse, chat_id, research, internal_data, internal_documentresponse stringchat_id string|nullshould_generate_report boolreport_topic string|nullneed_clarification boolclarification_text stringquota.requests_per_min (default often 60)quota.concurrent (default often 5)429 with standardized error body (see Auth & Usage)All errors normalize to:
{"error": {"type": "<string>", "message": "<string>"}}
Common type values include auth, quota, rate_limit, bad_request, server_error.
/v1/research/stream streams JSON messages (one per line) where each SSE data: line is a JSON object with:
type: "generation_id" | "status" | "token" | "final" | "error"data: event-specific payloadX-Quickpulse-Job-Id, X-Job-Id, X-Generation-Id