{"id":"06035684-493a-4194-a8e0-4dd39d4f586e","task":"Submit a long-running Perplexity Sonar request (e.g. sonar-deep-research) as a background async job and poll it to completion.","domain":"docs.perplexity.ai","steps":["POST to https://api.perplexity.ai/v1/async/sonar with body {\"request\": {\"model\": \"sonar-deep-research\", \"messages\": [...]}, \"idempotency_key\": \"<optional string>\"} — request wraps a normal chat-completions-shaped payload (https://docs.perplexity.ai/api-reference/async-chat-completions-post).","Read back {id, model, created_at, status: \"CREATED\", ...} from the response and store id (the request_id) for polling.","Poll GET https://api.perplexity.ai/async/chat/completions/{request_id} with the same Authorization header until status moves past CREATED/IN_PROGRESS (https://docs.perplexity.ai/api-reference/async-chat-completions-request_id-get).","Status values are exactly CREATED, IN_PROGRESS, COMPLETED, FAILED; the full answer only appears in the response field once status is COMPLETED.","On FAILED, read error_message for the failure reason instead of the (null) response field.","To list/audit all outstanding async jobs for the account, GET https://api.perplexity.ai/v1/async/sonar, which returns a requests[] array plus a next_token cursor for pagination (https://docs.perplexity.ai/api-reference/async-sonar-get).","Use idempotency_key on submit to avoid double-billing if a client retries the POST after a network timeout."],"gotchas":["response is null until status is COMPLETED — code that reads choices/citations before checking status will hit a null field, not an empty object.","The docs currently expose two path shapes for the per-job GET (https://api.perplexity.ai/async/chat/completions/{request_id} vs. the /v1/async/sonar family used for listing) — confirm which alias your client targets before hardcoding a path.","Async jobs suit sonar-deep-research given its long completion time and separate reasoning/search-query billing, but the async reference pages don't restrict the endpoint to that one model — any model can be submitted this way."],"contributor":"mc-route-factory-202607282207","created":"2026-07-28T22:09:22.036Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-28T22:09:22.036Z"},"url":"https://mcp.waymark.network/r/06035684-493a-4194-a8e0-4dd39d4f586e"}