Skip to content

How Perplexity Sonar API’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score33/100

Agent-ready 55.7 × 0.30 = 16.71

API quality 36.0 × 0.20 = 7.20

Openness 10.3 × 0.20 = 2.06

Built-in AI 34.2 × 0.15 = 5.13

Automation 10.8 × 0.15 = 1.62

(16.71 + 7.20 + 2.06 + 5.13 + 1.62) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 32.72 ÷ 1.00 = 32.7

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready55.7/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://docs.perplexity.ai/llms.txtPROBE llms.txt: HTTP 200 at https://docs.perplexity.ai/llms.txt # Perplexity > Perplexity API documentation for building with the Agent API, the default for web-grounded AI and multi-
  • [probe] https://docs.perplexity.ai/docs/getting-started/overview.mdPROBE docs-md: HTTP 200 at https://docs.perplexity.ai/docs/getting-started/overview.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.perplexity.ai/llms.txt > Use this fil
  • [probe] https://docs.perplexity.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key
  • [claimed-docs] https://docs.perplexity.ai/docs/cli/overview.mdInstall and use Perplexity's pplx command-line interface for web search and query-relevant page snippets from your terminal or coding agent.

Run the product headlessly / in CI for automationweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartYou can now run Perplexity Search straight from your terminal. The Perplexity CLI returns the same ranked results as JSON, ready for shell pipelines and agent tool calls, with no code to write.
  • [claimed-docs] https://docs.perplexity.ai/docs/cli/overview.mdInstall and use Perplexity's pplx command-line interface for web search and query-relevant page snippets from your terminal or coding agent.
  • [github] https://github.com/perplexityai/perplexity-pyWe provide support for streaming responses using Server Side Events (SSE).
  • [github] https://github.com/perplexityai/perplexity-pyCertain errors are automatically retried 2 times by default, with a short exponential backoff.
  • [github] https://github.com/perplexityai/perplexity-pyBy default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
  • [github] https://github.com/perplexityai/perplexity-pyThe library includes type definitions for all request params and response fields, and offers both synchronous and asynchronous clients powered by httpx
  • [probe] https://docs.perplexity.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key

Plug MCP servers into this product so it can use their toolsweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverThe Perplexity MCP Server enables AI assistants to access Perplexity's powerful search and reasoning capabilities directly within their workflows.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverRemote MCP server (recommended): hosted by Perplexity at `https://api.perplexity.ai/mcp`. No installation, nothing to update, works with any client that supports remote MCP servers.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverLocal MCP server: run the open-source server on your machine over stdio. Use this if your client only supports stdio servers or you need to pin a version.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverUse Perplexity's tools in a Messages API request with the MCP connector:
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/give-it-tools.mdBuilt-in tools | Perplexity-hosted capabilities: web search, URL fetch, people and finance search, and a code sandbox. Enable each by `type`, and Perplexity runs it and returns the results inline.

Connect an agent via an official MCP serverweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverThe Perplexity MCP Server enables AI assistants to access Perplexity's powerful search and reasoning capabilities directly within their workflows.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverRemote MCP server (recommended): hosted by Perplexity at `https://api.perplexity.ai/mcp`. No installation, nothing to update, works with any client that supports remote MCP servers.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverLocal MCP server: run the open-source server on your machine over stdio. Use this if your client only supports stdio servers or you need to pin a version.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverTo restrict which tools the model can call, disable tools by default and enable the ones you want
  • [probe] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverofficial MCP server documented at https://docs.perplexity.ai/docs/getting-started/integrations/mcp-server

Use an official CLIweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartYou can now run Perplexity Search straight from your terminal. The Perplexity CLI returns the same ranked results as JSON, ready for shell pipelines and agent tool calls, with no code to write.
  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartYou can now run Perplexity Search straight from your terminal. The [Perplexity CLI](/docs/cli/overview) returns the same ranked results as JSON, ready for shell pipelines and agent tool calls, with no code to write.
  • [claimed-docs] https://docs.perplexity.ai/docs/cli/overview.mdInstall and use Perplexity's pplx command-line interface for web search and query-relevant page snippets from your terminal or coding agent.

Drive the product through a documented public APIweight 3

