Song Editor) APIs to edit a single clip and export a new song.
- Base path:
POST /suno/v2/studio/* - Async: every call returns
{ "taskId": "..." }— poll Get Task Status untilstatus=success, then read the new clip fromdata - Account: pass the source
clip_idonly (same-account ownership). Do not pass the original songtaskIdfor routing
What Studio does / does not do
Studio exports one new clip from one source clip. Build timeline / mixer UI on the client.
vs legacy /audio/* endpoints
Both can coexist. Prefer Studio for Song Editor UX and chained edits.
Critical conventions
- Time unit is seconds, relative to the current timeline.
- In
/studio/edit,opsrun in order. Seconds for op N are after ops 1…N−1 have already changed the timeline — not original source seconds. - One in-flight Studio task per user +
clip_id(~20 minutes). Wait untilsuccess/failed/timeoutbefore the next call. - Chain edits with the previous export’s new
clip_id. Never race an unfinished task. - Wait for
status=successbefore the next Studio call (do not usestreamclips for Studio — ownership may not be ready). - Error messages are English — show or map them in the product UI.
Optional beat (metronome export)
Most Studio export endpoints accept an optional beat object. Omit it for legacy behavior (no metronome).
Supported on:
/studio/edit, atomic trim shortcuts (crop, removeSection, duplicate, reverse, fadeIn, fadeOut, setSpeed), and Add Section Commit. Not used by addSection phase-1 or /studio/replace.
Recommended workflow
- Batch panel “Apply” into one
/studio/editto reduce exports and lock conflicts. - Separate edit vs generate (add section / replace) buttons and show credit cost.
- After add-section commit, continue polish using the new clip.
Endpoints
Batch edit (preferred for multiple trims)
Supported
op values: crop, removeSection, duplicate, split, reverse, fadeIn, fadeOut, setSpeed.
Atomic shortcuts
Generate-class (separate)
Add Section (two phases)
1
Phase 1 — generate candidates
Call Add Section with
clip_id + insert_at_s. Poll until success. Result is { clips, studio } (two candidates + commit context).2
Phase 2 — commit
Call Add Section Commit with the chosen
candidate_clip_id (optional source clip_id for validation). The server reverse-looks up phase 1 — no taskId needed.Polling
Poll every 3–5s. Phase-1 addSection may take minutes; commit often tens of seconds to ~2 minutes.
Common errors
Quick example — batch edit
GET /suno/v2/status?taskId=...