Skip to main content
Coming Soon. Ask is not available yet, and these endpoints are not live. This page is the planned contract, published early so you can design against it. Fields can change before release. Ask is not part of the OpenAPI specification until then.
Ask takes a question in plain language and returns a direct answer. Every factual claim in the answer carries a numbered citation, and when the evidence does not support an answer, the response says so instead of guessing. Like a search, a question is answered in the background. POST /ask returns 202 with an id. Poll GET /ask/{ask_id} until status is completed or failed.
Asking a question spends credits for the research it needs, at provider cost plus the 5% platform fee. Set max_credits to cap it. Reading an answer is free. See Pricing.

Headers

string
A unique string for this request, 1 to 255 characters. Retrying with the same key and body returns the original response instead of asking again.

Body

string
required
The question, in plain language. Ask one thing at a time for the clearest answer.Maximum 1,000 characters.
object
Limits the question to one company or one person. Send exactly one of the two fields. Without about, the question is answered from across the data network, which suits market questions.
object
A JSON Schema describing the shape you want the answer in. When you send one, the response also carries data, an object that matches the schema. Useful when code or an AI agent will read the answer. A field the evidence cannot fill is null.
number
The most credits this question may spend. 1 credit = $1.00. When the limit is reached, research stops and the answer is written from what was found.

Response

202 The question was accepted. The same object is returned by GET /ask/{ask_id}.
string
required
Always answer.
string
required
The answer’s identifier. Use it to read the answer.
string
required
queued and running are in progress. completed and failed are final.
string
required
The question as you sent it.
object | null
required
The company or person the question was limited to, or null.
string | null
required
How well the question could be answered. null until status is completed.
  • answered: the evidence supports a full answer.
  • partially_answered: part of the question could be answered. answer says which part could not.
  • insufficient_evidence: no reliable answer was found. answer explains what was missing.
string | null
required
The answer, in Markdown. Citations appear as numbered markers such as [1], each matching an entry in citations. null until status is completed.
object | null
required
The answer in the shape of your output_schema. null when you did not send one.
object[]
required
The sources the answer relies on, in the order they are first cited.
number
required
Credits charged for this question so far. Final once status is completed or failed.
string | null
required
A message when status is failed.
string
required
When the question was asked.
string | null
required
When the answer was finished.
string
required
The URL to read this answer from.

Get an answer

GET /ask/{ask_id} returns the same answer object. Poll it every 2 seconds, slowing to every 10, until status is completed or failed. Reading an answer is free.
string
required
The answer’s id, returned when the question was asked.
cURL
200 (completed)
When the evidence is not there, the answer says so:
200 (insufficient evidence, shortened)

Errors

Every error uses the same shape. See Errors.
The company, answer and credit figures in these examples are illustrative.