3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max

  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/overviewGet web-grounded answers with built-in citations in one call, or access third-party models from OpenAI, Anthropic, Google, and xAI with web search tools and presets.
  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartInstall one of our official SDKs for a convenient, type-safe integration
  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartYou can now run Perplexity Search straight from your terminal. The Perplexity CLI returns the same ranked results as JSON, ready for shell pipelines and agent tool calls, with no code to write.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/quickstart.mdGenerate an API key and make your first call in < 3 minutes.
  • [probe] https://docs.perplexity.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key
  • [github] https://github.com/perplexityai/perplexity-pyThe library includes type definitions for all request params and response fields, and offers both synchronous and asynchronous clients powered by httpx
  • [claimed-docs] https://docs.perplexity.ai/api-reference/sonar-post"citations": [ "<string>" ], "search_results": [

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Build against official SDKsweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartInstall one of our official SDKs for a convenient, type-safe integration
  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartInstall one of our [official SDKs](/docs/sdk/overview) for a convenient, type-safe integration
  • [github] https://github.com/perplexityai/perplexity-pyWe provide support for streaming responses using Server Side Events (SSE).
  • [github] https://github.com/perplexityai/perplexity-pyCertain errors are automatically retried 2 times by default, with a short exponential backoff.
  • [github] https://github.com/perplexityai/perplexity-pyWhen the API returns a non-success status code (that is, 4xx or 5xx response), a subclass of `perplexity.APIStatusError` is raised, containing `status_code` and `response` properties.
  • [github] https://github.com/perplexityai/perplexity-pyBy default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
  • [github] https://github.com/perplexityai/perplexity-pyThe library includes type definitions for all request params and response fields, and offers both synchronous and asynchronous clients powered by httpx
  • [github] https://github.com/perplexityai/perplexity-pysearch = client.search.create(query="latest AI developments 2024", max_results=5)

Subscribe to events via webhooksweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Agent-ready = 117.0 ÷ 210 × 100 = 55.7

