breeze studio edits Studio project content through the /v1/studio API. Every command prints the API’s JSON response on stdout. The commands do not generate speech, charge generation credits, or export audio.
Commands
Run any command with
--help to see its HTTP route and argument order.
Read projects
list and get accept repeatable --query key=value parameters:
Project reads and writes return
edit_token, the project version used for concurrency control.
Write projects
Write commands read a JSON body from--input <file>, or from stdin with --input -. Bodies use the API’s snake_case fields.
- Project-scoped writes require
expected_edit_token, taken from the latestedit_tokenyou read or received from a write. - Writes that carry
operation_id(project, chapter, clip, track, and instance writes, plusfiles create) get a generated UUID when the body omits it. Setoperation_idyourself when you may need to retry the same request after a timeout. files updateandfiles deleteuseexpected_revisionfrom the latest file response instead.
clips batch-create and clips bulk-delete accept up to 400 clips; clips batch-update accepts up to 100. Each batch applies atomically. Move an audio instance to another auxiliary track by updating its track_id. The narration track is read-only; manage narration through clips.
Conflicts and retries
A staleexpected_edit_token returns HTTP 409 and leaves the project unchanged. The CLI never retries a conflict. It exits with code 1 and, in JSON mode, writes an error envelope that keeps the API details:
expected_edit_token and a new operation_id. Reusing an operation_id with a different body also returns 409.
When a write times out or loses its connection, the server may already have applied it. Resend the same body with the same operation_id; the server replays the original result instead of applying it twice. If the CLI generated the operation_id, the error suggestion includes it.
Delete
delete and bulk-delete ask for confirmation. Scripts, agents, and bodies read from stdin must pass --yes:
chapters restore. Deleting a track removes its instances and keeps the files. Files referenced by an instance cannot be deleted.
Upload audio files
files upload creates the file record, requests a signed URL, uploads the bytes without your API key, completes the upload, and prints the file JSON. Re-run with the same --operation-id and file to resume an interrupted upload. With --wait=false, check processing with files get. When processing fails, inspect error_code and error_message with files get, then run files retry. Use upload-url and complete only to drive the upload steps yourself.
Timeline positions, trims, and lengths use integer frames at 48,000 Hz. For a complete workflow, see Manage Studio projects.
