Fish Audio API
Fish Audio API access for expressive multilingual and production-grade text-to-speech with managed MP3 or WAV output.
curl -X POST https://runapi.ai/api/v1/fish_audio/text_to_speech \
-H "Authorization: Bearer $RUNAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "s1",
"text": "Turn this short documentary narration into expressive, natural speech with consistent pacing."
}'
import { FishAudioClient } from "@runapi.ai/fish-audio";
const client = new FishAudioClient();
const result = await client.textToSpeech.run({
model: "s1",
text: "Turn this short documentary narration into expressive, natural speech with consistent pacing.",
});
require "runapi/fish_audio"
client = RunApi::FishAudio::Client.new
result = client.text_to_speech.run(
model: "s1",
text: "Turn this short documentary narration into expressive, natural speech with consistent pacing."
)
npx skills add runapi-ai/fish-audio -g
# Claude Code
claude mcp add runapi -s user -- npx -y @runapi.ai/mcp
# Codex
codex plugin install runapi-mcp@agents
# Cursor / Windsurf / VS Code
npx @runapi.ai/mcp init cursor
Fish Audio converts text into speech through a synchronous RunAPI endpoint. Choose s1 for expressive conversational or narrative audio, s2.1-pro as the recommended production model with 83 languages and natural-language expression control, or s2-pro for previous-generation workflows.
- Multiple variants for different speed, quality, and cost tiers
- Model skill includes docs, schemas, pricing, and setup notes
- Works with Claude Code, Codex, Gemini CLI, Cursor, and VS Code
- Single API key and unified billing across all variants
- Async task management with polling and webhook callbacks
- Failed generations are not charged
Compare all API variants
Utility endpoints
Shared endpoints for this model line, such as extension, enhancement, or conversion actions.
Install the Fish Audio skill for app development
Load the model docs, schemas, pricing notes, and setup steps into your coding workspace.
# Install the model skill for app development workflows
npx skills add runapi-ai/fish-audio -g
Install the Fish Audio skill for this app: 1. Add runapi-ai/fish-audio with the skills installer. 2. Load SKILL.md in this workspace. 3. Use its docs, schemas, pricing notes, and setup steps when adding model features. 4. Confirm the install path when done.
From model skill to first result in four steps
Choose a model
Browse the model catalog and pick the model and variant that match your output type, quality bar, and latency target. Each variant page shows its model ID, pricing, and parameter constraints so you can compare before committing.
Configure
Set your RunAPI API key as an environment variable and install the model skill in your coding workspace. The skill loads docs, typed schemas, pricing notes, and setup steps so your agent has the right context from the start.
Call
Use the skill instructions to add the model feature inside your application. Send a POST request with your prompt, model ID, and parameters. RunAPI routes the request, manages the async lifecycle, and returns structured JSON.
Receive
Poll by task ID for completion, stream results end-to-end when supported, or configure a webhook callback URL to receive results automatically. The CLI provides a built-in wait command, and the SDKs offer both polling and callback patterns.
What is the Fish Audio API?
Fish Audio provides text-to-speech models for expressive dialogue and dependable production voice workflows. RunAPI validates each result and returns a managed MP3 or WAV URL with audio metadata.
Why route the Fish Audio API through RunAPI
One auth, every provider
A single RunAPI API key unlocks the whole model catalog across all providers. No separate accounts to create, no API keys to rotate per integration, and no credential management overhead. Add a new model to your app by changing one parameter.
Unified pricing & billing
Per-call pricing in USD, billed monthly into a single invoice. No subscription tiers, no minimum spend, and failed generations are never charged. The pricing page and check_pricing API show exact costs before you commit to a model.
Schema-first SDK
Typed schemas, parameter constraints, and setup notes are packaged in the model skill so your implementation starts from the right contract. The skill loads into Claude Code, Codex, Gemini CLI, Cursor, and VS Code — your agent knows the correct request shape before you write a line of code.
Common questions
What is the difference between s1, s2-pro, and s2.1-pro?
s1 targets expressive conversational and narrative speech. s2.1-pro is recommended for production TTS with 83 languages and natural-language expression control; s2-pro remains available for previous-generation workflows.
What audio format does Fish Audio return?
Requests return MP3 by default and can select WAV. The RunAPI response includes accurate format, MIME type, and byte-size metadata.
Can I guide the voice with a reference sample?
You can try a returned RunAPI voice_id in later text-to-speech requests, but availability is not guaranteed. For one request only, pass reference samples with base64 audio and exact transcripts through references.
Is the generated audio hosted by RunAPI?
Yes. RunAPI validates and stores the result before returning a managed audio URL.
Do I need to poll for completion?
No. The endpoint is synchronous and returns the completed audio result in the successful response.
Which variant should I start with?
Pick the cheapest variant that meets your quality bar. Most teams start on the fast variant and graduate to pro for production.
Is there a free tier?
New accounts get free first calls on every model. After that, pay per call.
Do you stream results?
Where streaming is available, RunAPI streams end-to-end.
How are failures billed?
Failed generations are not charged.
Are outputs cached?
Generated outputs are stored and retrievable by task ID. Inputs are not cached.
Can I use commercially?
Yes — commercial use is included for every variant unless a model license explicitly restricts it, which is called out on the variant page.
What about rate limits?
Per-key rate limits scale with usage tier. See pricing page for current limits.
Where can I report issues?
Open an issue on the public GitHub repo or email support.