> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sigmora.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Projects

> The container every call files its output in — and the reason the API and the dashboard show you the same thing.

## Every call belongs to a project

`projectId` is **required** on every capability call. Create one first, then pass
it:

```bash theme={null}
curl -X POST https://api.sigmora.org/v1/projects \
  -H "Authorization: Bearer $SIGMORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Launch film","kind":"video"}'
```

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.

## Grouping related work

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:

```bash theme={null}
curl https://api.sigmora.org/v1/projects/prj_9x2... \
  -H "Authorization: Bearer $SIGMORA_API_KEY"
```

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

<Warning>
  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.
</Warning>

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:

```bash theme={null}
curl -X PATCH https://api.sigmora.org/v1/projects/prj_9x2... \
  -H "Authorization: Bearer $SIGMORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"archived"}'
```

Clearing `title` returns the project to untitled, which is a legal state rather
than a validation failure.
