Read the project's grooves
A project's GROOVES are synthesized loops, one per scene, that play on the PROJECT's musical clock (its tempo map): bar n is bar n in every scene, so neighbouring grooves stay in phase across a join a
nd a seam sound (PUT /scenes/{sceneId}/transition) lands on it. Each scene plays its own pick, else the project default. Patterns carry no tempo or key — the project grid wins.
render=true also renders each playing scene's slice and returns its file, its hits (trains, every hit per voice in scene-local seconds) and named marks — what visuals sync to. Repeat scene_id to render only some scenes.
Authorization
bearerAuth Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….
In: header
Path Parameters
uuidQuery Parameters
"true" | "false"Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/groove"{
"data": {
"groove": {
"version": 1,
"library": {
"property1": {
"name": "string",
"pattern": {
"bars": 1,
"tracks": [
{
"voice": "kick",
"steps": "x...x...x...x...",
"notes": [
0
],
"fill": "string",
"octave": -2,
"gain": 0,
"pan": -1,
"tone": 0,
"duck": 0,
"crush": {
"bits": 3,
"hold": 1
}
}
],
"swing": 0,
"res": 4,
"seed": 0
}
},
"property2": {
"name": "string",
"pattern": {
"bars": 1,
"tracks": [
{
"voice": "kick",
"steps": "x...x...x...x...",
"notes": [
0
],
"fill": "string",
"octave": -2,
"gain": 0,
"pan": -1,
"tone": 0,
"duck": 0,
"crush": {
"bits": 3,
"hold": 1
}
}
],
"swing": 0,
"res": 4,
"seed": 0
}
}
},
"defaultId": "string",
"scenes": {
"property1": {
"patternId": "string",
"fillIntoEnd": true
},
"property2": {
"patternId": "string",
"fillIntoEnd": true
}
},
"gainDb": 0,
"enabled": true
},
"grid": {
"bpm": 0,
"meter": 0,
"key": "string",
"originSec": 0
},
"scenes": [
{
"scene_id": "string",
"chapter_id": "string",
"start_sec": 0,
"duration_sec": 0,
"pattern_id": "string",
"name": "string",
"from": "scene",
"fill_into_end": true,
"render": {
"src": "string",
"duration": 0,
"first_bar": 0,
"trains": {
"property1": [
0
],
"property2": [
0
]
},
"marks": [
{
"name": "string",
"t": 0
}
]
}
}
],
"presets": [
{
"id": "string",
"name": "string",
"note": "string"
}
],
"notes": [
"string"
],
"edit_version": 0
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}Set a project's brand mark and its motion PUT
The pinned brand mark — the corner "bug" — on one project: image, corner, size, opacity, and a MOTION FORMULA.
Set the project's grooves PUT
A project's GROOVES are synthesized loops, one per scene, that play on the PROJECT's musical clock (its tempo map): bar n is bar n in every scene, so neighbouring grooves stay in phase across a join a