From d1e8efe76a470e0a5fe99b7bfecf8b8e39c2ed23 Mon Sep 17 00:00:00 2001 From: Spencer Qian Date: Thu, 20 Aug 2026 16:55:53 -0700 Subject: [PATCH 1/2] docs: video analysis accepts sources up to 6 minutes The API lowered /v1/video-analysis from 600 to 360 sec. Nothing here gates on the number -- the limit is enforced server-side -- but both READMEs and context7.json stated 600. 600 was never a real limit on the API either: a shared 360 sec probe ceiling rejected every longer source before the endpoint's own check ran, so a caller who believed the old number was uploading videos that were always going to be refused. Also fixes dubbing's cap, which this repo missed when the API raised it from 180 to 300 sec: the SDK README and the CLI README both still said 180, and a caller who believes that trims a video the API would have taken. (The 180 sec line under video_to_sound / video_to_video_sound is correct and stays.) --- README.md | 4 ++-- context7.json | 2 +- sonilo-cli/README.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0a600bb..c5f3ef6 100644 --- a/README.md +++ b/README.md @@ -395,7 +395,7 @@ fr, it, ru`. The optional `ducking` boolean (default off, free) ducks the background music/effects bed under the dubbed voice while it speaks; when off the bed is kept at a constant level. (Every endpoint's `ducking` defaults off, so this one is no exception.) Source videos may be -at most 180 seconds long, and billing is per language: a 3-language call +at most 300 seconds long, and billing is per language: a 3-language call costs three times as much as one. Dubbing has no free trial allowance — see [Free trial](#free-trial). @@ -438,7 +438,7 @@ counterparts. Pass exactly one of `video` / `video_url`, plus optional `prompt` (guidance for the analysis, at most 2000 characters) and `variants_num` (1-5, default -1 — billed per brief). Source videos may be at most 600 seconds long, and +1 — billed per brief). Source videos may be at most 360 seconds long, and billing has a 10-second floor, so a very short clip still costs the same as a 10-second one. diff --git a/context7.json b/context7.json index ba5c1f6..4d4fdf7 100644 --- a/context7.json +++ b/context7.json @@ -33,6 +33,6 @@ "client.dubbing dubs one video into several languages in a single async call. languages is a list of codes (en, zh_cn, ja, ko, pt, es, de, fr, it, ru); omit it for the default [\"zh_cn\", \"es\", \"fr\"]. You are billed per language, with no free trial runs.", "A DubbingResult has no audio/video/output_url. Its results live in result.outputs, a map of language code to dubbed .mp4 URL: use result.save(lang, path) or result.save_all(dir). dubbing's video_url must be https.", "client.video_analysis returns a creative BRIEF, not media: the method is analyze() (not generate()) and VideoAnalysisResult has no save(). Read result.segments (start/end/label/prompt) and result.variations[i].prompt.", - "Pass a video_analysis variation's prompt straight to video_to_music / video_to_sfx / video_to_sound as their prompt. It takes one of video/video_url plus optional prompt and variants_num (1-5, billed per brief); max 600s, 10s billing floor." + "Pass a video_analysis variation's prompt straight to video_to_music / video_to_sfx / video_to_sound as their prompt. It takes one of video/video_url plus optional prompt and variants_num (1-5, billed per brief); max 360s, 10s billing floor." ] } diff --git a/sonilo-cli/README.md b/sonilo-cli/README.md index cdca81e..4e8ef24 100644 --- a/sonilo-cli/README.md +++ b/sonilo-cli/README.md @@ -259,7 +259,7 @@ command that produces no media file — nothing is generated: time-aligned section plan) and `variations` (one ready-to-use generation prompt each). Pass `--output brief.json` to write it to a file instead. - `--variants` is 1-5 (default 1) and is **billed per brief**. -- Source videos may be at most 600 seconds long, and billing has a 10-second floor. +- Source videos may be at most 360 seconds long, and billing has a 10-second floor. - Feed a variation's prompt straight into the next command: sonilo video-analysis --video clip.mp4 --output brief.json @@ -274,7 +274,7 @@ command that produces no media file — nothing is generated: - `--languages` is comma-separated; omit it to use the server default `zh_cn,es,fr`. Supported codes: `en, zh_cn, ja, ko, pt, es, de, fr, it, ru`. -- Source videos may be at most 180 seconds long. +- Source videos may be at most 300 seconds long. - `--output` is a filename template, not a single destination: a dubbing task returns one video per language, so `--output clip.mp4` writes `clip.es.mp4`, `clip.fr.mp4`, etc. - Billing is per language, and dubbing has **no free trial runs** — see [Free trial](#free-trial) From 607a583c9188b55586c9ac123446b025a1fa9ffd Mon Sep 17 00:00:00 2001 From: Spencer Qian Date: Thu, 20 Aug 2026 17:01:03 -0700 Subject: [PATCH 2/2] chore: release sonilo 0.15.1 and sonilo-cli 0.14.1 Docs-only content, but PyPI renders the README on the project page, so the corrected caps only reach readers through a release. --- pyproject.toml | 2 +- sonilo-cli/pyproject.toml | 2 +- sonilo-cli/src/sonilo_cli/__init__.py | 2 +- src/sonilo/_version.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5657d89..18b4dcd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "sonilo" -version = "0.15.0" +version = "0.15.1" description = "Official Python client for the Sonilo API" readme = "README.md" license = "MIT" diff --git a/sonilo-cli/pyproject.toml b/sonilo-cli/pyproject.toml index e95da50..d4ec39c 100644 --- a/sonilo-cli/pyproject.toml +++ b/sonilo-cli/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "sonilo-cli" -version = "0.14.0" +version = "0.14.1" description = "Command-line interface for the Sonilo API: generate music and sound effects from text or video" readme = "README.md" license = "MIT" diff --git a/sonilo-cli/src/sonilo_cli/__init__.py b/sonilo-cli/src/sonilo_cli/__init__.py index 35fc02c..969467a 100644 --- a/sonilo-cli/src/sonilo_cli/__init__.py +++ b/sonilo-cli/src/sonilo_cli/__init__.py @@ -1,3 +1,3 @@ -__version__ = "0.14.0" +__version__ = "0.14.1" __all__ = ["__version__"] diff --git a/src/sonilo/_version.py b/src/sonilo/_version.py index 9da2f8f..903e77c 100644 --- a/src/sonilo/_version.py +++ b/src/sonilo/_version.py @@ -1 +1 @@ -__version__ = "0.15.0" +__version__ = "0.15.1"