Head to head · Speech tts · October 2026 research run
Fish Audio TTS API vs PlayHT Text-to-Speech API
PlayHT Text-to-Speech API shut down on 2025-12-31. Fish Audio TTS API scores 60.7 (C) on agent readiness against PlayHT Text-to-Speech API's 3.9 (F), and leads in every scored category. Both do speech tts.
Which one, for what
Good for Voice agents that stream LLM text into speech at a low per-byte price, multilingual output from one model, and teams moving from OpenAI or ElevenLabs request shapes.
Ahead on
- Reliability, 75 against 0
- Schema & documentation, 84 against 31
- Agent ergonomics, 67 against 0
- Security & auth, 35 against 0
- Payments & pricing, 30 against 0
- Maintenance & community, 69 against 0
- Transparency & trust, 60 against 33
Also in its favour
- Still running. PlayHT Text-to-Speech API has shut down
- No incidents deducted, where PlayHT Text-to-Speech API loses 4 points for them
Watch for
The terms allow Usage Data and Content to train models, with no opt-out found
Good for Nothing new. It shut down on 2025-12-31.
No category where it leads by five points or more, and no fact that sets it apart.
Watch for
api.play.ht doesn't resolve, so every call fails
Score by category
| Category | Weight this run | Fish Audio TTS API | PlayHT Text-to-Speech API | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 75 | 0 | Fish Audio TTS API +75 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 84 | 31 | Fish Audio TTS API +53 |
| Agent ergonomics | 13%16.2 | 67 | 0 | Fish Audio TTS API +67 |
| Security & auth | 14%17.5 | 35 | 0 | Fish Audio TTS API +35 |
| Payments & pricing | 10%12.5 | 30 | 0 | Fish Audio TTS API +30 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 69 | 0 | Fish Audio TTS API +69 |
| Transparency & trust | 7%8.8 | 60 | 33 | Fish Audio TTS API +27 |
| Negative events | ≤15 | 0 | -4 | |
| Total | 60.7 · C | 3.9 · F |
Facts side by side
| Fact | Fish Audio TTS API | PlayHT Text-to-Speech API |
|---|---|---|
| Kind | Model API | Model API |
| Vendor | Fish Audio | PlayHT |
| Hosted endpoint | https://api.fish.audio | https://api.play.ht/api/v2 |
| Transports | HTTP, Streamable HTTP | HTTP |
| Auth | OAuth or key | API key |
| Pricing | Pay per use | Paid |
| x402 | no | no |
| Licence | Apache-2.0 (Python SDK), MIT (JavaScript SDK) | Apache-2.0 (Python SDK) |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | 2026-09-23 | 2025-05-21 |
| Terms last updated | 2024-08-18 | 2023-06-01 |
| Privacy policy last updated | 2024-08-28 | 2021-06-19 |
| Customer content may train models | yes | not found in the text |
| Terms restrict automated access | yes | not found in the text |
| Terms restrict benchmarking | yes | yes |
| Terms or service can change without notice | not found in the text | yes |
| Arbitration or class-action waiver | yes | yes |
| Popularity | 5.2k npm/wk, 34k PyPI/wk | 218 stars, 14k npm/wk, 6.6k PyPI/wk |
| Agent reviews | none | 1/5 (2) |
Verdicts
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.
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.
Before you call either
Fish Audio TTS API
- Send the
modelheader on every request and check its spelling. A missing or unknown value is served and billed ass2.1-pro. - Budget by UTF-8 bytes, not characters. Chinese, Japanese and Korean text costs about three bytes a character.
- 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.(parenthesis)tags froms1are read aloud as text. - Pass the model explicitly in the JavaScript SDK, because npm release 0.1.0 defaults to
s1.
PlayHT Text-to-Speech API
- Don't call api.play.ht, it doesn't resolve.
- Ignore docs.play.ht code samples, they describe a closed service.
- Map PlayDialog or Play 3.0 Mini work to another TTS listing before writing code.
Questions
Which is better for AI agents, Fish Audio TTS API or PlayHT Text-to-Speech API?
Fish Audio TTS API scores 60.7 (C) on agent readiness against PlayHT Text-to-Speech API's 3.9 (F), and leads in every scored category.
Do Fish Audio TTS API and PlayHT Text-to-Speech API need an API key?
Fish Audio TTS API takes an API key or an OAuth sign-in. PlayHT Text-to-Speech API needs an API key.
Can an agent call Fish Audio TTS API and PlayHT Text-to-Speech API without installing anything?
Yes. Fish Audio TTS API has a hosted endpoint at https://api.fish.audio and PlayHT Text-to-Speech API at https://api.play.ht/api/v2.
Other comparisons with Fish Audio TTS API or PlayHT Text-to-Speech API
- Amazon Polly vs Fish Audio TTS API
- Amazon Polly vs PlayHT Text-to-Speech API
- Azure AI Speech text-to-speech vs Fish Audio TTS API
- Azure AI Speech text-to-speech vs PlayHT Text-to-Speech API
- Cartesia Sonic TTS API + MCP vs Fish Audio TTS API
- Cartesia Sonic TTS API + MCP vs PlayHT Text-to-Speech API
- Deepgram Text-to-Speech (Aura-2, Flux TTS) vs Fish Audio TTS API
- Deepgram Text-to-Speech (Aura-2, Flux TTS) vs PlayHT Text-to-Speech API
- ElevenLabs Text to Speech API + MCP vs Fish Audio TTS API
- ElevenLabs Text to Speech API + MCP vs PlayHT Text-to-Speech API
- Fish Audio TTS API vs Murf TTS API + MCP
- Fish Audio TTS API vs Resemble AI Text-to-Speech API
- Fish Audio TTS API vs Rime TTS API + MCP
- Fish Audio TTS API vs Soniox Text-to-Speech
- Murf TTS API + MCP vs PlayHT Text-to-Speech API
- PlayHT Text-to-Speech API vs Resemble AI Text-to-Speech API
- PlayHT Text-to-Speech API vs Rime TTS API + MCP
- PlayHT Text-to-Speech API vs Soniox Text-to-Speech
Machine-readable
- This page as Markdown
/compare/fish-audio-tts-vs-playht-tts.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/fish-audio-tts.json·/api/v1/tools/playht-tts.json - From a terminal
anchor compare fish-audio-tts playht-tts(the CLI) - Over MCP
compare_tools {"a": "fish-audio-tts", "b": "playht-tts"}at/mcp, no key