Skip to main content
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 latest edit_token you read or received from a write.
  • Writes that carry operation_id (project, chapter, clip, track, and instance writes, plus files create) get a generated UUID when the body omits it. Set operation_id yourself when you may need to retry the same request after a timeout.
  • files update and files delete use expected_revision from 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 stale expected_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:
Read the project again, reconcile your change with the current content, then submit it with the new 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:
Chapter deletion is soft; restore with 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.