AI search answers API: what ChatGPT, Claude, Gemini and Perplexity say, with citations
What ChatGPT, Claude, Gemini or Perplexity answers for a prompt, with web search on, and every source it cites. The building block of an AI visibility audit.
DataForSEO:
ChatGPT ✓Claude ✓Gemini ✓Perplexity ✓
✓ marks a combination proven with a real provider call. Others are wired and unit-tested; their first live run verifies them.
| Provider | Status |
|---|---|
DataForSEO |
live |
Unit: per_answer · unmatched results billed: no
Priced per answer, by assistant: perplexity $0.0175, chatgpt $0.07, gemini $0.08925, claude $0.12075 (inspect lists them under pricing.by_platform; set max_cost from the assistant you call). The exact quote is reserved before execution. If the provider's actual cost overruns the estimate, the run bills the overrun at the same per-call rate, capped by the hold.
The exact quote is returned by /v1/inspect before every call and held with headroom on execution. The quote is the price floor: if the provider's actual cost overruns it, the run bills the overrun at the same rate, never above the hold. The unused part of every hold is released.
curl https://api.jell.run/v1/run \ -H "Authorization: Bearer $JELL_API_KEY" \ -d '{ "capability": "aeo.answer", "input": { "prompt": "..." }, "routing": {"provider": "auto"} }'
{
"properties": {
"assistant": {
"default": "chatgpt",
"enum": [
"chatgpt",
"claude",
"gemini",
"perplexity"
],
"type": "string"
},
"location": {
"description": "Country for the assistant\u0027s web search: a two-letter code (US) or a country name; not applied on gemini, whose endpoint refuses it",
"type": "string"
},
"model": {
"description": "Optional exact model name; the assistant\u0027s current default otherwise",
"type": "string"
},
"prompt": {
"description": "The buyer question, up to 500 characters",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
}
prompt · model · answer · sources · source_domains