Replace the project's whole conductor
The project's musical grid as a conductor: tempo points with curved ramps, signature changes, key changes, markers and an arrangement lane, anchored in musical position (q = quarter-notes from bar 1,
or bar + beat) so seconds are derived and an edit at bar 5 does not slide bar 9. PATCH /tempo (set_tempo) stays for flat edits and flattens ramps.
The body conductor is the document GET returns (version may be left out); it is validated and canonicalised. Same response, dry_run and expected_version as PATCH.
Authorization
bearerAuth Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/conductor" \ -H "Content-Type: application/json" \ -d '{ "conductor": { "property1": null, "property2": null } }'{
"data": {
"conductor": {
"version": 2,
"originSec": 0,
"keyScale": "string",
"source": "default",
"meter": {
"beats": 1,
"unit": 1
},
"signatures": [
{
"id": "string",
"bar": 2,
"beats": 0,
"unit": 0,
"label": "string"
}
],
"keys": [
{
"id": "string",
"q": 0,
"keyScale": "string"
}
],
"points": [
{
"id": "string",
"q": 0,
"bpm": 20,
"curve": -1,
"hold": true,
"label": "string"
}
],
"markers": [
{
"id": "string",
"q": 0,
"label": "string",
"color": "string"
}
],
"arrangement": [
{
"id": "string",
"startBar": 0,
"endBar": 0,
"label": "string",
"color": "string"
}
],
"warp": {
"mode": "off",
"nativeMapRef": "string"
}
},
"origin": "conductor",
"stale_v2": true,
"has_ramps": true,
"warnings": [
"string"
],
"edit_version": 0,
"dry_run": true,
"changed": true,
"fixes": [
"string"
],
"diff": {
"changed": true,
"grid_changed": true,
"summary": "string",
"tempo": {
"before": {
"property1": null,
"property2": null
},
"after": {
"property1": null,
"property2": null
}
},
"bars": {
"changed": 0,
"first_changed_bar": 0,
"max_shift_ms": 0,
"samples": [
[
0,
0,
0
]
]
},
"film_end": {
"sec": 0,
"bar_before": 0,
"bar_after": 0
},
"scenes": {
"shifted_in_bars": 0,
"music_span": [
{
"scene_id": "string",
"music_bars": 0,
"start_bar": 0,
"start_sec_before": 0,
"start_sec_after": 0,
"duration_before": 0,
"duration_after": 0,
"delta_sec": 0
}
]
},
"sfx": {
"scenes": 0,
"bound_cues": 0,
"cues_moved": 0
},
"ripple": {
"requested": "ripple",
"reflowed": true,
"note": "string"
},
"reflow": null
},
"follow_ups": {
"sfx": {
"scenes": 0,
"changed": 0,
"stemsPending": 0
},
"music": [
{
"property1": null,
"property2": null
}
]
}
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "conflict",
"code": "conflict",
"message": "string",
"current_version": 0,
"expected_version": 0,
"last_writer": {
"label": "string",
"kind": "editor",
"user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
"at": "string"
}
}
}Edit the project's conductor by id-addressed ops PATCH
The project's musical grid as a conductor: tempo points with curved ramps, signature changes, key changes, markers and an arrangement lane, anchored in musical position (q = quarter-notes from bar 1,
Status of audio-follows-tempo for the project's music GET
Audio follows tempo (conductor P2).