Projects and jobs
curl -X GET "https://example.com/stats/usage"nullRequest Body
application/json
"history"Response Body
application/json
application/json
curl -X POST "https://example.com/export" \
-H "Content-Type: application/json" \
-d '{
"source_filename": "string",
"authorization": "string"
}'nullRequest Body
application/json
"~/Downloads""file"Response Body
application/json
application/json
curl -X POST "https://example.com/export/record" \
-H "Content-Type: application/json" \
-d '{
"filename": "string"
}'nullcurl -X GET "https://example.com/export/history"nullcurl -X POST "https://example.com/export/reveal" \
-H "Content-Type: application/json" \
-d '{
"path": "string"
}'nullThe newest 50 generations plus every starred take, newest first, kept to rows whose audio still exists on disk.
Starred takes ride along past the 50-row window so a keeper can never age off the rail. Rows whose WAV was deleted out-of-band (cleared outputs dir, manual cleanup) used to come back anyway and render dead players that 404 on every fetch; prune them here so the UI never sees them again.
Response Body
application/json
curl -X GET "https://example.com/history"nullcurl -X DELETE "https://example.com/history"nullStar/unstar a take. Starred takes survive the retention cap and always appear in GET /history regardless of the recency window.
Path Parameters
Request Body
application/json
Response Body
application/json
application/json
curl -X PUT "https://example.com/history/string/starred" \
-H "Content-Type: application/json" \
-d '{
"starred": true
}'nullcurl -X DELETE "https://example.com/history/string"nullUniversal Server-Sent Event stream for background tasks.
?after_seq=N enables resumption: on reconnect, the client replays
persisted events with seq > N, then (if the job is still live) attaches
to the in-memory listener for live updates. After a server restart the
in-memory task is gone but the persisted tail + final jobs.status are
still readable, so a mid-stream reload still sees the final state.
Path Parameters
Query Parameters
0Response Body
application/json
application/json
curl -X GET "https://example.com/tasks/stream/string"nullList persisted jobs, newest first.
status=active → running + pending (what the batch-queue UI wants).
status=failed|done|cancelled|pending|running → exact match.
project_id=... → scope to one project.
Query Parameters
100Response Body
application/json
application/json
curl -X GET "https://example.com/jobs"nullcurl -X GET "https://example.com/jobs/string"nullPersisted SSE tail. Strict ascending seq so the client can stitch it onto a live feed (which starts above the last returned seq).
Path Parameters
Query Parameters
0500Response Body
application/json
application/json
curl -X GET "https://example.com/jobs/string/events"nullCancel a running background task (e.g. dub generation).
Path Parameters
Response Body
application/json
application/json
curl -X POST "https://example.com/tasks/cancel/string"nullcurl -X GET "https://example.com/projects"nullRequest Body
application/json
Response Body
application/json
application/json
curl -X POST "https://example.com/projects" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"state": {}
}'nullcurl -X GET "https://example.com/projects/string"nullLightweight rename — updates only the project name (and updated_at), without re-serialising the whole state blob like PUT does.
Path Parameters
Request Body
application/json
Response Body
application/json
application/json
curl -X PATCH "https://example.com/projects/string" \
-H "Content-Type: application/json" \
-d '{
"name": "string"
}'nullcurl -X DELETE "https://example.com/projects/string"nullPath Parameters
Request Body
application/json
Response Body
application/json
application/json
curl -X PUT "https://example.com/projects/string" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"state": {}
}'null