Changelog

Sonilo API changelog

What changed in the API, the JavaScript and Python SDKs, the CLI and the MCP server, newest first. Entries marked “Changes a default” alter what an existing call returns.

Last updated . Package release notes: JavaScript SDK and CLI, Python SDK, MCP server.

October 2026

  1. MCP

    The hosted MCP server takes local files

    The hosted server at https://api.sonilo.com/mcp has a free create_upload_url tool. It returns a one time upload_url and a file_url; upload the file with a PUT, then pass file_url to any tool that takes a URL. Video, audio, .srt and .vtt files are accepted, each account can create 30 upload URLs per hour, a URL works for 15 minutes, and uploads are deleted after 7 days.

    MCP server

  2. MCP

    The subtitle tool is now called generate_video_subtitles

    On the hosted MCP server, the tool that transcribes a video and translates the transcript is listed as generate_video_subtitles. Calls to the old name proofread still work, but it no longer appears in the tool list.

    MCP server

September 2026

  1. MCP

    MCP account details include the cash balance

    get_account_services on the hosted MCP server now returns cash_balance and currency, so an assistant can tell how much prepaid balance is left before it starts a paid task.

    MCP server

  2. API

    Generated music carries a provenance watermark

    Music from /v1/text-to-music, /v1/video-to-music and /v1/video-to-video-music carries an inaudible provenance watermark. AAC output is now encoded at 256 kbps.

    Text to music docs

  3. APISDKCLIMCP

    The dubbing free trial is a 15 second preview

    An account’s first single language POST /v1/dubbing call without subtitle scripts translates the first 15 seconds of the video at no charge. The task carries trial_preview in every state, including full_video_cost_usd, what the whole video would cost.

    Video translation docsJavaScript SDK 0.22.0

  4. APISDKCLIMCPChanges a default

    Video analysis adds a sound design brief

    POST /v1/video-analysis takes mode: both, music or sfx. The default is both, so the result now also carries sfx_segments and sfx_prompt; send mode: "music" for the previous shape. Source videos can run up to 480 seconds. The price is unchanged.

    Video analysis docsJavaScript SDK 0.20.0

  5. API

    Dubbing adds Hindi, Tamil, Malayalam, Kannada, Gujarati, Punjabi and Sindhi

    New target codes: hi, ta, ml, kn, gu, pa_in and sd_in. Punjabi and Sindhi carry the region because only the variant spoken in India is available.

    Video translation docsJavaScript SDK 0.19.2

  6. APISDKCLIMCP

    Proofread: editable subtitles before you dub

    POST /v1/proofread transcribes a video and translates the transcript into one editable .srt per target language, plus the source language transcript. Correct the wording, then send the files to POST /v1/dubbing as subtitles[<language>] so the dub speaks the approved lines. Billed per second of video for each target language.

    Proofread docsJavaScript SDK 0.21.0

  7. Pricing

    Dubbing costs $3.49 per minute per language

    Down from $5.91 per minute. Dubbing still bills per second of video ($0.058167) for each target language.

    API pricing

  8. APISDKCLIMCP

    duration is optional on text to music and text to sound effects

    Leave duration out and /v1/text-to-music picks a length that suits the prompt, or runs to the last segment’s start plus 30 seconds. /v1/text-to-sfx defaults to 8 seconds and now accepts fractional durations down to 0.5 seconds. Calls that pass a duration behave as before.

    Text to music docsText to SFX docsJavaScript SDK 0.19.0

  9. APISDKCLIMCP

    Dubbing speaks your own subtitle scripts

    Send subtitles[<language>] with an .srt or .vtt file or URL holding the lines to speak in that language. With export_srt, the finished task returns each script retimed to the dubbed audio, and subtitle_preflight reports any line the pipeline had to change.

    Video translation docsJavaScript SDK 0.18.0

  10. APISDKCLIMCP

    Dubbing can keep the original picture

    lipsync defaults to on. Send lipsync: false to replace only the audio: the video comes back at its original resolution and frame rate, and the mouths keep moving to the original language.

    Video translation docsJavaScript SDK 0.17.0

  11. API

    Sound effect endpoints accept videos up to 8 minutes

    /v1/video-to-sfx, /v1/video-to-video-sfx, /v1/video-to-sound and /v1/video-to-video-sound accept source videos up to 480 seconds, up from 180.

    Video to SFX docsJavaScript SDK 0.16.5

