Changelog
Newest-first list of what was added or changed in the API and MCP. Unless noted otherwise, every change is backward compatible (existing requests keep working).
2026-08-03
Final credits for an async job — charge on GET /v1/jobs/{job_id}
There was no way to find out what a job_id-returning task (image, video,
speech-to-text) ultimately cost: GET /v1/usage carries no job_id, and an async
job is billed twice — at submission and at completion — so it is scattered across two
usage entries.
- API:
GET /v1/jobs/{job_id}now returns achargefield — the total credits deducted for that job so far (submission + settled completion). - Once
statusissucceeded, that value is the final amount. While stillprocessingit reflects the submission charge only. - On
failedthe submission charge is refunded, sochargeis0. - MCP: the
get_jobtool passes the same response through, sochargecomes with it. - Existing job records are backfilled from what was already settled.
- Additive, so backward compatible.
2026-07-25
ElevenLabs TTS — previous_text/next_text for intonation, plus seed and apply_text_normalization
Splitting a long script into paragraphs (sections) used to reset the intonation at every section boundary. Each call can now carry the surrounding context so the delivery flows across sections.
- API:
POST /v1/audio/speechgains the optional fieldsprevious_textandnext_text— pass the previous paragraph's last sentence and the next paragraph's first sentence. - MCP: the
text_to_speechtool gains the optional argumentsprevious_textandnext_text. - Neither value is ever spoken — they only shape intonation and pacing.
- They need the neighbouring text, not the neighbouring result, so sections can still be requested in parallel.
- ⚠️ Unavailable when
voice_modeliseleven_v3(rejected upstream). They work oneleven_multilingual_v2andeleven_flash_v2_5; a v3 request returns a clear 422.
Two more optional fields land alongside them (API and MCP, ElevenLabs-only as well):
seed(0–4294967295): the same seed with the same options returns the same audio (best effort). Useful for reproducing a take you liked, or for keeping the tone steady when regenerating a single paragraph.apply_text_normalization(auto·on·off): whether numbers, dates and abbreviations are spelled out.
All four fields are ElevenLabs (modoo-tts-eleven) only; sending them to minimax returns 422.
2026-07-22
size on every image model · audio_setting for music
- Image
size: previously, asizesent tomodoo-image-gpt/modoo-image-gpt-editwas ignored and pinned toauto. All four values now pass through (auto,1024x1024,1536x1024,1024x1536). Notation differs per family — GPT models usex, whilemodoo-image-zand the Qwen edit models usewidth*height(*). A value outside the allowed list now returns a clear 422 instead of an opaque upstream error (per-model lists in the API reference). - Music
audio_setting:POST /v1/audio/musictakes an optionalaudio_setting—sample_rate,bitrate,format. Anything omitted keeps its previous default.lyrics(1–3,500 chars),prompt(≤2,000 chars) andmodel(music-2.5/music-2.0) are now validated at request time. - MCP: the
edit_imagetool takes an optionalsize. - Docs fixes: the
modoo-image-zexample said1024x1024— corrected to1024*1024. Clarified that the music request'smodelis an engine version, not a modoo model ID (the model ID is alwaysmodoo-music).
2026-07-15
WAN 2.7 image-to-video — first→last interpolation and extra inputs
modoo-video-i2v (WAN 2.7) gains several optional inputs, including first→last
frame interpolation. Each accepts https addresses only (like image_url), is
modoo-video-i2v (WAN 2.7) only, and returns 422 if sent to another model.
- API: new optional fields on
POST /v1/videos/generations—end_image_url(a closing frame → first→last interpolation),driving_audio_url(audio that drives the motion, e.g. a talking avatar),first_clip_url(an existing clip to continue/extend from). - MCP: new optional arguments
end_image_url,driving_audio_url, andfirst_clip_urlon theanimate_imagetool. - All backward compatible; wired from the gateway schema.
2026-07-13
New models — GPT-5.4 mini/nano · HappyHorse 1.1 video · music generation
New text, video, and music models were added together. They all follow the
existing request formats — you just use a new model value or a new endpoint
(existing calls are unchanged).
- Text (GPT-5.4 mini/nano): new model IDs
modoo-text-pro-mini(GPT-5.4 mini) andmodoo-text-pro-nano(GPT-5.4 nano). Just change themodelvalue on the existingPOST /v1/chat/completions(synchronous & streaming) — no new endpoint or MCP tool. - Video (HappyHorse 1.1): new model IDs
modoo-video-happyhorse-t2v(text→video),-i2v(image→video), and-r2v(reference→video).POST /v1/videos/generationsgains HappyHorse-only optional knobsresolution·ratio·duration·watermark·seed. r2v requiresreference_image_urls(1–9 character reference images). - Music generation: new model ID
modoo-musicand a new endpointPOST /v1/audio/music(asynchronous). Create a song withlyrics(required),model(optional, defaultmusic-2.5·music-2.0), andprompt(optional); poll thejob_idand, once done, the song file's address is inresult.audio_url. - MCP: new tools
reference_to_video(reference→video) andgenerate_music(music generation). The existinggenerate_videoandanimate_imagetools were also extended to accept the HappyHorsemodeloptions and theresolution·ratio·duration·watermark·seedknobs. MCP clients refresh the tool list on connect, so no reinstall or reconfiguration is needed.
See the Models guide, API reference, and MCP integration for full parameters.
ElevenLabs voices (TTS) — text_to_speech / POST /v1/audio/speech
Speech synthesis can now use ElevenLabs (modoo-tts-eleven). minimax
(modoo-tts-minimax) remains the default, so existing calls are unchanged.
- Model selection: new
modelfield —modoo-tts-minimax(default) ormodoo-tts-eleven. - ElevenLabs options:
voice_id— a voice id from your ElevenLabs account (required for ElevenLabs).voice_model—eleven_flash_v2_5·eleven_multilingual_v2(default) ·eleven_v3.voice_settings—stability·similarity_boost·style·speed·use_speaker_boost.language_code(e.g.ko),output_format(e.g.mp3_44100_128).
- MCP: the same options were added to the
text_to_speechtool. MCP clients refresh the tool list on connect, so no reinstall or reconfiguration is needed.
curl https://modoo.devdive.me/v1/audio/speech \
-H "Authorization: Bearer sk-modoo-..." \
-H "Content-Type: application/json" \
-d '{
"text": "Hello, this is 데브다이브-모두의창업.",
"model": "modoo-tts-eleven",
"voice_id": "EXAVITQu4vr4xnSDxMaL",
"voice_model": "eleven_multilingual_v2",
"voice_settings": { "stability": 0.5, "similarity_boost": 0.75 }
}'
See the API reference and MCP integration for full parameters.