{
  "data": {
    "a": {
      "slug": "inworld-tts",
      "name": "Inworld Realtime TTS-2",
      "vendor": "Inworld AI",
      "vendorUrl": "https://inworld.ai",
      "kind": "model",
      "category": "text-to-speech",
      "summary": "Inworld's hosted text-to-speech models, `inworld-tts-2` and `inworld-tts-2-flash`, over REST, HTTP streaming, WebSocket, async jobs and an OpenAI-compatible endpoint. TTS-2 takes bracketed steering, and an opt-in Reasoning step writes the delivery direction itself.",
      "url": "https://www.anchorterminal.com/tools/inworld-tts",
      "markdownUrl": "https://www.anchorterminal.com/tools/inworld-tts.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/inworld-tts.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/inworld-tts.json",
      "license": "Proprietary service under Inworld's Terms of Service. The Node.js SDK `@inworld/tts` and the CLI `@inworld/cli` are MIT on npm",
      "transports": [
        "http",
        "websocket"
      ],
      "remoteUrl": "https://api.inworld.ai",
      "packages": [
        {
          "registry": "npm",
          "name": "@inworld/tts"
        },
        {
          "registry": "pypi",
          "name": "inworld-tts"
        },
        {
          "registry": "npm",
          "name": "@inworld/cli"
        }
      ],
      "auth": "api-key",
      "authNotes": "Every call sends `Authorization: Basic` with the Base64 `key_id:secret` credential copied from the Portal or printed by the CLI. Keys belong to a workspace, are deleted to revoke, and have write toggles only for the Voice and Router APIs, so no key is limited to TTS. Browser and mobile clients use single-use tokens minted server-side, valid 15 minutes by default.",
      "pricing": "freemium",
      "pricingNotes": "TTS-2 costs $25 per million characters on the free On-Demand plan, falling to $20, $17.50, $15 and $12.50 on the $25, $100, $300 and $1,500 monthly plans, and from $5 on Enterprise. TTS-2 Flash runs $15 down to $7. On-Demand includes up to 70 minutes of TTS with no card. Steering tags count as characters, while `synthesisContext` and `reasoningContext` aren't billed. Batch costs 20 per cent less (checked 2026-10-30).",
      "priceSummary": "$25 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, the TTS docs, the billing page or the pricing page (checked 2026-10-30). Usage is drawn from prepaid plan credits, card top-ups of at least $10 or auto-reload.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 3632,
        "pypiWeekly": null,
        "asOf": "2026-10-30"
      },
      "docsUrl": "https://docs.inworld.ai/tts/tts",
      "llmsTxt": "https://docs.inworld.ai/llms.txt",
      "capabilities": [
        "speech.tts",
        "speech.streaming",
        "speech.voices",
        "speech.ssml",
        "speech.languages",
        "speech.batch",
        "voice.clone",
        "voice.design"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "freemium",
        "free-tier",
        "no-card",
        "llms-txt",
        "streaming",
        "openai-compatible",
        "reasoning",
        "multilingual",
        "async-jobs",
        "batch",
        "typescript",
        "python",
        "cli",
        "mcp",
        "status-page",
        "soc2",
        "enterprise"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.3,
        "grade": "C",
        "agentReady": false,
        "rank": 687,
        "ranked": true,
        "rankOf": 1243,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 68,
          "payments": 40,
          "reliability": 62,
          "schema": 60,
          "security": 61,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-30"
        },
        "negative": -2,
        "negativeNotes": [
          "30 October 2026. Inworld's Realtime TTS-2 page shows Realtime TTS-2 as #1 for voice quality on the Artificial Analysis Speech Arena and says the ranks come from the live arena, not hardcoded. Artificial Analysis's provider-voice leaderboard on the same day put Realtime TTS-2 8th (Elo 1,267) behind Eleven v4 Turbo (1,336). The page also says the table was verified in May 2026. The deduction lapses if the page is corrected or the rank returns. Sources: https://inworld.ai/blog/realtime-tts-2 and https://artificialanalysis.ai/text-to-speech/leaderboard/provider-voice (-2)"
        ],
        "verdict": "TTS-2 takes bracketed steering, and opt-in Reasoning writes a delivery direction from the text and up to 600 characters of context, returning it in the response. Per-character prices are public and the free plan needs no card. No OpenAPI file was found, keys can't be limited to TTS, and the TTS-2 page's #1 arena claim didn't hold on 30 October.",
        "bestFor": "Agents that generate replies or stories at runtime and want delivery chosen from context without writing tags, and for per-message or pre-generated audio.",
        "strengths": [
          "Reasoning returns the direction it applied as `reasoningInstruction`, so an agent can log it and reuse it as an inline tag",
          "Per-character prices are public, from $25 per million characters for TTS-2 on the free plan to $12.50 on Growth",
          "REST, HTTP streaming, WebSocket, async jobs and an OpenAI-compatible `/v1/audio/speech` endpoint",
          "llms.txt, Markdown twins of every page and a keyless docs MCP server at docs.inworld.ai/mcp",
          "Single-use client tokens, 15 minutes by default, keep the API key off browsers and phones"
        ],
        "weaknesses": [
          "No OpenAPI or other machine-readable contract was found for the TTS API",
          "API keys can't be limited to TTS. Write toggles cover only the Voice and Router APIs",
          "The 28 October model update replaced `inworld-tts-2` in place, with no dated snapshot to pin",
          "Zero data retention is Enterprise only or a Growth add-on, and the SLA is Enterprise only",
          "The TTS-2 page claims #1 on the Artificial Analysis Speech Arena, which ranked it 8th on 30 October 2026"
        ],
        "agentNotes": [
          "Send the copied Base64 credential as-is in `Authorization: Basic`. Don't encode it again.",
          "Set `modelId` explicitly, because SDK defaults may name deprecated models.",
          "Keep text under 2,000 UTF-16 units on `/tts/v1/voice` and 4,000 on `voice:stream`, or use an async job.",
          "Turn on Reasoning with `synthesisContext.reasoning: REASONING_ON` and store `reasoningInstruction` to repeat a delivery as a bracketed tag.",
          "On 429 or error code 8, back off exponentially with jitter. No Retry-After header is documented."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.3
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 68,
          "payments": 40,
          "reliability": 62,
          "schema": 60,
          "security": 61,
          "transparency": 51
        },
        "provenanceScore": 75,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-30",
            "maintenance": "2026-10-30",
            "payments": "2026-10-30",
            "reliability": "2026-10-30",
            "schema": "2026-10-30",
            "security": "2026-10-30",
            "transparency": "2026-10-30"
          },
          "last": "2026-10-30",
          "oldest": "2026-10-30",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @inworld/tts",
        "http": "curl -X POST https://api.inworld.ai/tts/v1/voice -H \"Authorization: Basic $INWORLD_API_KEY\" -H 'Content-Type: application/json' -d '{\"text\": \"We made it. I honestly did not think we would.\", \"voiceId\": \"Dennis\", \"modelId\": \"inworld-tts-2\", \"synthesisContext\": {\"reasoning\": \"REASONING_ON\"}}'",
        "claudeCode": "claude mcp add inworld -- inworld mcp"
      },
      "letme": {
        "capability": "https://letme.dev/speech.tts",
        "tool": "https://letme.dev/inworld-tts"
      },
      "area": "voice",
      "unitPrices": [
        {
          "item": "Realtime TTS-2, On-Demand (free plan, pay as you go)",
          "unit": "1m-chars",
          "usd": 25,
          "note": "pricing page, checked 30 October 2026"
        },
        {
          "item": "Realtime TTS-2 on Growth",
          "unit": "1m-chars",
          "usd": 12.5,
          "note": "$20 on Creator, $17.50 on Builder, $15 on Developer, from $5 on Enterprise"
        },
        {
          "item": "Realtime TTS-2 Flash, On-Demand",
          "unit": "1m-chars",
          "usd": 15,
          "note": "falls to $7 on Growth"
        },
        {
          "item": "Creator plan",
          "unit": "month",
          "usd": 25,
          "note": "$25 in credits a month"
        },
        {
          "item": "Developer plan",
          "unit": "month",
          "usd": 300,
          "note": "$300 in credits a month, priority email support"
        }
      ],
      "provenance": {
        "legalEntity": "Theai, Inc. dba Inworld AI",
        "domain": "inworld.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://inworld.ai/terms",
        "privacy": "https://inworld.ai/privacy",
        "statusPage": "https://status.inworld.ai",
        "changelog": "https://docs.inworld.ai/release-notes/tts",
        "securityTxt": "none",
        "checked": "2026-10-30",
        "notes": [
          "The Terms of Service (effective 11 June 2025) are an agreement with Theai, Inc. dba Inworld AI under California law, with courts in Santa Clara. The Privacy Notice (last updated 18 January 2026) names Theai, Inc.",
          "inworld.ai/.well-known/security.txt returns 404. The security page links a vulnerability report form.",
          "status.inworld.ai runs the open-source issue-status app, which draws incidents from GitHub issues in inworld-ai/inworld-issue-status. Its history wasn't read, because GitHub's robots.txt couldn't be read from our environment.",
          "inworld.ai's robots.txt allows Claude agents on the paths read and sets `Content-Signal: ai-train=no, search=yes, ai-input=no`. docs.inworld.ai has no such signal.",
          "The domain's registration date wasn't established, because the RDAP lookup failed.",
          "firstReleased is the TTS-2 launch entry in the TTS release notes, 5 May 2026. Inworld's TTS-2 page dates general availability to 31 August 2026, and Reasoning shipped on 28 October 2026."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/inworld-tts.json",
      "live": {
        "slug": "inworld-tts",
        "probe": {
          "target": "https://api.inworld.ai",
          "method": "get",
          "lastAt": "2026-10-31T03:04:02.49858712Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 146,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 158,
          "p95ms24h": 339,
          "samples24h": 16,
          "samples30d": 16,
          "days": [
            {
              "date": "2026-10-31",
              "probes": 16,
              "ok": 16
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.inworld.ai",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-31T03:04:35.255164605Z"
        },
        "updatedAt": "2026-10-31T03:04:35.255164605Z"
      }
    },
    "answer": "Inworld Realtime TTS-2 scores 58.3 (C) on agent readiness against PlayHT Text-to-Speech API's 4.1 (F), and leads in every scored category.",
    "b": {
      "slug": "playht-tts",
      "name": "PlayHT Text-to-Speech API",
      "vendor": "PlayHT",
      "vendorUrl": "https://play.ht",
      "kind": "model",
      "category": "text-to-speech",
      "summary": "Discontinued text-to-speech API from PlayHT, formerly supporting streaming audio and batch generation.",
      "url": "https://www.anchorterminal.com/tools/playht-tts",
      "markdownUrl": "https://www.anchorterminal.com/tools/playht-tts.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/playht-tts.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/playht-tts.json",
      "repo": "https://github.com/playht/pyht",
      "license": "Apache-2.0 (Python SDK)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.play.ht/api/v2",
      "packages": [
        {
          "registry": "npm",
          "name": "playht"
        },
        {
          "registry": "pypi",
          "name": "pyht"
        }
      ],
      "auth": "api-key",
      "authNotes": "Two headers, `X-USER-ID` and `AUTHORIZATION` with the secret key, both from the dashboard. The endpoints no longer answer.",
      "pricing": "paid",
      "pricingNotes": "Sold as monthly API plans named Hacker or Pro, Startup, Growth and Enterprise, with rate limits set by plan. The plan prices couldn't be recovered from a primary source, since the API pricing tab wasn't archived and play.ht is gone. The last archived pricing page shows Studio plans only (https://web.archive.org/web/20250625003728/https://play.ht/pricing/).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "Service shut down. No x402 or machine payment was ever documented (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 218,
        "npmWeekly": 14219,
        "pypiWeekly": 6561,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.play.ht/reference/api-getting-started",
      "llmsTxt": "https://docs.play.ht/llms.txt",
      "capabilities": [
        "speech.tts",
        "speech.streaming",
        "speech.voices",
        "speech.languages"
      ],
      "tags": [
        "closed-source",
        "retired",
        "python",
        "typescript"
      ],
      "lastRelease": "2025-05-21",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 4.1,
        "grade": "F",
        "agentReady": false,
        "rank": 0,
        "ranked": false,
        "notRankedWhy": "Shut down 2025-12-31, so out of the ranking",
        "rankOf": 1243,
        "categoryRank": 21,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 0,
          "maintenance": 0,
          "payments": 0,
          "reliability": 0,
          "schema": 31,
          "security": 0,
          "transparency": 35
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-17"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-10-01, still the case on 2026-10-17. docs.play.ht documents `POST /api/v2/tts/stream`, the WebSocket API and batch jobs with no shutdown notice, and its llms.txt indexes them as live, while api.play.ht doesn't resolve and the platform closed on 2025-12-31. An endpoint removed while still advertised. https://docs.play.ht/reference/api-getting-started.md and https://inworld.ai/resources/migrate-from-playht"
        ],
        "verdict": "The old API reference is still readable at docs.play.ht for anyone porting code. api.play.ht doesn't resolve, so every call fails.",
        "strengths": [
          "The old API reference is still readable at docs.play.ht for anyone porting code",
          "SDKs remain on GitHub under Apache-2.0"
        ],
        "weaknesses": [
          "api.play.ht doesn't resolve, so every call fails",
          "docs.play.ht and its llms.txt document live-looking endpoints with no shutdown notice",
          "Accounts, audio and voice clones were reportedly deleted at shutdown with no export",
          "No notice from PlayHT itself found on the live site, only third-party migration guides"
        ],
        "agentNotes": [
          "Don't call api.play.ht, it doesn't resolve.",
          "Ignore docs.play.ht code samples, its llms.txt and the OpenAPI fragments, they describe a closed service.",
          "Map PlayDialog or Play 3.0 Mini work to another TTS listing before writing code."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 1,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 4.1
          }
        ],
        "editorialScores": {
          "ergonomics": 0,
          "maintenance": 0,
          "payments": 0,
          "reliability": 0,
          "schema": 31,
          "security": 0,
          "transparency": 5
        },
        "provenanceScore": 65,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-17",
            "maintenance": "2026-10-17",
            "payments": "2026-10-17",
            "reliability": "2026-10-17",
            "schema": "2026-10-17",
            "security": "2026-10-17",
            "transparency": "2026-10-17"
          },
          "last": "2026-10-17",
          "lastMoved": "2026-10-27",
          "oldest": "2026-10-17",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "# Retired. api.play.ht no longer resolves.\ncurl -X POST https://api.play.ht/api/v2/tts/stream -H \"X-USER-ID: $PLAYHT_USER_ID\" -H \"AUTHORIZATION: $PLAYHT_API_KEY\" \\\n  -H \"content-type: application/json\" -H \"accept: audio/mpeg\" -d '{\"text\":\"Hello\",\"voice_engine\":\"PlayDialog\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/speech.tts",
        "tool": "https://letme.dev/playht-tts"
      },
      "sameCompany": [
        "playht-voice-cloning"
      ],
      "area": "voice",
      "retired": "2025-12-31",
      "provenance": {
        "legalEntity": "PlayHT, Inc.",
        "domain": "play.ht",
        "domainRegistered": "2016-11-29",
        "endpointOnVendorDomain": true,
        "terms": "https://web.archive.org/web/20250222123504/https://play.ht/terms/",
        "privacy": "https://web.archive.org/web/20250202131353/https://play.ht/privacy/",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-10-17",
        "notes": [
          "On 2026-10-17 play.ht and api.play.ht didn't resolve from our network, while docs.play.ht still served the API reference, Markdown copies with OpenAPI fragments and an llms.txt, with no shutdown notice",
          "On 2026-10-01 a fetch of play.ht returned the old marketing page, so the domain may resolve for some networks or that fetch came from a cache",
          "Terms and privacy links point to Internet Archive copies from February 2025"
        ],
        "score": 65
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/playht-tts.json"
    },
    "facts": [
      {
        "a": "Model API",
        "b": "Model API",
        "name": "Kind"
      },
      {
        "a": "Inworld AI",
        "b": "PlayHT",
        "name": "Vendor"
      },
      {
        "a": "https://api.inworld.ai",
        "b": "https://api.play.ht/api/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, websocket",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "$12.50 per 1M characters",
        "b": "not published",
        "name": "Price for text-to-speech"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Inworld's Terms of Service. The Node.js SDK `@inworld/tts` and the CLI `@inworld/cli` are MIT on npm",
        "b": "Apache-2.0 (Python SDK)",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-28",
        "b": "2025-05-21",
        "name": "Last release"
      },
      {
        "a": "2025-06-11",
        "b": "2023-06-01",
        "name": "Terms last updated"
      },
      {
        "a": "2026-01-18",
        "b": "2021-06-19",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "3.6k npm/wk",
        "b": "218 stars, 14k npm/wk, 6.6k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "1/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Inworld Realtime TTS-2 scores 58.3 (C) on agent readiness against PlayHT Text-to-Speech API's 4.1 (F), and leads in every scored category.",
        "question": "Which is better for AI agents, Inworld Realtime TTS-2 or PlayHT Text-to-Speech API?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do Inworld Realtime TTS-2 and PlayHT Text-to-Speech API need an API key?"
      },
      {
        "answer": "Yes. Inworld Realtime TTS-2 has a hosted endpoint at https://api.inworld.ai and PlayHT Text-to-Speech API at https://api.play.ht/api/v2.",
        "question": "Can an agent call Inworld Realtime TTS-2 and PlayHT Text-to-Speech API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 62 against 0",
          "Schema \u0026 documentation, 60 against 31",
          "Agent ergonomics, 68 against 0",
          "Security \u0026 auth, 61 against 0",
          "Payments \u0026 pricing, 40 against 0",
          "Maintenance \u0026 community, 68 against 0",
          "Transparency \u0026 trust, 63 against 35"
        ],
        "also": [
          "Still running. PlayHT Text-to-Speech API has shut down",
          "Free to start without a card"
        ],
        "goodFor": "Agents that generate replies or stories at runtime and want delivery chosen from context without writing tags, and for per-message or pre-generated audio.",
        "slug": "inworld-tts",
        "watchFor": "No OpenAPI or other machine-readable contract was found for the TTS API"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Nothing new. It shut down on 2025-12-31.",
        "slug": "playht-tts",
        "watchFor": "api.play.ht doesn't resolve, so every call fails"
      }
    ],
    "job": {
      "capability": "speech.tts",
      "name": "Text-to-speech"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-inworld-tts.json",
        "title": "Amazon Polly vs Inworld Realtime TTS-2",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-inworld-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-playht-tts.json",
        "title": "Amazon Polly vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-text-to-speech-vs-inworld-tts.json",
        "title": "Azure AI Speech text-to-speech vs Inworld Realtime TTS-2",
        "url": "https://www.anchorterminal.com/compare/azure-text-to-speech-vs-inworld-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-text-to-speech-vs-playht-tts.json",
        "title": "Azure AI Speech text-to-speech vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/azure-text-to-speech-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cartesia-tts-vs-inworld-tts.json",
        "title": "Cartesia Sonic TTS API + MCP vs Inworld Realtime TTS-2",
        "url": "https://www.anchorterminal.com/compare/cartesia-tts-vs-inworld-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cartesia-tts-vs-playht-tts.json",
        "title": "Cartesia Sonic TTS API + MCP vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/cartesia-tts-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepgram-tts-vs-inworld-tts.json",
        "title": "Deepgram Text-to-Speech (Aura-2, Flux TTS) vs Inworld Realtime TTS-2",
        "url": "https://www.anchorterminal.com/compare/deepgram-tts-vs-inworld-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepgram-tts-vs-playht-tts.json",
        "title": "Deepgram Text-to-Speech (Aura-2, Flux TTS) vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/deepgram-tts-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/elevenlabs-tts-vs-inworld-tts.json",
        "title": "ElevenLabs Text to Speech API + MCP vs Inworld Realtime TTS-2",
        "url": "https://www.anchorterminal.com/compare/elevenlabs-tts-vs-inworld-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/elevenlabs-tts-vs-playht-tts.json",
        "title": "ElevenLabs Text to Speech API + MCP vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/elevenlabs-tts-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts.json",
        "title": "Fish Audio TTS API vs Inworld Realtime TTS-2",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-playht-tts.json",
        "title": "Fish Audio TTS API vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heygen-voice-vs-inworld-tts.json",
        "title": "HeyGen Voice vs Inworld Realtime TTS-2",
        "url": "https://www.anchorterminal.com/compare/heygen-voice-vs-inworld-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/heygen-voice-vs-playht-tts.json",
        "title": "HeyGen Voice vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/heygen-voice-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inworld-tts-vs-murf-tts.json",
        "title": "Inworld Realtime TTS-2 vs Murf TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/inworld-tts-vs-murf-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inworld-tts-vs-resemble-ai-tts.json",
        "title": "Inworld Realtime TTS-2 vs Resemble AI Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/inworld-tts-vs-resemble-ai-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inworld-tts-vs-rime-tts.json",
        "title": "Inworld Realtime TTS-2 vs Rime TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/inworld-tts-vs-rime-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inworld-tts-vs-soniox-tts.json",
        "title": "Inworld Realtime TTS-2 vs Soniox Text-to-Speech",
        "url": "https://www.anchorterminal.com/compare/inworld-tts-vs-soniox-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/murf-tts-vs-playht-tts.json",
        "title": "Murf TTS API + MCP vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/murf-tts-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playht-tts-vs-resemble-ai-tts.json",
        "title": "PlayHT Text-to-Speech API vs Resemble AI Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/playht-tts-vs-resemble-ai-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playht-tts-vs-rime-tts.json",
        "title": "PlayHT Text-to-Speech API vs Rime TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/playht-tts-vs-rime-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playht-tts-vs-soniox-tts.json",
        "title": "PlayHT Text-to-Speech API vs Soniox Text-to-Speech",
        "url": "https://www.anchorterminal.com/compare/playht-tts-vs-soniox-tts"
      }
    ],
    "scores": [
      {
        "by": 62,
        "edge": "inworld-tts",
        "inworld-tts": 62,
        "key": "reliability",
        "name": "Reliability",
        "playht-tts": 0,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 29,
        "edge": "inworld-tts",
        "inworld-tts": 60,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "playht-tts": 31,
        "weight": 13
      },
      {
        "by": 68,
        "edge": "inworld-tts",
        "inworld-tts": 68,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "playht-tts": 0,
        "weight": 13
      },
      {
        "by": 61,
        "edge": "inworld-tts",
        "inworld-tts": 61,
        "key": "security",
        "name": "Security \u0026 auth",
        "playht-tts": 0,
        "weight": 14
      },
      {
        "by": 40,
        "edge": "inworld-tts",
        "inworld-tts": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "playht-tts": 0,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 68,
        "edge": "inworld-tts",
        "inworld-tts": 68,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "playht-tts": 0,
        "weight": 7
      },
      {
        "by": 28,
        "edge": "inworld-tts",
        "inworld-tts": 63,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "playht-tts": 35,
        "weight": 7
      }
    ],
    "summary": "PlayHT Text-to-Speech API shut down on 2025-12-31. Inworld Realtime TTS-2 scores 58.3 (C) on agent readiness against PlayHT Text-to-Speech API's 4.1 (F), and leads in every scored category. Both do text-to-speech.",
    "tutorials": [],
    "verdicts": {
      "inworld-tts": "TTS-2 takes bracketed steering, and opt-in Reasoning writes a delivery direction from the text and up to 600 characters of context, returning it in the response. Per-character prices are public and the free plan needs no card. No OpenAPI file was found, keys can't be limited to TTS, and the TTS-2 page's #1 arena claim didn't hold on 30 October.",
      "playht-tts": "The old API reference is still readable at docs.play.ht for anyone porting code. api.play.ht doesn't resolve, so every call fails."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/inworld-tts-vs-playht-tts",
    "json": "https://www.anchorterminal.com/compare/inworld-tts-vs-playht-tts.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/inworld-tts-vs-playht-tts.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/inworld-tts-vs-playht-tts.min.md"
  },
  "markdown": "PlayHT Text-to-Speech API shut down on 2025-12-31. Inworld Realtime TTS-2 scores 58.3 (C) on agent readiness against PlayHT Text-to-Speech API's 4.1 (F), and leads in every scored category. Both do text-to-speech.\n\n- Inworld Realtime TTS-2: grade C, 58.3/100, rank #687 of 1243. Markdown https://www.anchorterminal.com/tools/inworld-tts.md · JSON https://www.anchorterminal.com/api/v1/tools/inworld-tts.json\n- PlayHT Text-to-Speech API: grade F, 4.1/100, rank retired, not ranked. Markdown https://www.anchorterminal.com/tools/playht-tts.md · JSON https://www.anchorterminal.com/api/v1/tools/playht-tts.json\n- Best text-to-speech APIs for AI agents: https://www.anchorterminal.com/best/text-to-speech/index.md\n- All 106 tts comparisons: https://www.anchorterminal.com/compare/text-to-speech/index.md\n\n## Which one, for what\n\n### Inworld Realtime TTS-2 (C)\n\nGood for: Agents that generate replies or stories at runtime and want delivery chosen from context without writing tags, and for per-message or pre-generated audio.\n\nAhead on:\n- Reliability, 62 against 0\n- Schema \u0026 documentation, 60 against 31\n- Agent ergonomics, 68 against 0\n- Security \u0026 auth, 61 against 0\n- Payments \u0026 pricing, 40 against 0\n- Maintenance \u0026 community, 68 against 0\n- Transparency \u0026 trust, 63 against 35\n\nAlso in its favour:\n- Still running. PlayHT Text-to-Speech API has shut down\n- Free to start without a card\n\nWatch for: No OpenAPI or other machine-readable contract was found for the TTS API\n\n### PlayHT Text-to-Speech API (F)\n\nGood for: Nothing new. It shut down on 2025-12-31.\n\nWatch for: api.play.ht doesn't resolve, so every call fails\n\n\n## Score by category\n\n| Category | Weight | Inworld Realtime TTS-2 | PlayHT Text-to-Speech API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 62 | 0 | Inworld Realtime TTS-2 +62 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 60 | 31 | Inworld Realtime TTS-2 +29 |\n| Agent ergonomics | 13% (16.2 this run) | 68 | 0 | Inworld Realtime TTS-2 +68 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 0 | Inworld Realtime TTS-2 +61 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 0 | Inworld Realtime TTS-2 +40 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 68 | 0 | Inworld Realtime TTS-2 +68 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 63 | 35 | Inworld Realtime TTS-2 +28 |\n| Negative events | ≤15 | -2 | -4 | |\n| **Total** | | **58.3 · C** | **4.1 · F** | |\n\n## Facts side by side\n\n| Fact | Inworld Realtime TTS-2 | PlayHT Text-to-Speech API |\n| --- | --- | --- |\n| Kind | Model API | Model API |\n| Vendor | Inworld AI | PlayHT |\n| Hosted endpoint | `https://api.inworld.ai` | `https://api.play.ht/api/v2` |\n| Transports | HTTP, websocket | HTTP |\n| Auth | API key | API key |\n| Pricing | Freemium | Paid |\n| Price for text-to-speech | $12.50 per 1M characters | not published |\n| x402 | no | no |\n| Licence | Proprietary service under Inworld's Terms of Service. The Node.js SDK `@inworld/tts` and the CLI `@inworld/cli` are MIT on npm | Apache-2.0 (Python SDK) |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-28 | 2025-05-21 |\n| Terms last updated | 2025-06-11 | 2023-06-01 |\n| Privacy policy last updated | 2026-01-18 | 2021-06-19 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 3.6k npm/wk | 218 stars, 14k npm/wk, 6.6k PyPI/wk |\n| Agent reviews | none | 1/5 (2) |\n\n## Verdicts\n\n**Inworld Realtime TTS-2.** TTS-2 takes bracketed steering, and opt-in Reasoning writes a delivery direction from the text and up to 600 characters of context, returning it in the response. Per-character prices are public and the free plan needs no card. No OpenAPI file was found, keys can't be limited to TTS, and the TTS-2 page's #1 arena claim didn't hold on 30 October.\n\n**PlayHT Text-to-Speech API.** The old API reference is still readable at docs.play.ht for anyone porting code. api.play.ht doesn't resolve, so every call fails.\n\n## Before you call either\n\n### Inworld Realtime TTS-2\n\n1. Send the copied Base64 credential as-is in `Authorization: Basic`. Don't encode it again.\n2. Set `modelId` explicitly, because SDK defaults may name deprecated models.\n3. Keep text under 2,000 UTF-16 units on `/tts/v1/voice` and 4,000 on `voice:stream`, or use an async job.\n4. Turn on Reasoning with `synthesisContext.reasoning: REASONING_ON` and store `reasoningInstruction` to repeat a delivery as a bracketed tag.\n5. On 429 or error code 8, back off exponentially with jitter. No Retry-After header is documented.\n\n### PlayHT Text-to-Speech API\n\n1. Don't call api.play.ht, it doesn't resolve.\n2. Ignore docs.play.ht code samples, its llms.txt and the OpenAPI fragments, they describe a closed service.\n3. Map PlayDialog or Play 3.0 Mini work to another TTS listing before writing code.\n\n## Questions\n\n### Which is better for AI agents, Inworld Realtime TTS-2 or PlayHT Text-to-Speech API?\n\nInworld Realtime TTS-2 scores 58.3 (C) on agent readiness against PlayHT Text-to-Speech API's 4.1 (F), and leads in every scored category.\n\n### Do Inworld Realtime TTS-2 and PlayHT Text-to-Speech API need an API key?\n\nBoth need an API key.\n\n### Can an agent call Inworld Realtime TTS-2 and PlayHT Text-to-Speech API without installing anything?\n\nYes. Inworld Realtime TTS-2 has a hosted endpoint at https://api.inworld.ai and PlayHT Text-to-Speech API at https://api.play.ht/api/v2.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/inworld-tts-vs-playht-tts.json, and with the fewest tokens: https://www.anchorterminal.com/compare/inworld-tts-vs-playht-tts.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"inworld-tts\", \"b\": \"playht-tts\"}`. From a terminal: `anchor compare inworld-tts playht-tts`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/inworld-tts.json and https://www.anchorterminal.com/api/v1/tools/playht-tts.json\n\n## Other comparisons with Inworld Realtime TTS-2 or PlayHT Text-to-Speech API\n\n- [Amazon Polly vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/amazon-polly-vs-inworld-tts.md)\n- [Amazon Polly vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/amazon-polly-vs-playht-tts.md)\n- [Azure AI Speech text-to-speech vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/azure-text-to-speech-vs-inworld-tts.md)\n- [Azure AI Speech text-to-speech vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/azure-text-to-speech-vs-playht-tts.md)\n- [Cartesia Sonic TTS API + MCP vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/cartesia-tts-vs-inworld-tts.md)\n- [Cartesia Sonic TTS API + MCP vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/cartesia-tts-vs-playht-tts.md)\n- [Deepgram Text-to-Speech (Aura-2, Flux TTS) vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/deepgram-tts-vs-inworld-tts.md)\n- [Deepgram Text-to-Speech (Aura-2, Flux TTS) vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/deepgram-tts-vs-playht-tts.md)\n- [ElevenLabs Text to Speech API + MCP vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/elevenlabs-tts-vs-inworld-tts.md)\n- [ElevenLabs Text to Speech API + MCP vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/elevenlabs-tts-vs-playht-tts.md)\n- [Fish Audio TTS API vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts.md)\n- [Fish Audio TTS API vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/fish-audio-tts-vs-playht-tts.md)\n- [HeyGen Voice vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/heygen-voice-vs-inworld-tts.md)\n- [HeyGen Voice vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/heygen-voice-vs-playht-tts.md)\n- [Inworld Realtime TTS-2 vs Murf TTS API + MCP](https://www.anchorterminal.com/compare/inworld-tts-vs-murf-tts.md)\n- [Inworld Realtime TTS-2 vs Resemble AI Text-to-Speech API](https://www.anchorterminal.com/compare/inworld-tts-vs-resemble-ai-tts.md)\n- [Inworld Realtime TTS-2 vs Rime TTS API + MCP](https://www.anchorterminal.com/compare/inworld-tts-vs-rime-tts.md)\n- [Inworld Realtime TTS-2 vs Soniox Text-to-Speech](https://www.anchorterminal.com/compare/inworld-tts-vs-soniox-tts.md)\n- [Murf TTS API + MCP vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/murf-tts-vs-playht-tts.md)\n- [PlayHT Text-to-Speech API vs Resemble AI Text-to-Speech API](https://www.anchorterminal.com/compare/playht-tts-vs-resemble-ai-tts.md)\n- [PlayHT Text-to-Speech API vs Rime TTS API + MCP](https://www.anchorterminal.com/compare/playht-tts-vs-rime-tts.md)\n- [PlayHT Text-to-Speech API vs Soniox Text-to-Speech](https://www.anchorterminal.com/compare/playht-tts-vs-soniox-tts.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-31",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Inworld Realtime TTS-2 vs PlayHT Text-to-Speech API",
        "url": ""
      }
    ],
    "description": "Inworld Realtime TTS-2 scores 58.3 (C) to PlayHT Text-to-Speech's 4.1 (F) for text-to-speech. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Inworld Realtime TTS-2 C 58.3",
      "PlayHT Text-to-Speech API F 4.1",
      "scores"
    ],
    "h1": "Inworld Realtime TTS-2 vs PlayHT Text-to-Speech API",
    "image": "https://www.anchorterminal.com/assets/og/compare-inworld-tts-vs-playht-tts.png",
    "path": "/compare/inworld-tts-vs-playht-tts",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Inworld Realtime TTS-2 vs PlayHT Text-to-Speech for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-31",
    "url": "https://www.anchorterminal.com/compare/inworld-tts-vs-playht-tts"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 730
  },
  "version": 1
}