August 2026

  1. API

    Dubbing adds Arabic, Turkish, Vietnamese and Indonesian

    New target codes: ar, tr, vi and id.

    Video translation docsJavaScript SDK 0.16.4

  2. API

    Dubbing adds Brazilian Portuguese, Latin American Spanish and Thai

    New target codes: pt_br, es_419 and th. pt_br and es_419 sit alongside pt and es rather than replacing them.

    Video translation docsJavaScript SDK 0.16.3

  3. API

    Dubbing accepts videos up to 5 minutes

    POST /v1/dubbing accepts source videos up to 300 seconds, up from 180.

    Video translation docsJavaScript SDK 0.16.1

  4. APISDKCLIMCP

    Stems for generated music

    stems: true on /v1/text-to-music and /v1/video-to-music also splits each generated track into drums, bass, vocals and other, free of charge. It needs mode: "async" and usually adds 2 to 6 minutes. If separation fails, the task still succeeds and reports stems_error.

    Text to music docsJavaScript SDK 0.16.0

  5. APISDKCLIMCP

    Video analysis: a written music brief for a video

    POST /v1/video-analysis returns a time aligned plan of segments plus one prompt per requested variation, ready to pass to a generation call. It generates no audio.

    Video analysis docsJavaScript SDK 0.15.0

  6. SDKCLI

    Audio ducking in the SDKs and CLI

    client.audioDucking in JavaScript, client.audio_ducking in Python and the sonilo audio-ducking command wrap POST /v1/audio-ducking, which ducks a music bed under a voice track. If the voice is a video, the result is the video with the new mix.

    Audio ducking docsJavaScript SDK 0.14.0

  7. APICLIMCP

    Sign in from the terminal with sonilo login

    sonilo login signs in through the browser and stores a credential every command picks up, so the API key no longer has to be exported. sonilo logout revokes that key through the new DELETE /v1/account/keys/self, which only ever revokes the key that calls it. The local sonilo-mcp server reads the same credential.

    CLI docsJavaScript CLI 0.12.0

  8. APISDKCLIMCP

    prompt_influence on video to music

    /v1/video-to-music and /v1/video-to-video-music take prompt_influence from 0 to 1 (default 0.5). Lower values let the video lead; higher values follow the prompt more closely. Free of charge.

    Video to music docsJavaScript SDK 0.13.0

  9. APIChanges a default

    ducking is off unless you ask for it

    /v1/video-to-music, /v1/video-to-sound, /v1/video-to-video-music and /v1/video-to-video-sound now treat an unset ducking as off. Send ducking: true to keep the old behaviour. On /v1/video-to-sound, ducking: true is also what brings the source speech into the result.

    Video to music docsJavaScript SDK 0.12.0

  10. API

    429 responses say which limit you hit

    A rate limited call now names the limit: requests per minute, or concurrent generations. Retry the first after a minute; for the second, wait until one of your running generations finishes.

    ErrorsJavaScript SDK 0.11.1

  11. APISDKCLIMCPChanges a default

    Video to video results return only the new audio by default

    /v1/video-to-video-music and /v1/video-to-video-sound no longer keep the source video’s own sound unless you send keep_original_sound: true. Without it the returned video carries the generated audio alone.

    Video to video music docsJavaScript SDK 0.11.0

  12. APISDKCLIMCP

    MP3 output for music

    output_format on /v1/text-to-music and /v1/video-to-music accepts mp3 (320 kbps) alongside m4a and wav, and /v1/video-to-sound takes output_format for its combined track.

    Text to music docsJavaScript SDK 0.10.0

July 2026

  1. APISDKCLIMCP

    Dubbing can duck the background under the new voice

    ducking on POST /v1/dubbing is off by default, which keeps the original music and effects at a constant level. Send true to lower them under the dubbed voice. Free of charge.

    Video translation docsJavaScript SDK 0.9.0

  2. APISDKCLIMCP

    Several music variations in one request

    variants_num (1 to 10, default 1) on /v1/text-to-music, /v1/video-to-music, /v1/video-to-video-music, /v1/video-to-sound and /v1/video-to-video-sound returns that many distinct takes. Cost scales with the number of variants, and calls with more than one variant are never covered by the free trial.

    Text to music docsJavaScript SDK 0.8.0

  3. SDKCLIMCP

    Dubbing in the SDKs, CLI and MCP server

    client.dubbing and the sonilo dubbing command wrap POST /v1/dubbing, which dubs one video into several languages in a single async task. The result maps each language code to a dubbed .mp4.

    Video translation docsJavaScript SDK 0.7.0

  4. APISDKCLIMCP

    See the free trial before it runs out

    GET /v1/account/services returns trial with granted, used and remaining per service for self serve accounts. When the trial is spent on an account that has never been funded, generation returns 402 with code: "trial_exhausted" instead of insufficient_balance.

    Account services docsJavaScript SDK 0.6.0

  5. SDKMCP

    Music and sound effects in one call

    The SDKs and MCP server cover /v1/video-to-sound and /v1/video-to-video-sound, which return a music bed and synced sound effects for one clip as a combined track plus separate music and sfx stems.

    Video to sound docsJavaScript SDK 0.5.0

  6. MCP

    Sonilo plugin for Claude Code

    The plugin connects Claude Code to the hosted MCP server at https://api.sonilo.com/mcp and signs in to a Sonilo Platform account over OAuth, so no API key is needed. Install it with /plugin marketplace add sonilo-ai/sonilo-claude-plugin.

    Plugin repository