Async jobs and polling
Most write operations are asynchronous.What returns immediately
These endpoints accept work and return IDs you can poll:POST /projectsPOST /projects/{projectId}/tasks/stem-separationPOST /projects/{projectId}/tasks/lyrics-syncPOST /projects/{projectId}/exports
What to poll
- Poll
GET /tasks/{taskId}for execution status and hydrated task output. - Read
GET /projects/{projectId}for long-lived project state. - Read
GET /exports/{exportId}for fresh export download URLs.
Practical polling model
- Start a mutation and store the returned IDs.
- Poll
GET /tasks/{taskId}until the task reaches a terminal state. - Re-read the durable resource by ID instead of trusting stale cached state.
- For downloads, fetch
GET /exports/{exportId}when you are ready to use the URL.
Why this matters
- Task status is the execution timeline.
- Project state is the durable source of truth.
- Export download URLs should be treated as refreshable rather than permanent.
