Published 2026-09-27 · Tested 2026-09-27

Cartesia

A-

Cartesia received 9 PASS votes and passed 5 of five agent surface checks. The clearest finding came from the verify a webhook task.

Panel: GPT 5.6 Sol, Opus 5, DeepSeek v4F Battery: v1 Read as markdown (opens in a new tab)

Three AI models, GPT 5.6 Sol, Claude Opus 5, and DeepSeek v4 Flash, each read Cartesia’s public documentation independently and attempted five first-hour developer jobs: stream the first text-to-speech audio, find the exact limits, recover from a 429, verify a webhook, use the Python SDK.

No accounts, API calls, or code execution were used. Every verdict came from public pages and every published quotation passed a live verification check.

Freshness

How rechecks work
Category
Voice & speech
Tested
Quotes verified
Surface rechecked
Not yet rechecked
Cartesia Mintlify · published
A-

92.5% · 74/80 · AI Agent Readiness Score · reading 30 pts · surface 50 pts

llms.txt PASS
llms-full.txt PASS
markdown mirror PASS
MCP server PASS
docs AI PASS
Task GPT 5.6 SolOpus 5DeepSeek v4F Consensus
Stream the first text-to-speech audio PASSPASSPASS PASS
Find the exact limits PARTIALPASSPASS PASS
Recover from a 429 PARTIALPARTIALPARTIAL PARTIAL
Verify a webhook PARTIALPARTIALPASS PARTIAL
Use the Python SDK PASSPASSPASS PASS

docs platform: Mintlify (unscored) · verified 2026-09-27

What to fix first

These 2 fixes could add up to 5 points to the AI Agent Readiness Score. The list ranks each fix by the points it would add. How the ranking works

  1. 1
    +3 points Recover from a 429 PARTIAL

    Found: The errors page names concurrency_limited, but no page gives Retry-After guidance, backoff timing, or a retry procedure.

    Fix: Link the 429 error code to the concurrency page and document retry timing and backoff there.

    Evidence: docs.cartesia.ai/use-the-api/concurrency-limits-and-timeouts (opens in a new tab)

  2. 2
    +2 points Verify a webhook PARTIAL

    Found: The webhook guide says the secret is never returned and uses X-API-Key, while the reference returns it and uses Bearer.

    Fix: State that webhook creation returns the secret once, and use Authorization: Bearer in the guide's curl example.

    Evidence: docs.cartesia.ai/line/infrastructure/observability (opens in a new tab)

What the docs get right

  • Stream the first text-to-speech audio: 3 PASS votes. One quickstart links key creation, installs WebSocket support, streams Sonic 3.6 text, receives chunks, and plays audio.
  • Use the Python SDK: 3 PASS votes. The official Python example uses Sonic 3.6 and the same request fields as the Bytes API.
  • 5 of 5 agent surface checks. Present: llms.txt, llms-full.txt, markdown mirrors, an MCP server, docs AI.

Stream the first text-to-speech audio

PASS

PASS consensus from 3 PASS.

One quickstart links key creation, installs WebSocket support, streams Sonic 3.6 text, receives chunks, and plays audio. One quickstart page carries the key-creation link, the environment variable, the install command, a complete runnable Python and TypeScript WebSocket script with a concrete model_id and voice ID, and a run command. Quickstart provides one clear path: get API key at play.cartesia.ai/keys, install cartesia[websockets], create client with env var, open WebSocket context with sonic-3.6, push chunks, and receive audio.

Find the exact limits

PASS

PASS consensus from 2 PASS, 1 PARTIAL.

Tables give TTS 2/3/5/15, STT 8/12/20/60, 10× TTS sockets, and 5/3-minute timeouts, contradicting the identical-values claim. One page gives per-plan TTS and STT concurrency numbers (Free 2/8 through Scale 15/60), the WebSocket ceiling at 10X the concurrency limit, and idle timeouts of 5 minutes for TTS and 3 minutes for STT; the agent-call table on the scaling page states explicitly that its matching numbers are a separate pool. One page lists all values: TTS concurrency per plan (2/3/5/15), STT concurrency per plan (8/12/20/60), WebSocket limit (10x concurrency), TTS idle timeout (5 min), STT idle timeout (3 min). Values consistent across English and Japanese pages.

Recover from a 429

PARTIAL

PARTIAL consensus from 3 PARTIAL.

The failed /api-reference/errors fetch led to a working error page that names the cause but omits complete retry steps. The API Errors table defines concurrency_limited but links to nothing, the concurrency page is reachable only by guessing its URL, and no page in the whole corpus mentions Retry-After, backoff, or how long to wait before retrying. The error_code concurrency_limited is named and the error structure is documented. Suggested fixes exist (upgrade plan, close idle connections, use connection pools). But no step-by-step recovery path from a 429 back to a successful call, no retry-after guidance, no backoff procedure.

Verify a webhook

PARTIAL

PARTIAL consensus from 1 PASS, 2 PARTIAL.

The guide covers the full path, but its omission claim conflicts with the creation response reference. The create-receive-verify path is complete and includes retries and deduplication, but the guide's curl authenticates with X-API-Key while the API reference and API Conventions use Authorization: Bearer, and the guide says the secret is always omitted from API responses while the reference returns it on creation. Complete create-receive-verify path documented: POST /agents/webhooks registers with url+secret, PATCH /agents/{agent_id} attaches webhook_id, events arrive with x-webhook-secret header for verification, and webhook_request_id for deduplication. API reference and observability guide are consistent.

Use the Python SDK

PASS

PASS consensus from 3 PASS.

The official Python example uses Sonic 3.6 and the same request fields as the Bytes API. The Client Libraries page names the official repository and install command and routes to the quickstart, whose example matches the API reference, which accepts voice as either a plain ID string or an object with id. Official Python SDK is documented with install command. Both the quickstart and the basic example provide complete working TTS code using the same API pattern (websocket_connect, context, push, no_more_inputs, receive) that matches the WebSocket API reference.

The receipt

The secret is always omitted from API responses.

The guide covers the full path, but its omission claim conflicts with the creation response reference.

Agent surface notes

JSON-RPC initialize POST returned protocol 2025-06-18 over text/event-stream with serverInfo name "Cartesia Docs" and search/retrieval tool capabilities. (A separate product MCP at https://mcp.cartesia.ai/mcp answers with a 401 Bearer OAuth challenge identifying an MCP auth flow.)

After hydration the docs header shows an Ask Assistant control; one click opened the Mintlify assistant panel with an Ask a question... input.

Show the score

AI Agent Readiness Score 92.5%, grade A-

Paste this into a readme:

[![AI Agent Readiness Score 92.5%](https://docsforagents.com/badge/cartesia.svg)](https://docsforagents.com/reports/cartesia-docs-ai-agent-readiness/)

Method note

This is a reading test of public documentation, not an execution test. No accounts were created and no API calls were run. The AI Agent Readiness Score counts fifteen reading votes at PASS 2, PARTIAL 1, and FAIL 0, for 30 possible points. Five agent surface checks add 10 points each. The total is 80. Consensus chips show each row majority and do not affect scoring. The panel split on 2 of five tasks. Quotes shown here were re-fetched and confirmed verbatim on 2026-09-27.

Read the full methodology

Put another docs site through the battery.

Nominate a docs site