Skip to main content

Every call belongs to a project

projectId is required on every capability call. Create one first, then pass it:
A project may stay untitled forever — POST /v1/projects with no body is valid and creates one. Naming is optional; having a project is not. Pass the same projectId across calls and the script, the render and the thumbnail all land in one container you can read back in a single request:
The response carries the project plus compact references to everything in it — id, type, title, status, timestamp. Fetch the full artifact through the capability that owns it.

An id you do not own is not an error

Passing a projectId belonging to another workspace does not fail the request and does not write into that project. The work is filed under a fresh project instead.A wrong id costs you attribution, never a cross-tenant write — and the response never confirms whether the id existed, so project ids cannot be used as an existence oracle across tenants.
Because of that, always read projectId back off the response rather than assuming the one you sent was honoured.

Archive, never delete

There is no DELETE. A container holding renders you paid for should not be destroyable by one HTTP verb, so archiving is the reversible equivalent:
Clearing title returns the project to untitled, which is a legal state rather than a validation failure.