Perplexity is the most citation-heavy surface. Every answer comes back with a dense evidence.sources[] array, entity evidence.mentions, and often inline media. Captures are pulled from the live Perplexity app in a real browser, then normalized into the same canonical Envelope every surface returns — so the parser you write here works everywhere.

Enum

perplexity

Credits per capture

3 credits — charged only on success.

What Perplexity commonly returns

Perplexity leans hard on citations. Expect a long, well-attributed source list, plus entities and media.

evidence.sources[]

Heavy citations — the primary strength of this surface.

evidence.mentions

Entity strings referenced in the answer.

media

Images and other media pulled alongside the answer.

answer

answer.markdown is always populated; answer.blocks[] link to sources.
Every surface normalizes to the same Envelope. Perplexity just tends to populate evidence.sources[] more densely than most. See Output formats for the full field-by-field breakdown.

Request

The simplest way to capture one Perplexity result is the sync-by-default alias POST /v1/search/perplexity, which accepts prompt (an alias of query) and a flat country.
curl https://api.aisearchapi.dev/v1/search/perplexity \
  -H "Authorization: Bearer $AISEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "What are the best noise-canceling headphones in 2026?",
    "country": "US"
  }'

Body fields

query
string
required
Your prompt (1–10000 characters). On the /v1/search/perplexity alias you may send it as prompt instead.
surfaces
string[]
required
Must include "perplexity". On the alias endpoint the surface is fixed by the path, so you omit it.
regions
object[]
default:"[{ country: 'US' }]"
One capture per surface × region. Each entry is { country, city?, language? }; country is an ISO-3166 alpha-2 code. On the alias endpoint use the flat country field instead.
priority
number
default:"5"
Scheduling priority, 1–10.

Response (trimmed Envelope)

A Perplexity capture returns the canonical Envelope. Below it is trimmed to show the shape — note the long evidence.sources[] array and the entity evidence.mentions.
{
  "job": {
    "id": "job_8t2q.perplexity.us",
    "surface": "perplexity",
    "region": "us",
    "status": "completed"
  },
  "provenance": {
    "model": {
      "providerId": "perplexity",
      "observedLabel": "Perplexity",
      "inferred": false,
      "confidence": 0.98
    },
    "surfacePresent": true,
    "region": { "requested": "US", "effective": "US" }
  },
  "answer": {
    "markdown": "For 2026, the standout noise-canceling headphones are the **Sony WH-1000XM6** and the **Bose QuietComfort Ultra**...",
    "blocks": [
      {
        "text": "The Sony WH-1000XM6 leads on active noise cancellation.",
        "referenceIds": ["s1", "s2"]
      }
    ]
  },
  "evidence": {
    "sources": [
      {
        "id": "s1",
        "url": "https://example.com/headphones-2026-review",
        "title": "Best Noise-Canceling Headphones (2026)",
        "role": "citation",
        "cited": true,
        "charRanges": [[0, 58]],
        "quote": "The Sony WH-1000XM6 sets a new bar for ANC."
      },
      {
        "id": "s2",
        "url": "https://example.com/bose-qc-ultra",
        "title": "Bose QuietComfort Ultra Review",
        "role": "citation",
        "cited": true,
        "charRanges": [[59, 120]],
        "quote": "Bose's QuietComfort Ultra remains a top pick."
      }
    ],
    "mentions": ["Sony WH-1000XM6", "Bose QuietComfort Ultra"],
    "fanOut": {
      "queries": ["best ANC headphones 2026", "Sony WH-1000XM6 vs Bose QC Ultra"]
    }
  }
}
answer.markdown
string
Always populated. Use this as your rendering source of truth. answer.text carries the plain-text variant, and answer.blocks[] carry referenceIds that point into evidence.sources.
evidence.sources[]
object[]
The citation list — richest on this surface. Each source has { id, url, title, role, cited, charRanges, quote }. charRanges map the source back to spans of the answer text; cited flags whether it was actually referenced.
evidence.mentions
string[]
Entity strings referenced in the answer (products, brands, people).
provenance.surfacePresent
boolean
When false (paired with a surface_absent warning), Perplexity returned nothing for this prompt. The job still completes with an empty answer — you are not charged.
To resolve answer.blocks[].referenceIds back to full citations, index evidence.sources by id once, then look each reference up. Because Perplexity is citation-dense, this mapping is where most of the value lives. The Output formats guide walks through the exact block-to-source join.

Alias endpoint

POST /v1/search/perplexity is a convenience wrapper that runs a single Perplexity capture synchronously and returns the Envelope inline with a 200.
1

Send prompt + country

Post { "prompt": "...", "country": "US" } to /v1/search/perplexity. prompt aliases query; country is the flat form of a region.
2

Read the Envelope inline

A 200 returns the child Envelope directly — no polling. The equivalent on the canonical endpoint is POST /v1/search?mode=sync with surfaces: ["perplexity"].
3

Parse once, reuse everywhere

Because every surface normalizes to this Envelope, the same parsing code handles ChatGPT, Claude, Gemini, and the rest.
Need many surfaces or regions at once? Drop the sync alias and use the async POST /v1/search, which returns a parent jobId plus one child per surface × region. See Asynchronous captures.

Output formats

The full Envelope: answer, blocks, sources, mentions, media.

Search API

The canonical POST /v1/search endpoint and every body field.

Regions

Capture Perplexity from multiple countries and languages.

Synchronous captures

How mode=sync and the per-surface alias return results inline.