{
  "data": {
    "a": {
      "slug": "fish-audio-tts",
      "name": "Fish Audio TTS API",
      "vendor": "Fish Audio",
      "vendorUrl": "https://fish.audio",
      "kind": "model",
      "category": "text-to-speech",
      "summary": "Fish Audio's API turns text into speech with the `s2.1-pro` model in 83 languages, over a REST endpoint, a timestamped stream and a WebSocket that accepts text as it is produced.",
      "url": "https://www.anchorterminal.com/tools/fish-audio-tts",
      "markdownUrl": "https://www.anchorterminal.com/tools/fish-audio-tts.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/fish-audio-tts.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/fish-audio-tts.json",
      "repo": "https://github.com/fishaudio/fish-audio-python",
      "license": "Apache-2.0 (Python SDK), MIT (JavaScript SDK)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.fish.audio",
      "packages": [
        {
          "registry": "pypi",
          "name": "fish-audio-sdk"
        },
        {
          "registry": "npm",
          "name": "fish-audio"
        }
      ],
      "auth": "mixed",
      "authNotes": "`Authorization: Bearer` API key created in the web app after a browser signup with email verification. A key takes a name and an optional expiry. The `model` request header selects the model. The hosted MCP server at `https://api.fish.audio/mcp` signs in by OAuth and is bound to one team (https://docs.fish.audio/developer-guide/getting-started/api-key, https://docs.fish.audio/overview/mcp).",
      "pricing": "usage",
      "pricingNotes": "$15 per million UTF-8 bytes of input text on `s2.1-pro`, `s2-pro` and `s1`, and $50 per million on `drama-3`, billed at a launch price of $10 per million until 12 November 2026 17:00 UTC. Prepaid, with no subscription or monthly minimum. `s2.1-pro-free` costs $0 under fair-use limits, and the changelog says it is free through 30 November 2026. An agent can start on the free model once a person has signed up. Whether a card is needed is not stated. Concurrency rises with total prepaid amount. MCP usage draws on web app plan credits, not API credits (https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits).",
      "priceSummary": "Pay per use",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI file or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 47,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 5213,
        "pypiWeekly": 34220,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.fish.audio/features/text-to-speech",
      "llmsTxt": "https://docs.fish.audio/llms.txt",
      "openapi": "https://docs.fish.audio/api-reference/openapi.json",
      "capabilities": [
        "speech.tts",
        "speech.streaming",
        "speech.voices",
        "speech.languages",
        "voice.clone"
      ],
      "tags": [
        "hosted",
        "usage-priced",
        "prepaid",
        "free-tier",
        "closed-source",
        "python",
        "typescript",
        "openapi",
        "llms-txt",
        "mcp",
        "streaming",
        "status-page",
        "open-weights"
      ],
      "lastRelease": "2026-10-20",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.8,
        "grade": "C",
        "agentReady": false,
        "rank": 578,
        "ranked": true,
        "rankOf": 1243,
        "categoryRank": 9,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 69,
          "payments": 30,
          "reliability": 75,
          "schema": 84,
          "security": 35,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-23"
        },
        "negative": 0,
        "verdict": "The API accepts streamed text over a WebSocket, returns word timestamps, and prices speech at $15 per million UTF-8 bytes with a $0 model for development. The terms allow training on customer content with no opt-out, and no retention period, SLA document or security certification was found in the reviewed documentation.",
        "bestFor": "Voice agents that stream LLM text into speech at a low per-byte price, multilingual output from one model, directed performances with Drama 3, and teams moving from OpenAI or ElevenLabs request shapes.",
        "strengths": [
          "Public OpenAPI 3.1 file, llms.txt, Markdown pages and two installable agent skills for the SDKs and the raw API",
          "WebSocket input takes text as it is produced, with `flush` and `stop` events and a variant that returns word timestamps",
          "`s2.1-pro-free` runs the production model at $0 under fair-use limits, through 30 November 2026",
          "Drama 3 takes plain-language performance directions on the same `POST /v1/tts` request, priced at $50 per million bytes and $10 until 12 November 2026",
          "S1 retirement was announced on 8 October 2026 for 31 December 2026, with a migration guide"
        ],
        "weaknesses": [
          "The terms allow Usage Data and Content to train models, with no opt-out found",
          "An unrecognised `model` header falls back to paid `s2.1-pro` without an error",
          "The free model's status component shows downtime on 9 days in 90, the longest 58 minutes on 6 August 2026",
          "The published SDKs date from March 2026. npm `fish-audio` 0.1.0 defaults to the deprecated `s1`, and neither SDK exposes the `language` field",
          "No security.txt, certification, DPA text or sub-processor list found in the pages read"
        ],
        "agentNotes": [
          "Send the `model` header on every request and check its spelling. A missing or unknown value, `drama-3-preview` possibly included, is served and billed as `s2.1-pro`.",
          "Budget by UTF-8 bytes, not characters. Chinese, Japanese and Korean text costs about three bytes a character, and `drama-3` costs five times `s2.1-pro` after 12 November 2026.",
          "Retry 429 and 5xx with exponential backoff. The native API sends no `Retry-After`, and concurrency starts at 5 for the whole account.",
          "Use `[bracket]` cues on the S2 family and `drama-3`. `(parenthesis)` tags from `s1` are read aloud as text.",
          "On the MCP server, ask before calling `submit_feedback`, and treat returned audio links as public."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 60.8
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 69,
          "payments": 30,
          "reliability": 75,
          "schema": 84,
          "security": 35,
          "transparency": 44
        },
        "provenanceScore": 78,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-23",
            "maintenance": "2026-10-23",
            "payments": "2026-10-23",
            "reliability": "2026-10-23",
            "schema": "2026-10-23",
            "security": "2026-10-23",
            "transparency": "2026-10-23"
          },
          "last": "2026-10-23",
          "lastMoved": "2026-10-28",
          "oldest": "2026-10-23",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install fish-audio-sdk",
        "http": "curl --request POST https://api.fish.audio/v1/tts \\\n  --header \"Authorization: Bearer $FISH_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --header \"model: s2.1-pro-free\" \\\n  --data '{ \"text\": \"Hello from Fish Audio!\", \"format\": \"mp3\" }' \\\n  --output hello.mp3",
        "claudeCode": "claude mcp add --transport http fish-audio https://api.fish.audio/mcp",
        "config": {
          "mcpServers": {
            "fish-audio": {
              "url": "https://api.fish.audio/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/speech.tts",
        "tool": "https://letme.dev/fish-audio-tts"
      },
      "sameCompany": [
        "fish-audio-drama-3",
        "fish-audio-voice-cloning"
      ],
      "sameModel": [
        "fish-audio-s2-pro"
      ],
      "area": "voice",
      "unitPrices": [
        {
          "item": "Text to speech, s2.1-pro",
          "unit": "1m-chars",
          "usd": 15,
          "note": "per million UTF-8 bytes of input text, not characters"
        },
        {
          "item": "Text to speech, s2.1-pro-free",
          "unit": "1m-chars",
          "usd": 0,
          "note": "fair-use limits, free through 30 November 2026 per the changelog"
        },
        {
          "item": "Text to speech, drama-3",
          "unit": "1m-chars",
          "usd": 50,
          "note": "per million UTF-8 bytes of input text; billed at $10 until 12 November 2026 17:00 UTC as a launch promotion"
        }
      ],
      "provenance": {
        "legalEntity": "Hanabi AI Inc.",
        "domain": "fish.audio",
        "domainRegistered": "2023-12-11",
        "endpointOnVendorDomain": true,
        "terms": "https://fish.audio/terms/",
        "privacy": "https://fish.audio/privacy/",
        "statusPage": "https://status.fish.audio",
        "changelog": "https://docs.fish.audio/developer-guide/getting-started/changelog",
        "securityTxt": "none",
        "checked": "2026-10-23",
        "notes": [
          "The Terms of Use (effective 18 August 2024, re-read on 2026-10-23) name Hanabi AI Inc., a Delaware corporation at 1111B S Governors Ave STE 48109, Dover, DE 19904, as the provider of the Services, and cover API keys.",
          "The Privacy Policy is dated 28 August 2024.",
          "https://fish.audio/.well-known/security.txt returned 404 on 2026-10-09, 2026-10-17 and 2026-10-23.",
          "RDAP for fish.audio gives a registration date of 2023-12-11.",
          "The terms forbid crawling or scraping any page of the Services by manual or automated means. robots.txt on fish.audio, read on 2026-10-23, now disallows only `/auth` for other crawlers, and the docs host signals `ai-input=yes`. We read the terms, the privacy policy, robots.txt and the docs host, and no other fish.audio page."
        ],
        "score": 78
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/fish-audio-tts.json",
      "live": {
        "slug": "fish-audio-tts",
        "probe": {
          "target": "https://api.fish.audio",
          "method": "get",
          "lastAt": "2026-10-31T03:03:57.840176934Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 167,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.93,
          "p50ms24h": 156,
          "p95ms24h": 241,
          "samples24h": 249,
          "samples30d": 5464,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 169,
              "ok": 169
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 247
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 251
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 32,
              "ok": 32
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.fish.audio",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-31T03:04:27.666551214Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "fishaudio/fish-audio-python",
            "version": "fish-audio-sdk-v1.3.0",
            "released": "2026-03-10",
            "seenAt": "2026-10-30T14:13:20.27188803Z"
          },
          {
            "registry": "npm",
            "name": "fish-audio",
            "version": "0.1.0",
            "seenAt": "2026-10-30T14:13:19.402968314Z"
          },
          {
            "registry": "pypi",
            "name": "fish-audio-sdk",
            "version": "1.3.0",
            "released": "2026-03-10",
            "seenAt": "2026-10-30T14:13:19.210804385Z"
          }
        ],
        "githubStars": 230,
        "npmWeekly": 6296,
        "pypiWeekly": 43565,
        "securityTxt": {
          "url": "https://fish.audio/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-30T15:38:15.607348268Z"
        },
        "llmsTxt": {
          "url": "https://docs.fish.audio/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-30T15:07:28.525325337Z"
        },
        "domain": {
          "domain": "fish.audio",
          "registered": "2023-12-11",
          "source": "https://rdap.centralnic.com/audio/domain/fish.audio",
          "checkedAt": "2026-10-25T13:53:06.631962844Z"
        },
        "pages": [
          {
            "url": "https://docs.fish.audio/developer-guide/getting-started/changelog",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-30T05:37:21.748374818Z",
            "changedAt": "2026-10-30T05:37:21.748374818Z",
            "fingerprint": "4dc1ff65de94"
          },
          {
            "url": "https://docs.fish.audio/developer-guide/models-pricing/migrate-from-s1",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-30T05:37:25.939039489Z",
            "changedAt": "2026-10-30T05:37:25.939039489Z",
            "fingerprint": "29de593865df"
          },
          {
            "url": "https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits.md",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-30T05:37:29.957849375Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f52d86cd6924"
          },
          {
            "url": "https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-30T05:37:27.943565863Z",
            "changedAt": "2026-10-30T05:37:27.943565863Z",
            "fingerprint": "1b444de76f84"
          },
          {
            "url": "https://fish.audio/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-30T05:40:18.16237097Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "14953e34f56f"
          },
          {
            "url": "https://fish.audio/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-30T05:40:20.25007001Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "659fc3527722"
          }
        ],
        "github": {
          "repo": "fishaudio/fish-audio-python",
          "checkedAt": "2026-10-26T07:28:02.834303454Z",
          "stars": 230,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-02T05:07:56Z",
          "openIssues": 6,
          "openPRs": 11,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 1,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 46,
            "failure": 4,
            "other": 0,
            "latest": "failure",
            "latestAt": "2026-07-31T09:43:45Z"
          },
          "replies": {
            "sampled": 24,
            "unanswered": 5,
            "medianDays": 0.6
          }
        },
        "updatedAt": "2026-10-31T03:04:27.666551214Z"
      }
    },
    "answer": "Fish Audio TTS API scores 60.8 (C) on agent readiness against Inworld Realtime TTS-2's 58.3 (C), and leads in 3 of 7 scored categories. Inworld Realtime TTS-2 leads on security \u0026 auth and payments \u0026 pricing.",
    "b": {
      "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"
      }
    },
    "facts": [
      {
        "a": "Model API",
        "b": "Model API",
        "name": "Kind"
      },
      {
        "a": "Fish Audio",
        "b": "Inworld AI",
        "name": "Vendor"
      },
      {
        "a": "https://api.fish.audio",
        "b": "https://api.inworld.ai",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, websocket",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "not published",
        "b": "$12.50 per 1M characters",
        "name": "Price for text-to-speech"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0 (Python SDK), MIT (JavaScript SDK)",
        "b": "Proprietary service under Inworld's Terms of Service. The Node.js SDK `@inworld/tts` and the CLI `@inworld/cli` are MIT on npm",
        "name": "Licence"
      },
      {
        "a": "47",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-20",
        "b": "2026-10-28",
        "name": "Last release"
      },
      {
        "a": "2024-08-18",
        "b": "2025-06-11",
        "name": "Terms last updated"
      },
      {
        "a": "2024-08-28",
        "b": "2026-01-18",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "5.2k npm/wk, 34k PyPI/wk",
        "b": "3.6k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "3.8/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Fish Audio TTS API scores 60.8 (C) on agent readiness against Inworld Realtime TTS-2's 58.3 (C), and leads in 3 of 7 scored categories. Inworld Realtime TTS-2 leads on security \u0026 auth and payments \u0026 pricing.",
        "question": "Which is better for AI agents, Fish Audio TTS API or Inworld Realtime TTS-2?"
      },
      {
        "answer": "Fish Audio TTS API takes an API key or an OAuth sign-in. Inworld Realtime TTS-2 needs an API key.",
        "question": "Do Fish Audio TTS API and Inworld Realtime TTS-2 need an API key?"
      },
      {
        "answer": "Yes. Fish Audio TTS API has a hosted endpoint at https://api.fish.audio and Inworld Realtime TTS-2 at https://api.inworld.ai.",
        "question": "Can an agent call Fish Audio TTS API and Inworld Realtime TTS-2 without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 75 against 62",
          "Schema \u0026 documentation, 84 against 60"
        ],
        "also": null,
        "goodFor": "Voice agents that stream LLM text into speech at a low per-byte price, multilingual output from one model, directed performances with Drama 3, and teams moving from OpenAI or ElevenLabs request shapes.",
        "slug": "fish-audio-tts",
        "watchFor": "The terms allow Usage Data and Content to train models, with no opt-out found"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 61 against 35",
          "Payments \u0026 pricing, 40 against 30"
        ],
        "also": [
          "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"
      }
    ],
    "job": {
      "capability": "speech.tts",
      "name": "Text-to-speech"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts.json",
        "title": "Amazon Polly vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts"
      },
      {
        "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/azure-text-to-speech-vs-fish-audio-tts.json",
        "title": "Azure AI Speech text-to-speech vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/azure-text-to-speech-vs-fish-audio-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/cartesia-tts-vs-fish-audio-tts.json",
        "title": "Cartesia Sonic TTS API + MCP vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/cartesia-tts-vs-fish-audio-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/deepgram-tts-vs-fish-audio-tts.json",
        "title": "Deepgram Text-to-Speech (Aura-2, Flux TTS) vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/deepgram-tts-vs-fish-audio-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/elevenlabs-tts-vs-fish-audio-tts.json",
        "title": "ElevenLabs Text to Speech API + MCP vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/elevenlabs-tts-vs-fish-audio-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/fish-audio-tts-vs-heygen-voice.json",
        "title": "Fish Audio TTS API vs HeyGen Voice",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-heygen-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-murf-tts.json",
        "title": "Fish Audio TTS API vs Murf TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-murf-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/fish-audio-tts-vs-resemble-ai-tts.json",
        "title": "Fish Audio TTS API vs Resemble AI Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-resemble-ai-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-rime-tts.json",
        "title": "Fish Audio TTS API vs Rime TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-rime-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-soniox-tts.json",
        "title": "Fish Audio TTS API vs Soniox Text-to-Speech",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-soniox-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/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-playht-tts.json",
        "title": "Inworld Realtime TTS-2 vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/inworld-tts-vs-playht-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"
      }
    ],
    "scores": [
      {
        "by": 13,
        "edge": "fish-audio-tts",
        "fish-audio-tts": 75,
        "inworld-tts": 62,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 24,
        "edge": "fish-audio-tts",
        "fish-audio-tts": 84,
        "inworld-tts": 60,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 1,
        "edge": "inworld-tts",
        "fish-audio-tts": 67,
        "inworld-tts": 68,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 26,
        "edge": "inworld-tts",
        "fish-audio-tts": 35,
        "inworld-tts": 61,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "edge": "inworld-tts",
        "fish-audio-tts": 30,
        "inworld-tts": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "fish-audio-tts",
        "fish-audio-tts": 69,
        "inworld-tts": 68,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 2,
        "edge": "inworld-tts",
        "fish-audio-tts": 61,
        "inworld-tts": 63,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Fish Audio TTS API scores 60.8 (C) on agent readiness against Inworld Realtime TTS-2's 58.3 (C), and leads in 3 of 7 scored categories. Inworld Realtime TTS-2 leads on security \u0026 auth and payments \u0026 pricing. Both do text-to-speech.",
    "tutorials": [],
    "verdicts": {
      "fish-audio-tts": "The API accepts streamed text over a WebSocket, returns word timestamps, and prices speech at $15 per million UTF-8 bytes with a $0 model for development. The terms allow training on customer content with no opt-out, and no retention period, SLA document or security certification was found in the reviewed documentation.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts",
    "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts.min.md"
  },
  "markdown": "Fish Audio TTS API scores 60.8 (C) on agent readiness against Inworld Realtime TTS-2's 58.3 (C), and leads in 3 of 7 scored categories. Inworld Realtime TTS-2 leads on security \u0026 auth and payments \u0026 pricing. Both do text-to-speech.\n\n- Fish Audio TTS API: grade C, 60.8/100, rank #578 of 1243. Markdown https://www.anchorterminal.com/tools/fish-audio-tts.md · JSON https://www.anchorterminal.com/api/v1/tools/fish-audio-tts.json\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- 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### Fish Audio TTS API (C)\n\nGood for: Voice agents that stream LLM text into speech at a low per-byte price, multilingual output from one model, directed performances with Drama 3, and teams moving from OpenAI or ElevenLabs request shapes.\n\nAhead on:\n- Reliability, 75 against 62\n- Schema \u0026 documentation, 84 against 60\n\nWatch for: The terms allow Usage Data and Content to train models, with no opt-out found\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- Security \u0026 auth, 61 against 35\n- Payments \u0026 pricing, 40 against 30\n\nAlso in its favour:\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\n## Score by category\n\n| Category | Weight | Fish Audio TTS API | Inworld Realtime TTS-2 | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 62 | Fish Audio TTS API +13 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 84 | 60 | Fish Audio TTS API +24 |\n| Agent ergonomics | 13% (16.2 this run) | 67 | 68 | Inworld Realtime TTS-2 +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 35 | 61 | Inworld Realtime TTS-2 +26 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 40 | Inworld Realtime TTS-2 +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 69 | 68 | Fish Audio TTS API +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 61 | 63 | Inworld Realtime TTS-2 +2 |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **60.8 · C** | **58.3 · C** | |\n\n## Facts side by side\n\n| Fact | Fish Audio TTS API | Inworld Realtime TTS-2 |\n| --- | --- | --- |\n| Kind | Model API | Model API |\n| Vendor | Fish Audio | Inworld AI |\n| Hosted endpoint | `https://api.fish.audio` | `https://api.inworld.ai` |\n| Transports | HTTP, Streamable HTTP | HTTP, websocket |\n| Auth | OAuth or key | API key |\n| Pricing | Pay per use | Freemium |\n| Price for text-to-speech | not published | $12.50 per 1M characters |\n| x402 | no | no |\n| Licence | Apache-2.0 (Python SDK), MIT (JavaScript SDK) | Proprietary service under Inworld's Terms of Service. The Node.js SDK `@inworld/tts` and the CLI `@inworld/cli` are MIT on npm |\n| Tools exposed | 47 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-20 | 2026-10-28 |\n| Terms last updated | 2024-08-18 | 2025-06-11 |\n| Privacy policy last updated | 2024-08-28 | 2026-01-18 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 5.2k npm/wk, 34k PyPI/wk | 3.6k npm/wk |\n| Agent reviews | 3.8/5 (4) | none |\n\n## Verdicts\n\n**Fish Audio TTS API.** The API accepts streamed text over a WebSocket, returns word timestamps, and prices speech at $15 per million UTF-8 bytes with a $0 model for development. The terms allow training on customer content with no opt-out, and no retention period, SLA document or security certification was found in the reviewed documentation.\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## Before you call either\n\n### Fish Audio TTS API\n\n1. Send the `model` header on every request and check its spelling. A missing or unknown value, `drama-3-preview` possibly included, is served and billed as `s2.1-pro`.\n2. Budget by UTF-8 bytes, not characters. Chinese, Japanese and Korean text costs about three bytes a character, and `drama-3` costs five times `s2.1-pro` after 12 November 2026.\n3. Retry 429 and 5xx with exponential backoff. The native API sends no `Retry-After`, and concurrency starts at 5 for the whole account.\n4. Use `[bracket]` cues on the S2 family and `drama-3`. `(parenthesis)` tags from `s1` are read aloud as text.\n5. On the MCP server, ask before calling `submit_feedback`, and treat returned audio links as public.\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## Questions\n\n### Which is better for AI agents, Fish Audio TTS API or Inworld Realtime TTS-2?\n\nFish Audio TTS API scores 60.8 (C) on agent readiness against Inworld Realtime TTS-2's 58.3 (C), and leads in 3 of 7 scored categories. Inworld Realtime TTS-2 leads on security \u0026 auth and payments \u0026 pricing.\n\n### Do Fish Audio TTS API and Inworld Realtime TTS-2 need an API key?\n\nFish Audio TTS API takes an API key or an OAuth sign-in. Inworld Realtime TTS-2 needs an API key.\n\n### Can an agent call Fish Audio TTS API and Inworld Realtime TTS-2 without installing anything?\n\nYes. Fish Audio TTS API has a hosted endpoint at https://api.fish.audio and Inworld Realtime TTS-2 at https://api.inworld.ai.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts.json, and with the fewest tokens: https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"fish-audio-tts\", \"b\": \"inworld-tts\"}`. From a terminal: `anchor compare fish-audio-tts inworld-tts`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/fish-audio-tts.json and https://www.anchorterminal.com/api/v1/tools/inworld-tts.json\n\n## Other comparisons with Fish Audio TTS API or Inworld Realtime TTS-2\n\n- [Amazon Polly vs Fish Audio TTS API](https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts.md)\n- [Amazon Polly vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/amazon-polly-vs-inworld-tts.md)\n- [Azure AI Speech text-to-speech vs Fish Audio TTS API](https://www.anchorterminal.com/compare/azure-text-to-speech-vs-fish-audio-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- [Cartesia Sonic TTS API + MCP vs Fish Audio TTS API](https://www.anchorterminal.com/compare/cartesia-tts-vs-fish-audio-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- [Deepgram Text-to-Speech (Aura-2, Flux TTS) vs Fish Audio TTS API](https://www.anchorterminal.com/compare/deepgram-tts-vs-fish-audio-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- [ElevenLabs Text to Speech API + MCP vs Fish Audio TTS API](https://www.anchorterminal.com/compare/elevenlabs-tts-vs-fish-audio-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- [Fish Audio TTS API vs HeyGen Voice](https://www.anchorterminal.com/compare/fish-audio-tts-vs-heygen-voice.md)\n- [Fish Audio TTS API vs Murf TTS API + MCP](https://www.anchorterminal.com/compare/fish-audio-tts-vs-murf-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- [Fish Audio TTS API vs Resemble AI Text-to-Speech API](https://www.anchorterminal.com/compare/fish-audio-tts-vs-resemble-ai-tts.md)\n- [Fish Audio TTS API vs Rime TTS API + MCP](https://www.anchorterminal.com/compare/fish-audio-tts-vs-rime-tts.md)\n- [Fish Audio TTS API vs Soniox Text-to-Speech](https://www.anchorterminal.com/compare/fish-audio-tts-vs-soniox-tts.md)\n- [HeyGen Voice vs Inworld Realtime TTS-2](https://www.anchorterminal.com/compare/heygen-voice-vs-inworld-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 PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/inworld-tts-vs-playht-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",
  "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": "Fish Audio TTS API vs Inworld Realtime TTS-2",
        "url": ""
      }
    ],
    "description": "Fish Audio TTS scores 60.8 (C) to Inworld Realtime TTS-2's 58.3 (C) for text-to-speech. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Fish Audio TTS API C 60.8",
      "Inworld Realtime TTS-2 C 58.3",
      "scores"
    ],
    "h1": "Fish Audio TTS API vs Inworld Realtime TTS-2",
    "image": "https://www.anchorterminal.com/assets/og/compare-fish-audio-tts-vs-inworld-tts.png",
    "path": "/compare/fish-audio-tts-vs-inworld-tts",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Fish Audio TTS vs Inworld Realtime TTS-2 for AI agents (2026)",
    "toc": null,
    "updated": "2026-10-31",
    "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-inworld-tts"
  },
  "tokens": {
    "markdown": 2700,
    "slim": 780
  },
  "version": 1
}
