API docs
API reference

Projects

Partition files, runs and checkpoints by team, and pin each partition to a data region.

Projects partition your organisation's resources. Files, training runs, checkpoints and sessions can all be attached to a project, and an API key can be bound to one, in which case it only sees that project's resources. Bound keys are how you stop one team reading another's runs.

A project is also where data residency is enforced. Set data_region at creation and every file, run and checkpoint in the project stays in that region. Pinning the region per project turns a residency commitment into something the platform enforces rather than something you promise.

List projects

GET/v1/projectsscope: read

Returns your organisation's projects. See Pagination for how limit and offset behave across list endpoints.

Query parameters

limitinteger

Maximum number of projects to return.

offsetinteger

Number of projects to skip from the start of the list.

curl https://api.nucleus-ai.io/v1/projects \
  -H "Authorization: Bearer $NUCLEUS_API_KEY"
200 OK
{
  "data": [
    {
      "id": "proj_acme",
      "name": "support-assistant",
      "created_at": "2026-06-02T04:00:00Z"
    }
  ]
}

Create a project

POST/v1/projectsscope: admin

Creates a project. Choose the data_region here: it applies to everything the project will hold and cannot be worked around by individual uploads, so this one field is where a residency requirement is settled.

Body parameters

namestringrequired

Human-readable name, shown in listings and audit logs.

data_regionstring

Region that stores the project's files, runs and checkpoints, e.g. ap-southeast-1.

Once the project exists, bind keys to it with Create an API key and attach resources by passing project_id when you create them, or move existing work with Assign a session to a project.

curl https://api.nucleus-ai.io/v1/projects \
  -H "Authorization: Bearer $NUCLEUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "support-assistant",
    "data_region": "ap-southeast-1"
  }'
201 Created
{
  "id": "proj_acme",
  "name": "support-assistant",
  "data_region": "ap-southeast-1"
}

Retrieve a project

GET/v1/projects/{project_id}scope: read

Returns one project with its usage rolled up: session_count and storage_bytes cover everything held under the project. If you run one project per team or department, this is the number a per-team chargeback reads.

Path parameters

project_idstringrequired

ID of the project.

curl https://api.nucleus-ai.io/v1/projects/proj_acme \
  -H "Authorization: Bearer $NUCLEUS_API_KEY"
200 OK
{
  "id": "proj_acme",
  "data_region": "ap-southeast-1",
  "session_count": 6,
  "storage_bytes": 41231872
}
Projects | Nucleus AI API