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.txt“PROBE 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.md“PROBE 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.json“PROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key”
- [claimed-docs] https://docs.perplexity.ai/docs/cli/overview.md“Install 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/quickstart“You 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.md“Install 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-py“We provide support for streaming responses using Server Side Events (SSE).”
- [github] https://github.com/perplexityai/perplexity-py“Certain errors are automatically retried 2 times by default, with a short exponential backoff.”
- [github] https://github.com/perplexityai/perplexity-py“By 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-py“The 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.json“PROBE 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-server“The 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-server“Remote 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-server“Local 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-server“Use 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.md“Built-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-server“The 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-server“Remote 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-server“Local 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-server“To 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-server“official 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/quickstart“You 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/quickstart“You 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.md“Install 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/overview“Get 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/quickstart“Install one of our official SDKs for a convenient, type-safe integration”
- [claimed-docs] https://docs.perplexity.ai/docs/search/quickstart“You 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.md“Generate an API key and make your first call in < 3 minutes.”
- [probe] https://docs.perplexity.ai/openapi.json“PROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key”
- [github] https://github.com/perplexityai/perplexity-py“The 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/quickstart“Install one of our official SDKs for a convenient, type-safe integration”
- [claimed-docs] https://docs.perplexity.ai/docs/search/quickstart“Install one of our [official SDKs](/docs/sdk/overview) for a convenient, type-safe integration”
- [github] https://github.com/perplexityai/perplexity-py“We provide support for streaming responses using Server Side Events (SSE).”
- [github] https://github.com/perplexityai/perplexity-py“Certain errors are automatically retried 2 times by default, with a short exponential backoff.”
- [github] https://github.com/perplexityai/perplexity-py“When 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-py“By 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-py“The 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-py“search = 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/quickstart“You 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.json“PROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key”
- [probe] https://docs.perplexity.ai/docs/getting-started/overview.md“PROBE 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.json“PROBE openapi: HTTP 200 at https://docs.perplexity.ai/openapi.json — contains "openapi" key”
- [probe] https://docs.perplexity.ai/llms.txt“PROBE 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.md“PROBE 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/quickstart“You 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.md“Install 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.md“Built-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.md“The `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-server“Remote 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-server“Local 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.md“A 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/quickstart“You 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-server“Remote 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-server“Local 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=42809008“They'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/overview“Generate high-quality embeddings for semantic search and RAG pipelines.”
- [claimed-docs] https://docs.perplexity.ai/docs/agent-api/building-agents/give-it-tools.md“Built-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.md“The `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.md“Structured 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/quickstart“Use 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.md“A `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.md“Built-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.md“The `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.md“For 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.md“Model 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.md“A 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.md“A `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.md“Built-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-server“Remote 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-server“Local 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.md“Install 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/quickstart“Access 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/pricing“Search context determines how much web information is retrieved. Higher context = more comprehensive results.”
- [claimed-docs] https://docs.perplexity.ai/docs/admin/rate-limits-usage-tiers“As 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.md“A 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