Back to tools
8 endpoints

Fish Audio

Low-cost, expressive text-to-speech in 83 languages with a 2M+ community voice library, instant and saved voice cloning, prompt-driven voice design, word-level timings, and speaker-labelled speech-to-text.

Part of Gen AI

Get started by giving this to your agent
$Set up https://monid.ai/SKILL.md, and then use Monid to show me what I can do with Fish Audio.
Fish Audio
Search Voice Library
/voices

Search the public library of 2M+ text-to-speech voices. Free.

Freeno charge
0 Markup
Fish Audio
Clone Voice
/voices/clone

Clone a voice from recordings into a reusable voice_id. Free.

Freeno charge
0 Markup
Fish Audio
Transcribe Audio
/speech-to-text

Transcribe an audio or video recording into text with speaker labels.

$0.36per hour of audio
0 Markup
Fish Audio
Speech with Word Timings
/text-to-speech/timestamps

Convert text to speech (MP3) plus the start and end time of every spoken word.

$0.015–$0.05per 1K bytes
0 Markup
Fish Audio
Get Voice
/voices/get

Get one voice's details and preview samples by voice_id. Free.

Freeno charge
0 Markup
Fish Audio
Design Voice from Prompt
/voice-design

Generate 1–4 candidate voices from a text description of the voice.

$0.0100per call
0 Markup

Try it with your agents

01
Generate campaign assets end to end
Set up https://monid.ai/SKILL.md, and then use Monid to generate a product hero image, a 15-second teaser video, and a voiceover for a smart espresso machine launch.

How-to guides

What does a video clip cost to generate?read the pricing unit before the pricegenerate a five second clip of <shot> with minimax h3-max-turbo at 480P on monid, passing the parameters in the request BODY: every video endpoint here takes a body, and sent as query params none of them run at all. tell me the billed seconds so i can check the price against the rate what came back: a playable 480P clip, five billed seconds, in fifteen seconds of wall clock the spread: the identical five-second prompt is $0.125 here and over $1.40 on the top audio tier the health flag: the cheapest endpoint is marked degraded in the catalog and still answered first try plain inspect crashes on four of these models: it dies mid-pricing with a type error and prints no input schema at all, so an agent told to inspect before running stalls on a model that works; ask for JSON output instead and it answers a dead job can still say COMPLETED: two runs came back with a run status of COMPLETED over a provider response of 500 and a body reading failed. They correctly billed nothing, but anything branching on the run status reports a success that has no file behind it the rule: pick the tier by what the shot needs, because the model choice is an eleven-fold decisionWhat does an image or a 3D mesh cost to generate?price one run, because the ranking reverses between tiersprice one image before you plan a batch: on a token-billed route the bill is dominated by the output-token rate, so read the run's own cost rather than reading the input tier and stopping there. and do not sort the catalog by price without checking: one vendor's tiered entries list an amount of zero while billing three cents an image the gap is the tier you read, not a missing rate: the output-token rate of $0.03 per thousand is 97% of what an image costs, and it IS in the catalog next to the input tiers. An earlier version of this page said the listing omitted it. What is inspect-only is the worked low, medium and high examples so budget from a run: the input tier alone is out by a factor of forty on this route, so one call and its own cost field is the reliable estimate and a cheapest-first sort can point at the dearest: one vendor's tiered entries list a price amount of zero in the catalog while billing three cents an image, which puts a vendor 8.6x dearer at the top of a price sort the cheapest vendor is not down: an earlier version of this page said the lowest-listed vendor 502s on every attempt. On a second run it answered first try and billed $0.0035, which is 1.7x below the floor this page quoted status is not success: that 502 run reported its status as COMPLETED with a null output, so check the payload rather than the stateHow do I give an agent a voice?speak it, read it back, and check the transcriptsay <text> out loud with elevenlabs on monid. it returns a hosted link rather than audio bytes, so download the file in the same run: the link is documented to last an hour and the file a week what comes back: a download link on Monid's own file service, never inline bytes, with a documented one-hour link expiry and a seven-day file expiry asking again is safe: fetching the run a second time mints a fresh link and the old one keeps working, so a link that has expired costs nothing to replace but the file clock does not restart: the seven days run from the original call, not from the refetch, so a fresh link on day seven buys you hours rather than another week and there IS a poll: an earlier version of this page said there is no polling and no job id anywhere here, which contradicts the platform's own documented run-then-poll loop; fetching the run by id IS that poll one field halves it, and you must pass it: naming the faster model cut the bill exactly in half on the same words on both runs, and it produced slightly more audio, so the per-minute gap is a little wider than 2x. Left unset, the default is the dearer model, so the saving is something you ask for rather than something you get the default voice is not in the list: the documented default voice id does not appear among the voices the voice endpoint returns, so pick one from the list rather than relying on the default. The list is account-scoped and came back with 42 and then 44 entries, so read it rather than quoting a count