Do you use the Perplexity Sonar API?
No, the live v1 path is browser capture of the real Perplexity UI, the same page a user sees. A Sonar-based path is on the roadmap and, if it ships, will never be a silent substitute for the real UI.
surfaces: ["perplexity"]Perplexity is the most citation-dense AI surface there is, which makes the difference between its consumer UI and its Sonar API matter. We capture the real Perplexity answer page browser-first: the answer with its numbered citations inline, exactly as the page rendered them, normalized into one Envelope.
curl -sS -X POST "https://api.aisearchapi.dev/v1/search" \
-H "Authorization: Bearer $AISEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "tallest mountain in Japan",
"surfaces": ["perplexity"],
"regions": [{ "country": "US" }]
}'
# → 202 { "jobId": "…", "children": ["….perplexity.…"] }
# then poll GET /v1/jobs/:childId, or add ?mode=sync for an inline EnvelopeOne canonical Envelope, the same four sections every surface returns, with the fields Perplexity actually populates. Field names below are the contract, not a summary.
answer.text · answer.markdown · answer.blocksThe rendered Perplexity answer, plain text, normalized markdown, and typed blocks (paragraph, heading, list, code, quote).
answer.markdown (inline citations)Perplexity’s numbered citations come through inline in the answer markdown, exactly as the page footnoted them, ready for your own citation extraction.
provenanceloginState, observed model label, surfacePresent, triggerState and requested-vs-effective region, every capture self-describes.
provenance.regionRequested-vs-effective country, so per-market citation comparisons are verifiable.
evidence.sourcesThe citations parsed into a structured array (url, title, role, cited, quote), so you get the cited domains without scraping them out of the markdown yourself. evidence.fanOut carries the search queries Perplexity ran; brand mentions are opportunistic and forthcoming.
{
"job": {
"id": "job_9f8e7d6c.perplexity.US",
"surface": "perplexity",
"status": "completed",
"warnings": []
},
"provenance": {
"loginState": "logged_out",
"model": { "observedLabel": "Perplexity", "inferred": false,
"confidence": 0.99 },
"webSearch": { "enabled": true, "known": true },
"surfacePresent": true,
"region": { "requested": "US", "effective": "US" }
},
"answer": {
"text": "Mount Fuji is the tallest mountain in Japan at 3,776 m.",
"markdown": "**Mount Fuji** is the tallest mountain in Japan at 3,776 m [1](https://en.wikipedia.org/wiki/Mount_Fuji).",
"blocks": [ { "type": "paragraph", "text": "…" } ]
},
"evidence": {
"sources": [
{ "url": "https://en.wikipedia.org/wiki/Mount_Fuji", "title": "Mount Fuji",
"role": "citation", "cited": true, "quote": "3,776 m" }
],
"fanOut": [ "tallest mountain in Japan" ],
"mentions": null,
"shopping": null,
"ads": null
}
}Default browser capture of the real Perplexity answer UI, the live v1 path.
Phase-2 surfaces are roadmap, not product. Requesting one returns an honest 422 today. The full picture is on the coverage page.
No, the live v1 path is browser capture of the real Perplexity UI, the same page a user sees. A Sonar-based path is on the roadmap and, if it ships, will never be a silent substitute for the real UI.
Two ways, both in the Envelope. answer.markdown preserves Perplexity’s numbered footnotes exactly as the page rendered them, so each citation sits right next to the claim it backs, and evidence.sources hands you the same citations as a structured array (url, title, role, cited, quote), so you can diff the cited domains without parsing the markdown yourself.
Three credits per successful capture, the lowest-cost surface, with every field included and charged-on-success. 500 free credits to start.
Yes, pass multiple regions ({ country, city?, language? }) — any ISO-3166-1 country, up to 10 per request — and each fans out into its own child Envelope, so you can diff how Perplexity answers and cites per market.
Absence-is-data: the job still completes, provenance.surfacePresent is false, warnings carries surface_absent, and the absent result is recorded rather than dropped. It costs no credits.
500 free credits, charged only on success, and the same Envelope for every other surface when you add them.