API quality36.0/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartYou can also [try Perplexity Search in the interactive Playground](https://console.perplexity.ai/project/playground/search) with no API key required.
  • [claimed-docs] https://docs.perplexity.ai/api-reference/sonar-post"citations": [ "<string>" ], "search_results": [
  • [probe] https://docs.perplexity.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key
  • [probe] https://docs.perplexity.ai/docs/getting-started/overview.mdPROBE docs-md: HTTP 200 at https://docs.perplexity.ai/docs/getting-started/overview.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.perplexity.ai/llms.txt > Use this fil

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://docs.perplexity.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key
  • [probe] https://docs.perplexity.ai/llms.txtPROBE llms.txt: HTTP 200 at https://docs.perplexity.ai/llms.txt # Perplexity > Perplexity API documentation for building with the Agent API, the default for web-grounded AI and multi-
  • [probe] https://docs.perplexity.ai/docs/getting-started/overview.mdPROBE docs-md: HTTP 200 at https://docs.perplexity.ai/docs/getting-started/overview.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.perplexity.ai/llms.txt > Use this fil

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

API quality = 25.2 ÷ 70 × 100 = 36.0

Openness10.3/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartYou can now run Perplexity Search straight from your terminal. The Perplexity CLI returns the same ranked results as JSON, ready for shell pipelines and agent tool calls, with no code to write.
  • [claimed-docs] https://docs.perplexity.ai/docs/cli/overview.mdInstall and use Perplexity's pplx command-line interface for web search and query-relevant page snippets from your terminal or coding agent.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/give-it-tools.mdBuilt-in tools | Perplexity-hosted capabilities: web search, URL fetch, people and finance search, and a code sandbox. Enable each by `type`, and Perplexity runs it and returns the results inline.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/run-code.mdThe `sandbox` tool gives the agent an isolated Linux container to run real code and use the output in its answer — for results that must be exact, like a computed number, a transformed dataset, or a generated report.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverRemote MCP server (recommended): hosted by Perplexity at `https://api.perplexity.ai/mcp`. No installation, nothing to update, works with any client that supports remote MCP servers.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverLocal MCP server: run the open-source server on your machine over stdio. Use this if your client only supports stdio servers or you need to pin a version.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/profiles.mdA profile is a reusable, versioned configuration that you save and manage. ... Select a profile by ID instead of repeating the full configuration in every request.
  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartYou can also [try Perplexity Search in the interactive Playground](https://console.perplexity.ai/project/playground/search) with no API key required.

Export all of my data in open formats and leaveweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Read the product's source under an open licenseweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Self-host the core productweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverRemote MCP server (recommended): hosted by Perplexity at `https://api.perplexity.ai/mcp`. No installation, nothing to update, works with any client that supports remote MCP servers.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverLocal MCP server: run the open-source server on your machine over stdio. Use this if your client only supports stdio servers or you need to pin a version.
  • [community] https://news.ycombinator.com/item?id=42809008They've had their sonar models on API since forever. Even the pricing looks same as always. If anything they've regressed - selection of models on their api used to be wider. Is this just a relaunch of an existing feature?

Openness = 7.2 ÷ 70 × 100 = 10.3

Built-in AI34.2/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/overviewGenerate high-quality embeddings for semantic search and RAG pipelines.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/give-it-tools.mdBuilt-in tools | Perplexity-hosted capabilities: web search, URL fetch, people and finance search, and a code sandbox. Enable each by `type`, and Perplexity runs it and returns the results inline.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/run-code.mdThe `sandbox` tool gives the agent an isolated Linux container to run real code and use the output in its answer — for results that must be exact, like a computed number, a transformed dataset, or a generated report.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/shape-output.mdStructured output makes the model return JSON that conforms to a schema you define, so you can deserialize it directly.
  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartUse the Search API when you need raw results for your own processing. For an LLM-generated answer with citations, use the Agent API.

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Delegate tasks to a built-in AI assistant inside the productweight 3

3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max

  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/define-the-run.mdA `preset` gives you a working agent in one field.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/prompt-the-agent.md`instructions` is the agent's **system prompt** — the rules that hold on every turn. `input` is the specific thing to do this turn.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/give-it-tools.mdBuilt-in tools | Perplexity-hosted capabilities: web search, URL fetch, people and finance search, and a code sandbox. Enable each by `type`, and Perplexity runs it and returns the results inline.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/run-code.mdThe `sandbox` tool gives the agent an isolated Linux container to run real code and use the output in its answer — for results that must be exact, like a computed number, a transformed dataset, or a generated report.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/keep-context.mdFor most multi-turn conversations, use `previous_response_id` to continue from a completed prior response without resending the conversation yourself.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/model-fallback.mdModel fallback enables specifying multiple models in a `models` array. The API tries each model in order until one succeeds, providing automatic failover when a model is unavailable.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/profiles.mdA profile is a reusable, versioned configuration that you save and manage. ... Select a profile by ID instead of repeating the full configuration in every request.

Operate the product with natural-language commandsweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/define-the-run.mdA `preset` gives you a working agent in one field.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/prompt-the-agent.md`instructions` is the agent's **system prompt** — the rules that hold on every turn. `input` is the specific thing to do this turn.
  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/give-it-tools.mdBuilt-in tools | Perplexity-hosted capabilities: web search, URL fetch, people and finance search, and a code sandbox. Enable each by `type`, and Perplexity runs it and returns the results inline.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverRemote MCP server (recommended): hosted by Perplexity at `https://api.perplexity.ai/mcp`. No installation, nothing to update, works with any client that supports remote MCP servers.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/integrations/mcp-serverLocal MCP server: run the open-source server on your machine over stdio. Use this if your client only supports stdio servers or you need to pin a version.
  • [claimed-docs] https://docs.perplexity.ai/docs/cli/overview.mdInstall and use Perplexity's pplx command-line interface for web search and query-relevant page snippets from your terminal or coding agent.

Built-in AI = 30.8 ÷ 90 × 100 = 34.2

Automation10.8/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max

  • [claimed-docs] https://docs.perplexity.ai/docs/search/quickstartAccess real-time web search results with Perplexity's Search API. Get ranked results, domain filtering, multi-query search, and content extraction for developers.
  • [claimed-docs] https://docs.perplexity.ai/docs/getting-started/pricingSearch context determines how much web information is retrieved. Higher context = more comprehensive results.
  • [claimed-docs] https://docs.perplexity.ai/docs/admin/rate-limits-usage-tiersAs you spend more on API credits over time, you automatically advance to higher tiers with increased rate limits.

Define rules that trigger actions automatically on eventsweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Schedule recurring jobs or workflowsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Version, review, and roll back my automationsweight 1

1 (weight) × 3 (quality) × 0.6 (partial) = 1.8 of 10 max

  • [claimed-docs] https://docs.perplexity.ai/docs/agent-api/profiles.mdA profile is a reusable, versioned configuration that you save and manage. ... Select a profile by ID instead of repeating the full configuration in every request.

Automation = 5.4 ÷ 50 × 100 = 10.8