Back to tools
4 endpoints

Human-like, directable text-to-speech (StepAudio 3) with natural-language delivery control, laughter and breath, six languages, system voices, and instant voice cloning from a 5-10 second recording.

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 StepFun.
StepFun
Text to Speech
/text-to-speech

Convert text to natural, directable speech (MP3) with a system or cloned voice.

$0.36–$0.85per 10K characters
0 Markup
StepFun
List System Voices
/voices

List the built-in text-to-speech voices. Free.

Freeno charge
0 Markup
StepFun
Preview Cloned Voice
/voices/preview

Hear a short line in a recording's voice before cloning it. Free.

Freeno charge
0 Markup
StepFun
Clone Voice
/voices/clone

Clone a voice from a 5-10 s recording into a reusable voice id.

$1.5000per 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