Who is working on a project right now
Live scene claims (people and agents, with expiry), everyone who wrote in the last minutes (from the history ledger, with the legacy fallback), and the agent runs on this project (status, last tool, scenes touched).
Live scene claims (people and agents, with expiry), everyone who wrote in the last minutes (from the history ledger, with the legacy fallback), and the agent runs on this project (status, last tool, scenes touched). Presence (who has the editor open) is a browser-only Realtime channel and is NOT available server-side: the response says so. MCP: get_project_activity.
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
Window for recent_writers and finished runs. Default 15.
1 <= value <= 1440Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/activity"{
"data": {
"as_of": "string",
"window_minutes": 0,
"claims": {
"available": true,
"items": [
{
"scene_id": "861eef56-1159-4a95-802f-abab2d0cc192",
"kind": "human",
"label": "string",
"since": "string",
"expires_at": "string",
"expires_in_s": 0,
"mine": true,
"scene_index": 0,
"scene_title": "string"
}
],
"note": "string"
},
"recent_writers": [
{
"actor": {
"kind": "person",
"label": "string",
"user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
"agent_run_id": "c3317f32-e28b-4af1-a584-86ac8c788dd8",
"session": "string",
"is_me": true
},
"events": 0,
"first_at": "string",
"last_at": "string",
"scenes": [
{
"id": "string",
"index": 0,
"title": "string"
}
],
"kinds": [
"string"
],
"last_sentence": "string"
}
],
"agent_runs": {
"available": true,
"items": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"label": "string",
"status": "string",
"brief": "string",
"started_by": "string",
"started_at": "string",
"last_step_at": "string",
"created_at": "string",
"finished_at": "string",
"steps": 0,
"share_url": "string",
"last_tool": {
"name": "string",
"at": "string",
"is_error": true
},
"scenes_touched": [
{
"id": "string",
"index": 0,
"title": "string"
}
],
"scene_count": 0
}
],
"note": "string"
},
"presence": {
"available": false,
"note": "string"
},
"source": "project_events",
"recording_since": "string",
"notes": [
"string"
],
"viewer": {
"user_id": "string",
"role": "string"
}
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}{
"error": {
"type": "string",
"code": "string",
"message": "string"
}
}One history event in full GET
The described changes, the structured before -> after rows, the version range, the old values the ledger kept, and pointers to where the rest lives (the editor_revisions row with the previous composit
Set how the music sits under the voice PUT
Ducking mode (bed | off), the duck dials, sidechain ducks from any source, the aux room, and film-editor MOMENTS hung off scene edges (swell, out, in, hit).