# Sonar Async Chat Completion

> Sonar Async Chat Completion is a paid API for AI agents from pplx.x402.paysponge.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Submits an asynchronous chat completion request to Perplexity's Sonar models, returning a job ID for polling the result.

## Facts

- Endpoint: POST https://pplx.x402.paysponge.com/v1/async/sonar
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/sonar-async-chat-completion-a97ccabe
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_yWOQMYifwJprXnT0eGRIZ

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability sonar-async-chat-completion-a97ccabe -d '<json body>'
```

Example prompt: Use Sonar deep research to answer this asynchronously: 'What are the latest breakthroughs in room-temperature superconductors as of 2025?' — use the sonar-deep-research model, search the web, and give me up to 4000 tokens in your response.

## When to prefer this

Use this endpoint when you need Perplexity Sonar completions but cannot block on a synchronous response — ideal for deep research queries, sonar-reasoning-pro tasks, or long-form generation that may take significant time. Prefer over the synchronous endpoint when integrating into workflows that benefit from polling or webhooks. Choose this over the generic Agent or Search sibling endpoints when you need full chat-style message history and model selection control.

## Known failure modes

- Invalid or missing model enum value returns a validation error
- Messages array missing required role or content fields causes a 422
- Exceeding max_tokens limit of 128000 returns a validation error
- Payment failure or insufficient USDC balance blocks the request
- Polling a non-existent job ID returns a not-found error
- Job enters FAILED status if the underlying model or search query fails
- Timeout or service unavailability may leave job stuck in IN_PROGRESS

## How this service works

Create Async Chat Completion

## Output

Returns a job object with a unique async request ID, the model used, creation timestamp, and a status field (CREATED, IN_PROGRESS, COMPLETED, or FAILED). When completed, includes the full chat completion response with generated text, citations, and token usage/cost breakdown.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "title": "AsyncApiChatCompletionsRequest",
 "required": [
  "request"
 ],
 "properties": {
  "request": {
   "type": "object",
   "title": "ApiChatCompletionsRequest",
   "required": [
    "model",
    "messages"
   ],
   "properties": {
    "stop": {
     "anyOf": [
      {
       "type": "string"
      },
      {
       "type": "array",
       "items": {
        "type": "string"
       }
      },
      {
       "type": "null"
      }
     ],
     "title": "Stop",
     "description": "Stop sequences. Generation stops when one of these strings is produced"
    },
    "model": {
     "enum": [
      "sonar",
      "sonar-pro",
      "sonar-deep-research",
      "sonar-reasoning-pro"
     ],
     "type": "string",
     "title": "Model",
     "description": "Model to use, for example, sonar-pro"
    },
    "top_p": {
     "anyOf": [
      {
       "type": "number",
       "maximum": 1,
       "minimum": 0
      },
      {
       "type": "null"
      }
     ],
     "title": "Top P",
     "description": "Nucleus sampling parameter. Controls diversity via nucleus sampling"
    },
    "stream": {
     "anyOf": [
      {
       "type": "boolean"
      },
      {
       "type": "null"
      }
     ],
     "title": "Stream",
     "default": false,
     "description": "If true, returns streaming SSE response"
    },
    "messages": {
     "type": "array",
     "items": {
      "type": "object",
      "title": "ChatMessage",
      "required": [
       "role",
       "content"
      ],
      "properties": {
       "role": {
        "enum": [
         "system",
         "user",
         "assistant",
         "tool"
        ],
        "type": "string",
        "title": "ChatMessageRole",
        "description": "Chat roles enum"
       },
       "content": {
        "anyOf": [
         {
          "type": "string"
         },
         {
          "type": "array",
          "items": {
           "anyOf": [
            {
             "$ref": "#/components/schemas/ChatMessageContentTextChunk"
            },
            {
             "$ref": "#/components/schemas/ChatMessageContentImageChunk"
            },
            {
             "$ref": "#/components/schemas/ChatMessageContentFileChunk"
            },
            {
             "$ref": "#/components/schemas/ChatMessageContentPDFChunk"
            },
            {
             "$ref": "#/components/schemas/ChatMessageContentVideoChunk"
            }
           ]
          },
          "title": "Stru
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "title": "AsyncApiChatCompletionsResponse",
 "required": [
  "id",
  "model",
  "created_at",
  "status"
 ],
 "properties": {
  "id": {
   "type": "string",
   "title": "Id",
   "description": "Unique identifier for the async request"
  },
  "model": {
   "type": "string",
   "title": "Model",
   "description": "Model used for the request"
  },
  "status": {
   "enum": [
    "CREATED",
    "IN_PROGRESS",
    "COMPLETED",
    "FAILED"
   ],
   "type": "string",
   "title": "AsyncProcessingStatus",
   "description": "Status enum for async processing."
  },
  "response": {
   "anyOf": [
    {
     "type": "object",
     "title": "CompletionResponse",
     "required": [
      "id",
      "model",
      "created",
      "choices"
     ],
     "properties": {
      "id": {
       "type": "string",
       "title": "Id",
       "description": "Unique identifier for the completion"
      },
      "model": {
       "type": "string",
       "title": "Model",
       "description": "Model used for generation"
      },
      "usage": {
       "anyOf": [
        {
         "type": "object",
         "title": "UsageInfo",
         "required": [
          "prompt_tokens",
          "completion_tokens",
          "total_tokens",
          "cost"
         ],
         "properties": {
          "cost": {
           "$ref": "#/components/schemas/Cost",
           "description": "Cost breakdown for the request"
          },
          "total_tokens": {
           "type": "integer",
           "title": "Total Tokens",
           "description": "Total tokens used (prompt + completion)"
          },
          "prompt_tokens": {
           "type": "integer",
           "title": "Prompt Tokens",
           "description": "Number of tokens in the prompt/input"
          },
          "citation_tokens": {
           "anyOf": [
            {
             "type": "integer"
            },
            {
             "type": "null"
            }
           ],
           "title": "Citation Tokens",
           "description": "Number of tokens used for citations"
          },
          "reasoning_tokens": {
           "anyOf": [
            {
             "type": "integer"
            },
            {
             "type": "null"
            }
           ],
           "title": "Reasoning Tokens",
           "description": "Number of tokens used for reasoning"
          },
          "completion_tokens": {
           "type": "integer",
           "title": "Completion Tokens",

… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/sonar-async-chat-completion-a97ccabe/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from pplx.x402.paysponge.com](https://www.zero.xyz/host/pplx.x402.paysponge.com/llms.txt)
