{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "assemblyai-voice-agent",
    "name": "AssemblyAI Voice Agent API",
    "vendor": "AssemblyAI, Inc.",
    "vendorUrl": "https://www.assemblyai.com",
    "kind": "http-api",
    "category": "voice-agents",
    "summary": "AssemblyAI's Voice Agent API runs a spoken conversation over one WebSocket, combining its own speech-to-text, language model and text-to-speech. Agents are stored through a REST API and reached from a browser, a server or an inbound Twilio SIP number.",
    "url": "https://www.anchorterminal.com/tools/assemblyai-voice-agent",
    "markdownUrl": "https://www.anchorterminal.com/tools/assemblyai-voice-agent.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/assemblyai-voice-agent.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/assemblyai-voice-agent.json",
    "repo": "https://github.com/AssemblyAI/voice-agent-starter-python",
    "license": "Proprietary service under AssemblyAI's Terms of Service. The two starter repositories on GitHub carry no licence file",
    "transports": [
      "http"
    ],
    "remoteUrl": "wss://agents.assemblyai.com/v1/ws",
    "packages": [],
    "auth": "api-key",
    "authNotes": "Self-serve API key from the dashboard, sent in the `Authorization` header on REST calls and on the WebSocket upgrade, with or without a `Bearer` prefix. Keys belong to a project and can be created and deleted in the dashboard (2 on the free plan, 4 on pay as you go, 25 on a contract). No scopes or expiry were found. Browser clients use a one-time token from `GET /v1/token`, redeemable within 1 to 600 seconds and passed as the `token` query parameter.",
    "pricing": "usage",
    "pricingNotes": "$4.50 an hour ($0.075 a minute), billed per second from socket open to session end, idle time included. The rate covers speech-to-text, the managed model, speech output, recordings and hosting. New accounts get $50 of credit with no card, which covers the Voice Agent API. LLM Gateway tokens and Twilio carrier minutes are billed separately. Volume pricing is by sales contact (https://www.assemblyai.com/pricing, https://www.assemblyai.com/docs/billing-and-pricing, checked 2026-10-09).",
    "priceSummary": "Pay per use",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the Voice Agent docs, the two API description files, the billing docs or the pricing page. Payment is by card into a prepaid balance (checked 2026-10-09).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": null,
      "npmWeekly": null,
      "pypiWeekly": null,
      "asOf": "2026-10-09"
    },
    "docsUrl": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api",
    "llmsTxt": "https://www.assemblyai.com/docs/llms.txt",
    "openapi": "https://www.assemblyai.com/docs/api-reference/specs/voice-agent-api.yaml",
    "capabilities": [
      "voice.agent",
      "voice.pipeline",
      "voice.tools",
      "voice.telephony"
    ],
    "tags": [
      "hosted",
      "no-card",
      "closed-source",
      "llms-txt",
      "webhooks",
      "streaming",
      "pipeline",
      "python",
      "javascript",
      "status-page",
      "soc2"
    ],
    "lastRelease": "2026-08-26",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 64.4,
      "grade": "B",
      "agentReady": false,
      "rank": 351,
      "ranked": true,
      "rankOf": 950,
      "categoryRank": 4,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 72,
        "maintenance": 64,
        "payments": 40,
        "reliability": 60,
        "schema": 83,
        "security": 62,
        "transparency": 66
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 60,
          "points": 12,
          "reason": "Scored with the hosted lines. Statuspage at status.assemblyai.com with component history, but its components are the Asynchronous API, Streaming API and LLM Gateway and none is the Voice Agent API (15 of 20). No incident in the 90 days to 9 October 2026 names the Voice Agent API. Five name the realtime speech-to-text it runs on, including about two hours of degraded Universal-3.5 Pro streaming in us-east on 31 July and about two hours of rejected Universal-3.6 Pro Realtime sessions on the US endpoint on 6 October. Whether agent sessions were affected is not stated (15 of 30). A per-account concurrent-session limit is enforced and no figure is published for it (0 of 15). The events reference names `at_capacity`, `concurrency_exceeded` and `internal_error` as the only retryable codes and says to reconnect with backoff, sessions resume for 30 seconds, and webhooks carry a stable `event_id`. No idempotency key on `POST /v1/agents` (10 of 15). A Service Level Agreement of 99.9 per cent a month with credits is published, written against an Order Form (10). The launch note of 29 April 2026 says the API is available to all customers and no beta label was found (10)."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 83,
          "points": 13.49,
          "reason": "An AsyncAPI 3.0 file describes the socket and an OpenAPI 3.0.3 file the token endpoint. No description file was found for the agents, sessions and webhook REST endpoints, and the AsyncAPI file lacks `language_codes`, `voice_focus`, `transcript.agent.delta` and `is_error`, which the docs added on 23 July 2026 (19 of 25). llms.txt, a Markdown copy of each page and a docs MCP server (10). Operations and fields say what they are for and when to use them, such as when to choose `hold` over `interactive` execution (17 of 20). Enums, ranges and defaults on audio encoding, turn detection and timeouts. Tool `parameters` are a JSON Schema the server does not validate at `session.update` (12 of 15). Examples in cURL, Python and JavaScript, and tables of session error codes with close codes (13 of 15). A dated public changelog tagged by product and a `/v1` path, with no written versioning policy found (12 of 15)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 72,
          "points": 11.7,
          "reason": "Scored as an API. Events are small typed JSON, HTTP tool responses are capped at 8 KiB before they reach the model, and the session list leaves artefacts out (18 of 25). `GET /v1/sessions` pages by `cursor` with `limit` from 1 to 200 and filters on `status` and `agent_id` (18 of 20). Errors carry `code`, `message` and sometimes `param`, and REST validation errors name the field (17 of 20). No idempotency keys on REST writes. Sessions resume within 30 seconds, webhooks dedupe on `event_id`, and `hold` mode silences the agent during long tools (10 of 20). An agent needs three fields (`name`, `system_prompt`, `voice`). The official Python and Node SDKs have no Voice Agent client, so callers write JSON over a socket or start from the two starter repositories (9 of 15)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 62,
          "points": 10.85,
          "reason": "Plain API keys per project, created and deleted in the dashboard, with no scopes or expiry found (20 of 30). Browser clients pass a token in the `token` query parameter. We took no deduction because the token is one-time and redeemable for at most 600 seconds, which is a judgement call. A read-only Reader role exists for dashboard members but not for keys. HTTP tool header values are write-only and encrypted at rest, tool calls go only to public `https` hosts with redirects refused, and the docs show how to gate tools by conversation state. No built-in confirmation step before a tool that writes (10 of 20). Caller speech and tool results reach a model. Tool arguments are drawn only from user turns and tool results since 26 August 2026 and tool responses are capped, but no prompt-injection guidance was found (8 of 15). Sessions keep a timeline with tool calls, webhook deliveries are logged per session, usage is broken down by key, and the dashboard has activity logs (12 of 15). The security page states a SOC 2 Type 2 report and third-party penetration tests. No bug bounty or disclosure policy was found, and robots.txt closes `/.well-known`, so security.txt went unread (12 of 20)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 40,
          "points": 5,
          "reason": "No x402, MPP or L402 (0 of 40). One per-unit price on the public pricing page, $4.50 an hour billed per second (20). $50 of credit with no card, which the billing docs say covers the Voice Agent API (20). A person has to sign up in a browser to get the first key, and no key-creation API was found (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 64,
          "points": 5.6,
          "reason": "Universal-3.6 Pro Realtime, the speech-to-text the pricing page lists inside the Voice Agent API, shipped on 29 September 2026. The last changelog entry tagged Voice Agent API is 26 August 2026. We scored on the August entry, the last one tagged for this API, 44 days before the check (20). Ten entries tagged Voice Agent API between 13 July and 26 August 2026 (20). A public changelog that records fixes, a support address and a Discord link we did not test (11 of 15 for a closed service). The Python SDK (1.6.1) and Node SDK (4.41.5) were tagged on 24 September 2026 but have no Voice Agent client. The two starter repositories were last changed on 16 August 2026 (8 of 15). The starters need no dependencies and have no licence file, tests or CI (5 of 10)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 66,
          "points": 5.78,
          "note": "editorial 51, provenance 81",
          "reason": "A closed service with a clear service agreement. The starter repositories have no licence file (15 of 30). The Terms of Service grant a licence to train on Customer Data by default, the opt-out needs a paid plan, and the retention page gives periods for streaming, sync, dictation, asynchronous and LLM Gateway data but none for Voice Agent sessions, which are recorded and stored. A DPA is published and the privacy policy states Data Privacy Framework certification (14 of 30). The changelog dates deprecations ahead of time, such as the 11 July 2026 notice of a change on 7 August, and the terms promise reasonable prior notice of major changes. No written deprecation policy was found (12 of 20). The subprocessor list sits on a third-party trust centre we did not read. US and EU endpoints are mentioned, with no EU host named for the Voice Agent API in the pages read (10 of 20)."
        }
      ],
      "assessment": {
        "date": "2026-10-09",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Scored as an API. Events are small typed JSON, HTTP tool responses are capped at 8 KiB before they reach the model, and the session list leaves artefacts out (18 of 25). `GET /v1/sessions` pages by `cursor` with `limit` from 1 to 200 and filters on `status` and `agent_id` (18 of 20). Errors carry `code`, `message` and sometimes `param`, and REST validation errors name the field (17 of 20). No idempotency keys on REST writes. Sessions resume within 30 seconds, webhooks dedupe on `event_id`, and `hold` mode silences the agent during long tools (10 of 20). An agent needs three fields (`name`, `system_prompt`, `voice`). The official Python and Node SDKs have no Voice Agent client, so callers write JSON over a socket or start from the two starter repositories (9 of 15).",
          "maintenance": "Universal-3.6 Pro Realtime, the speech-to-text the pricing page lists inside the Voice Agent API, shipped on 29 September 2026. The last changelog entry tagged Voice Agent API is 26 August 2026. We scored on the August entry, the last one tagged for this API, 44 days before the check (20). Ten entries tagged Voice Agent API between 13 July and 26 August 2026 (20). A public changelog that records fixes, a support address and a Discord link we did not test (11 of 15 for a closed service). The Python SDK (1.6.1) and Node SDK (4.41.5) were tagged on 24 September 2026 but have no Voice Agent client. The two starter repositories were last changed on 16 August 2026 (8 of 15). The starters need no dependencies and have no licence file, tests or CI (5 of 10).",
          "payments": "No x402, MPP or L402 (0 of 40). One per-unit price on the public pricing page, $4.50 an hour billed per second (20). $50 of credit with no card, which the billing docs say covers the Voice Agent API (20). A person has to sign up in a browser to get the first key, and no key-creation API was found (0).",
          "reliability": "Scored with the hosted lines. Statuspage at status.assemblyai.com with component history, but its components are the Asynchronous API, Streaming API and LLM Gateway and none is the Voice Agent API (15 of 20). No incident in the 90 days to 9 October 2026 names the Voice Agent API. Five name the realtime speech-to-text it runs on, including about two hours of degraded Universal-3.5 Pro streaming in us-east on 31 July and about two hours of rejected Universal-3.6 Pro Realtime sessions on the US endpoint on 6 October. Whether agent sessions were affected is not stated (15 of 30). A per-account concurrent-session limit is enforced and no figure is published for it (0 of 15). The events reference names `at_capacity`, `concurrency_exceeded` and `internal_error` as the only retryable codes and says to reconnect with backoff, sessions resume for 30 seconds, and webhooks carry a stable `event_id`. No idempotency key on `POST /v1/agents` (10 of 15). A Service Level Agreement of 99.9 per cent a month with credits is published, written against an Order Form (10). The launch note of 29 April 2026 says the API is available to all customers and no beta label was found (10).",
          "schema": "An AsyncAPI 3.0 file describes the socket and an OpenAPI 3.0.3 file the token endpoint. No description file was found for the agents, sessions and webhook REST endpoints, and the AsyncAPI file lacks `language_codes`, `voice_focus`, `transcript.agent.delta` and `is_error`, which the docs added on 23 July 2026 (19 of 25). llms.txt, a Markdown copy of each page and a docs MCP server (10). Operations and fields say what they are for and when to use them, such as when to choose `hold` over `interactive` execution (17 of 20). Enums, ranges and defaults on audio encoding, turn detection and timeouts. Tool `parameters` are a JSON Schema the server does not validate at `session.update` (12 of 15). Examples in cURL, Python and JavaScript, and tables of session error codes with close codes (13 of 15). A dated public changelog tagged by product and a `/v1` path, with no written versioning policy found (12 of 15).",
          "security": "Plain API keys per project, created and deleted in the dashboard, with no scopes or expiry found (20 of 30). Browser clients pass a token in the `token` query parameter. We took no deduction because the token is one-time and redeemable for at most 600 seconds, which is a judgement call. A read-only Reader role exists for dashboard members but not for keys. HTTP tool header values are write-only and encrypted at rest, tool calls go only to public `https` hosts with redirects refused, and the docs show how to gate tools by conversation state. No built-in confirmation step before a tool that writes (10 of 20). Caller speech and tool results reach a model. Tool arguments are drawn only from user turns and tool results since 26 August 2026 and tool responses are capped, but no prompt-injection guidance was found (8 of 15). Sessions keep a timeline with tool calls, webhook deliveries are logged per session, usage is broken down by key, and the dashboard has activity logs (12 of 15). The security page states a SOC 2 Type 2 report and third-party penetration tests. No bug bounty or disclosure policy was found, and robots.txt closes `/.well-known`, so security.txt went unread (12 of 20).",
          "transparency": "A closed service with a clear service agreement. The starter repositories have no licence file (15 of 30). The Terms of Service grant a licence to train on Customer Data by default, the opt-out needs a paid plan, and the retention page gives periods for streaming, sync, dictation, asynchronous and LLM Gateway data but none for Voice Agent sessions, which are recorded and stored. A DPA is published and the privacy policy states Data Privacy Framework certification (14 of 30). The changelog dates deprecations ahead of time, such as the 11 July 2026 notice of a change on 7 August, and the terms promise reasonable prior notice of major changes. No written deprecation policy was found (12 of 20). The subprocessor list sits on a third-party trust centre we did not read. US and EU endpoints are mentioned, with no EU host named for the Voice Agent API in the pages read (10 of 20)."
        },
        "sources": [
          {
            "what": "Voice Agent API overview (Markdown copy)",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api.md",
            "seen": "2026-10-09"
          },
          {
            "what": "docs index",
            "url": "https://www.assemblyai.com/docs/llms.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "AsyncAPI description of the socket, read as the file and not the rendered reference page",
            "url": "https://www.assemblyai.com/docs/api-reference/specs/voice-agent-api.yaml",
            "seen": "2026-10-09"
          },
          {
            "what": "OpenAPI description of the token endpoint, read as the file",
            "url": "https://www.assemblyai.com/docs/api-reference/specs/voice-agent-token.yaml",
            "seen": "2026-10-09"
          },
          {
            "what": "events reference and error codes",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/events-reference.md",
            "seen": "2026-10-09"
          },
          {
            "what": "REST reference for agents",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/manage-agents.md",
            "seen": "2026-10-09"
          },
          {
            "what": "tools overview",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/tools/overview.md",
            "seen": "2026-10-09"
          },
          {
            "what": "HTTP tools",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/tools/http-tools.md",
            "seen": "2026-10-09"
          },
          {
            "what": "recordings and transcripts",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/session-history.md",
            "seen": "2026-10-09"
          },
          {
            "what": "webhooks",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/webhooks.md",
            "seen": "2026-10-09"
          },
          {
            "what": "inbound phone agent over SIP",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/connect-to-twilio.md",
            "seen": "2026-10-09"
          },
          {
            "what": "connect your own LLM",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/connect-your-own-llm.md",
            "seen": "2026-10-09"
          },
          {
            "what": "browser integration and tokens",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/browser-integration.md",
            "seen": "2026-10-09"
          },
          {
            "what": "troubleshooting",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/troubleshooting.md",
            "seen": "2026-10-09"
          },
          {
            "what": "build with AI coding tools",
            "url": "https://www.assemblyai.com/docs/voice-agents/voice-agent-api/build-with-ai-tools.md",
            "seen": "2026-10-09"
          },
          {
            "what": "pricing",
            "url": "https://www.assemblyai.com/pricing",
            "seen": "2026-10-09"
          },
          {
            "what": "billing and free credit",
            "url": "https://www.assemblyai.com/docs/billing-and-pricing.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Terms of Service, effective 1 July 2026",
            "url": "https://www.assemblyai.com/legal/terms-of-service",
            "seen": "2026-10-09"
          },
          {
            "what": "privacy policy, effective 26 May 2026",
            "url": "https://www.assemblyai.com/legal/privacy-policy",
            "seen": "2026-10-09"
          },
          {
            "what": "Service Level Agreement, effective 13 April 2026",
            "url": "https://www.assemblyai.com/legal/service-level-agreement",
            "seen": "2026-10-09"
          },
          {
            "what": "data retention and model training",
            "url": "https://www.assemblyai.com/docs/data-retention-and-model-training.md",
            "seen": "2026-10-09"
          },
          {
            "what": "data controls",
            "url": "https://www.assemblyai.com/docs/data-controls.md",
            "seen": "2026-10-09"
          },
          {
            "what": "account management, keys and roles",
            "url": "https://www.assemblyai.com/docs/account-management.md",
            "seen": "2026-10-09"
          },
          {
            "what": "security page",
            "url": "https://www.assemblyai.com/security",
            "seen": "2026-10-09"
          },
          {
            "what": "changelog",
            "url": "https://www.assemblyai.com/changelog",
            "seen": "2026-10-09"
          },
          {
            "what": "status page",
            "url": "https://status.assemblyai.com",
            "seen": "2026-10-09"
          },
          {
            "what": "status history feed",
            "url": "https://status.assemblyai.com/history.rss",
            "seen": "2026-10-09"
          },
          {
            "what": "Python starter repository (shallow clone)",
            "url": "https://github.com/AssemblyAI/voice-agent-starter-python",
            "seen": "2026-10-09"
          },
          {
            "what": "JavaScript starter repository (shallow clone)",
            "url": "https://github.com/AssemblyAI/voice-agent-starter-js",
            "seen": "2026-10-09"
          },
          {
            "what": "Python SDK tags (shallow clone)",
            "url": "https://github.com/AssemblyAI/assemblyai-python-sdk",
            "seen": "2026-10-09"
          },
          {
            "what": "Node SDK tags (shallow clone)",
            "url": "https://github.com/AssemblyAI/assemblyai-node-sdk",
            "seen": "2026-10-09"
          },
          {
            "what": "robots.txt",
            "url": "https://www.assemblyai.com/robots.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "domain registration (RDAP)",
            "url": "https://rdap.verisign.com/com/v1/domain/assemblyai.com",
            "seen": "2026-10-09"
          }
        ],
        "openQuestions": [
          "The Terms of Service (effective 1 July 2026) bar competitive analysis and benchmarking (2.4(f)), any automated or programmatic method of extracting data or Output (4.4), and use of the Services or Output for automated decision-making (2.4(j)). Recorded as a fact with no deduction. It matters before any probe is run.",
          "unchecked: the concurrent-session limit for Voice Agent accounts. No figure is in the Voice Agent docs, and the published streaming limits are not said to apply.",
          "unchecked: security.txt. robots.txt on www.assemblyai.com disallows `/.well-known`, so `securityTxt` is unknown.",
          "unchecked: the subprocessor list and the trust centre, which redirect to app.vanta.com and were not read.",
          "unchecked: the Data Processing Addendum, the acceptable use policy and the biometric data addendum were not read.",
          "unchecked: how long Voice Agent recordings and timelines are kept. The retention page has no Voice Agent section.",
          "unchecked: the EU host for the Voice Agent API. The troubleshooting page mentions an EU endpoint without naming it.",
          "unchecked: GitHub stars and package download counts, so `popularity` is empty.",
          "Whether the realtime speech-to-text incidents of 31 July and 6 October 2026 affected Voice Agent sessions is not stated on the status page.",
          "The RDAP host answered 400 to a robots.txt request, and one domain lookup was made after that.",
          "The docs carry text addressed to AI models (a note to fetch the docs index, an integration prompt and an `AGENTS.md`). It was treated as data."
        ]
      },
      "negative": 0,
      "verdict": "One $0.075 a minute rate covers speech-to-text, the managed model, speech output, recordings and hosting, and the socket has an AsyncAPI file, typed error codes and a 30-second resume window. No concurrent-session limit is published, the status page has no Voice Agent component, and phone calls are inbound only through a Twilio trunk the customer owns.",
      "bestFor": "A developer who wants one managed pipeline at a flat rate and is content with AssemblyAI's own speech models and voices, with an optional model of their own.",
      "strengths": [
        "One published rate of $4.50 an hour ($0.075 a minute), billed per second, with $50 of credit and no card for new accounts",
        "AsyncAPI 3.0 file for the socket, an OpenAPI file for the token endpoint, llms.txt and a Markdown copy of every docs page",
        "Session errors carry a code, a message and sometimes the offending field, and the docs name the three codes that are safe to retry",
        "HTTP tool header values are write-only and encrypted at rest, and tool calls are limited to public `https` hosts with redirects refused",
        "Every session is stored with a stereo recording, a JSON timeline of turns and tool calls, and signed webhooks with a delivery history"
      ],
      "weaknesses": [
        "No number is published for the concurrent-session limit that the `concurrency_exceeded` error enforces",
        "status.assemblyai.com lists the Asynchronous API, Streaming API and LLM Gateway, with no Voice Agent component",
        "Telephony is inbound only, over a SIP trunk on a Twilio account the customer owns",
        "API keys have no scopes or expiry, and opting out of model training needs a paid plan",
        "The Terms of Service bar benchmarking and competitive analysis (2.4(f)) and any automated or programmatic method of extracting data or Output (4.4), which matters before any probe is run"
      ],
      "agentNotes": [
        "Send `session.end` before closing the socket. Without it the session stays resumable, and billed, for 30 seconds",
        "Retry only `at_capacity`, `concurrency_exceeded` and `internal_error`, with backoff. Every other session error code is fatal",
        "Send `tool.result` inside the `reply.done` handler, not straight after `tool.call`",
        "Mint a one-time token with `GET /v1/token` for browser clients and never ship the API key to a page",
        "Deduplicate webhooks on `event_id`, and verify `X-AAI-Signature` against the raw body bytes because a 401 is not retried"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "B",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 64.4
        }
      ],
      "editorialScores": {
        "ergonomics": 72,
        "maintenance": 64,
        "payments": 40,
        "reliability": 60,
        "schema": 83,
        "security": 62,
        "transparency": 51
      },
      "provenanceScore": 81
    },
    "connect": {
      "install": "git clone https://github.com/AssemblyAI/voice-agent-starter-python",
      "http": "curl -X POST https://agents.assemblyai.com/v1/agents \\\n  -H \"Authorization: $ASSEMBLYAI_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"Support Assistant\", \"system_prompt\": \"You are a friendly support agent.\", \"greeting\": \"Hi, how can I help?\", \"voice\": {\"voice_id\": \"alba\"}}'",
      "claudeCode": "claude mcp add --transport http --scope user assemblyai-docs https://mcp.assemblyai.com/docs"
    },
    "letme": {
      "capability": "https://letme.dev/voice.agent",
      "tool": "https://letme.dev/assemblyai-voice-agent"
    },
    "sameCompany": [
      "assemblyai-stt"
    ],
    "notable": [
      "The socket is `wss://agents.assemblyai.com/v1/ws`, configured by a first `session.update` that either binds a stored `agent_id` or sends the prompt, greeting, tools and audio settings inline (https://www.assemblyai.com/docs/api-reference/specs/voice-agent-api.yaml)",
      "The default model is AssemblyAI's managed conversational model. An `llm` entry points the agent at any OpenAI-compatible endpoint or at the vendor's LLM Gateway, which is billed separately by token (https://www.assemblyai.com/docs/voice-agents/voice-agent-api/connect-your-own-llm)",
      "Sessions last at most 10,800 seconds (3 hours) and end with no warning event (https://www.assemblyai.com/docs/voice-agents/voice-agent-api/browser-integration)",
      "Tool calls take argument values only from user turns and tool results since 26 August 2026, and the vendor says its internal test fell from 2.5 per cent invented arguments to none (https://www.assemblyai.com/changelog)",
      "The docs pages open with a note telling readers to fetch the documentation index, and the vendor publishes an integration prompt and an `AGENTS.md` for coding assistants. We recorded these as facts and did not act on them (https://www.assemblyai.com/docs/voice-agents/voice-agent-api/build-with-ai-tools)",
      "The Terms of Service, effective 1 July 2026, grant AssemblyAI a licence to train its models on Customer Data unless the customer opts out, and the opt-out is open to paid plans only (https://www.assemblyai.com/legal/terms-of-service, https://www.assemblyai.com/docs/data-controls)",
      "AssemblyAI's speech-to-text is a separate listing. This listing covers the Voice Agent API, which has its own host, docs section and price (https://www.assemblyai.com/pricing)"
    ],
    "area": "voice",
    "details": [
      {
        "label": "Architecture",
        "value": "Pipeline of AssemblyAI's own models over one WebSocket. Universal-3.6 Pro Realtime speech-to-text, a managed conversational model and the vendor's text-to-speech voices"
      },
      {
        "label": "Endpoints",
        "value": "`wss://agents.assemblyai.com/v1/ws` for conversations. REST on `https://agents.assemblyai.com` for `/v1/agents`, `/v1/sessions`, webhook subscriptions and `/v1/token`"
      },
      {
        "label": "LLM",
        "value": "Managed by default. One OpenAI-compatible endpoint of the customer's, or the vendor's LLM Gateway, can replace it. Fallback entries are not supported"
      },
      {
        "label": "Tool calling",
        "value": "HTTP tools that AssemblyAI calls itself (`GET`, `POST`, `PUT`, `PATCH`, `DELETE`, response capped at 8 KiB) and client-side function tools, each with `interactive` or `hold` execution and a timeout of 1 to 300 seconds"
      },
      {
        "label": "Telephony",
        "value": "Inbound only. A Twilio number the customer owns is routed to AssemblyAI over a SIP trunk. G.711 μ-law and A-law at 8 kHz are accepted beside 24 kHz PCM16"
      },
      {
        "label": "Interruptions",
        "value": "Server-side turn detection with `vad_threshold`, `min_silence` and `max_silence`, barge-in reported as `interrupted` on `reply.done`"
      },
      {
        "label": "Session limits",
        "value": "3 hours at most (`max_session_duration_seconds` 60 to 10,800). A dropped session can be resumed for 30 seconds"
      },
      {
        "label": "Rate limits",
        "value": "A per-account concurrent-session limit exists (`concurrency_exceeded`). No figure was found in the Voice Agent docs"
      },
      {
        "label": "Errors",
        "value": "`session.error` events with `code`, `message` and sometimes `param`. REST answers 400, 401 and 422 with the failing field named"
      },
      {
        "label": "Recordings",
        "value": "Each session keeps an OGG/Opus stereo recording, a JSON timeline and metadata, fetched through pre-signed links from `GET /v1/sessions/{id}` and removed with `DELETE`"
      },
      {
        "label": "Webhooks",
        "value": "Signed with HMAC-SHA256 in `X-AAI-Signature`, at-least-once delivery, 15-second read timeout, delivery history per session"
      },
      {
        "label": "Free tier",
        "value": "$50 one-off credit, no card, no expiry"
      },
      {
        "label": "SLA",
        "value": "99.9 per cent monthly availability with service credits of up to 10 per cent of the invoice, written against an Order Form (effective 13 April 2026)"
      },
      {
        "label": "Data use",
        "value": "Customer Data may train AssemblyAI's models unless the account opts out. The opt-out, retention settings and a BAA are self-serve on paid plans only"
      }
    ],
    "unitPrices": [
      {
        "item": "Voice Agent session",
        "unit": "call-minute",
        "usd": 0.075,
        "note": "$4.50 an hour billed per second of open socket. Speech-to-text, managed model, speech output and recordings included. LLM Gateway tokens and carrier minutes extra"
      }
    ],
    "provenance": {
      "legalEntity": "AssemblyAI, Inc.",
      "domain": "assemblyai.com",
      "domainRegistered": "2016-12-24",
      "endpointOnVendorDomain": true,
      "terms": "https://www.assemblyai.com/legal/terms-of-service",
      "privacy": "https://www.assemblyai.com/legal/privacy-policy",
      "statusPage": "https://status.assemblyai.com",
      "changelog": "https://www.assemblyai.com/changelog",
      "securityTxt": "unknown",
      "checked": "2026-10-09",
      "score": 81,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "AssemblyAI, Inc.",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "assemblyai.com, registered 2016-12-24 (9 years)",
          "points": 11,
          "max": 15,
          "state": "part"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "wss:",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 7 of the 7 things a reader expects, and has 2 clauses that cost points",
          "points": 6,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 7 of the 8 things a reader expects",
          "points": 9.3,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "status.assemblyai.com",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "could not be fetched",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://www.assemblyai.com/legal/terms-of-service",
          "state": "read",
          "readAt": "2026-10-08",
          "statedDate": "2026-07-01",
          "words": 7966,
          "points": 6,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last modifiedJuly 1, 2026",
              "says": "Last updated 2026-07-01"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "This Agreement is governed by the laws of the State of Delaware, exclusive of its rules governing choice of law and conflict of laws, and the Parties consent to exclusive jurisdiction and venue in the state and federal courts located in New York, New York.",
              "says": "The law of the State of Delaware, with disputes in the courts of New York, New York"
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "Any exchange of data or other interaction between Customer and a Third Party Provider is solely between Customer and such Third Party Provider, and in no event shall AssemblyAI be liable or responsible for any such exchange or interaction"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "…balance per month, or the maximum rate permitted by law, whichever is lower, and/or (b) AssemblyAI may suspend Customer’s access to the Services until Customer’s account is brought current, including the payment of any accrued interest charges."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "The Fee Schedule may be modified during the Service Term by mutual written agreement of the Parties (email will suffice).",
              "says": "Says it gives notice of a change"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "Customer shall not (and shall not permit any third party to), directly or indirectly: (a) reverse engineer, decompile, disassemble, or otherwise attempt to discover the source code, object code, or underlying structure, ideas, or algorithms of the Services (except to the extent applicable laws specifically prohibit su…"
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": true,
              "quote": "1.14 “SLA” means the Service Level Agreement available at: www.assemblyai.com/legal/service-level-agreement, which may be updated from time to time."
            }
          ],
          "toKnow": [
            {
              "key": "training.optout",
              "label": "Says it may use customer content to train or improve models, and gives an opt-out",
              "found": true,
              "quote": "For information on how to opt-out of AssemblyAI’s use of Customer Data for purposes of training its artificial intelligence and machine learning models (to the extent applicable to Customer’s pricing plan)"
            },
            {
              "key": "terms.automated",
              "label": "Restricts automated access",
              "found": true,
              "quote": "Customer may not: (a) use any automated or programmatic method to extract data or Output or to circumvent limits on Output, including scraping, web harvesting, or web data extraction;",
              "costsPoints": true
            },
            {
              "key": "terms.benchmark",
              "label": "Restricts benchmarking or competitive use",
              "found": true,
              "quote": "(f) use or access the Services to develop a product or service that is competitive with any AssemblyAI product or service, or engage in competitive analysis or benchmarking;",
              "costsPoints": true
            },
            {
              "key": "terms.cutoff",
              "label": "Says access can be ended without notice or for any reason",
              "found": true,
              "quote": "Either Party may terminate this Order Form for its convenience by providing written notice (email shall suffice)."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "AssemblyAI may use, keep and make available de-identified data generated from Customer Data for any purpose, including marketing and training its own models.",
              "quote": "may freely use, retain and make available such data for any purpose, including, but not limited to product improvement, training, testing, benchmarking and marketing of the Services, and training of AssemblyAI’s artificial intelligence and machine learning models."
            },
            {
              "date": "2026-10-08",
              "text": "Customers may not use the Services or any Output for automated decision-making or profiling as applicable law defines those terms.",
              "quote": "(j) use the Services or any Output for automated decision-making or profiling purposes, as such or similar terms are defined under applicable law;"
            },
            {
              "date": "2026-10-08",
              "text": "Customers may not present any Output as human-generated.",
              "quote": "(b) represent that any Output is human-generated."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://www.assemblyai.com/legal/privacy-policy",
          "state": "read",
          "readAt": "2026-10-08",
          "statedDate": "2026-05-26",
          "words": 6842,
          "points": 9.3,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last modifiedMay 26, 2026",
              "says": "Last updated 2026-05-26"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "This chart details the categories of Personal Data that we collect and have collected over the past 12 months:"
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "We retain Personal Data about you for as long as necessary to provide you with our Services or to perform our business or commercial purposes for collecting your Personal Data.",
              "says": "For as long as needed, with no period named"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "In those cases we are a service provider and our processing of that data is governed by the agreement in place between us and the applicable customer."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "We do not sell or share your Personal Data in any other way than through the use of Cookies.",
              "says": "Says it does not sell personal data"
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "Under the CCPA, this right is subject to certain exceptions: for example, we may need to retain your Personal Data to provide you with the Services or complete a transaction or other action you have requested, or if deletion of your Personal Data involves disproportionate effort."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": false
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "pursuant to a data processing agreement incorporating standard data protection clauses or the Data Privacy Framework(s) described below.",
              "says": "Relies on the Data Privacy Framework"
            }
          ],
          "toKnow": [
            {
              "key": "privacy.sells",
              "label": "Says it sells personal data or shares it for advertising",
              "found": true,
              "quote": "Depending on state laws that may be applicable to you, some of these disclosures may constitute a “sale” or “sharing” of your Personal Data under the CCPA."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "Continued use of the Services is treated as consent to session replay technology.",
              "quote": "By continuing to use the Services, you consent to the use of session replay technology."
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/assemblyai-voice-agent.json",
    "live": {
      "slug": "assemblyai-voice-agent",
      "probe": {
        "target": "wss://agents.assemblyai.com/v1/ws",
        "method": "get",
        "lastAt": "2026-10-10T01:37:43.613772094Z",
        "lastOk": false,
        "lastStatus": 0,
        "lastMs": 0,
        "lastNote": "unsupported protocol scheme \"wss\"",
        "authRequired": false,
        "uptime24h": 0,
        "uptime30d": 0,
        "p50ms24h": 0,
        "p95ms24h": 0,
        "samples24h": 102,
        "samples30d": 102,
        "days": [
          {
            "date": "2026-10-09",
            "probes": 85,
            "ok": 0
          },
          {
            "date": "2026-10-10",
            "probes": 17,
            "ok": 0
          }
        ],
        "outages": [
          {
            "start": "2026-10-09T15:42:56.660671906Z",
            "end": "0001-01-01T00:00:00Z",
            "note": "unsupported protocol scheme \"wss\""
          }
        ]
      },
      "vendorStatus": {
        "page": "https://status.assemblyai.com",
        "indicator": "none",
        "summary": "All Systems Operational",
        "checkedAt": "2026-10-10T01:33:21.704340058Z"
      },
      "githubStars": 3,
      "pages": [
        {
          "url": "https://www.assemblyai.com/docs/billing-and-pricing",
          "kind": "pricing",
          "status": 200,
          "checkedAt": "2026-10-09T18:48:16.435584974Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "3b80ad9644cf"
        }
      ],
      "updatedAt": "2026-10-10T01:37:43.613772094Z"
    }
  }
}
