Skip to main content
The simplest way to use the Responses API is to call it directly: your application asks a question, the API researches the live web and returns a synthesized, cited answer. This page covers the common direct-call patterns.

Ask a question

Use low effort for simple fact retrieval — it returns in a few seconds:

Ask a deep-research question

The high tier runs extensive multi-step searching and synthesis and returns in roughly 30–60 seconds. Give your client timeout headroom, and consider streaming for a connection acknowledgment while research runs:
The Responses API is synchronous and designed for research that fits an interactive latency budget. For long-running deep research (minutes, not seconds) with per-field evidence and webhooks, use the Task API Deep Research flow.

Enrich a dataset

Each row becomes one request: pass the entity as the question, use Structured Outputs to shape the answer, and run rows concurrently — wall-clock time stays close to a single request instead of the sum.
Tips for enrichment at scale:
  • Put the complete question in input, including qualifiers (“current”, units, date ranges) — each request is self-contained.
  • Use metadata to tag each request with your row id; it is echoed back on the response.
  • Back off and retry on 429 responses.
  • For large batches with per-field citations and confidence ratings, consider the Task API Enrichment flow, which is purpose-built for that workload.

Ask follow-up questions

Chain turns with Statefulness: pass the previous response’s id and follow-ups inherit the conversation context. Tiers can vary across turns — open with a high-effort research question and ask cheap low-effort follow-ups.
Python

Next steps