Ask Perplexity
TL;DR
About
Say you run marketing for a bike light brand and Perplexity keeps recommending someone else's. Ask "best rear light for commuting in the rain" and the answer is the least useful part of what comes back. Sources is everything the search pulled, while citations is the shorter list that got a chip in the text, with trustedDomain set on the ones Perplexity marks as trusted. Run the question five times and tally the domains in both lists, because answers shift between runs. If your product page sits in sources but never earns a chip, open threadUrl before you blame the page: a chip like "bikeradar +2" credits two more pages that only appear in sources. If you are in neither list, note which review sites keep getting chips. Each run starts a new thread, so it stays in your Perplexity history.
Input
question requiredThe question to ask, sent as the first message of a new thread.
Output
answer requiredThe answer as rendered, with its paragraphs, lists and tables flattened to text in reading order. Inline citation chips read as the publisher name Perplexity shows, e.g. 'coursera +2'.
sources requiredEvery page the search returned, cited or not - the candidate pool, in the order the Links view lists it. `sources` minus `citations` is what Perplexity retrieved and then passed over; a URL in neither was never retrieved. Empty when the answer searched nothing.
question requiredcitations requiredThe sources cited inline by the answer, in the order they appear, deduplicated by URL. A subset of `sources` whenever the answer searched.
threadUrl requiredURL of the thread the answer was written into, so the run can be audited afterwards.
answerChars requiredresearchSteps requiredPerplexity's own description of each step of its research plan, in order, e.g. 'Searching for fermentation differences'. These are written for the reader in the interface language, not the raw queries the search issued - Perplexity does not expose those. Empty when the answer was written without a research plan.
Example output
Shape only: placeholder values generated from the output schema, not a real run.
{
"answer": "…",
"sources": [
{
"url": "https://example.com/item/123",
"title": "Example",
"snippet": "…",
"publisher": "…"
}
],
"question": "…",
"citations": [
{
"url": "https://example.com/item/123",
"label": "Example",
"trustedDomain": true
}
],
"threadUrl": "https://example.com/item/123",
"answerChars": 3,
"researchSteps": [
"…"
]
}