API referenceProjects

Edit the project's conductor by id-addressed ops

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.

Ops apply in order, all or nothing; items are addressed by id, so concurrent edits to different items merge. dry_run: true writes nothing and returns the diff in seconds (bars that move, music-span scenes, sound cues). A real write stores settings.conductor and the derived settings.tempo together; a grid change retimes bound sound cues and re-conforms music loops like PATCH /tempo. Scene windows are NOT re-fitted. Send expected_version for a strict compare-and-set (stale = 409 conflict). Free.

PATCH
/projects/{id}/conductor

Authorization

bearerAuth
AuthorizationBearer <token>

Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….

In: header

Path Parameters

id*string
Formatuuid

Request 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 PATCH "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/conductor" \  -H "Content-Type: application/json" \  -d '{    "ops": [      {        "op": "add_point",        "bar": 5,        "beat": 1,        "bpm": 134,        "curve": 0.3      }    ]  }'
{
  "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"
    }
  }
}