Sign Up

Catalog

GET
/cpu-catalog

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Query Parameters

region?string

Comma-separated region slugs this cell hosts runners for (?region=a,b; tokens are trimmed, case-folded, and deduplicated). The answer covers exactly the named regions. Absent, or present with no non-blank token (?region=, ?region=%20,,%20): every region this cell hosts. A slug not in the catalog (or disabled) is a 400, as are more than 64 distinct slugs; a catalog region another cell hosts is a 409 carrying that cell's api_base_url.

Response Body

Registry slugs and architectures with their per-region availability; an empty fleet is a 200 with every available false

application/json
  1. response

GET /cpu-catalog body.

arches*array<>

Always exactly two entries, amd64 then arm64.

cpu_types*array<>

One entry per registry row, in GET /cpu-types order (cpu_arch, tier, id).

regions*array<>

Every region the answer covers, in catalog order.

curl -X GET 'https://example.com/cpu-catalog'
{  "arches": [    {      "available": true,      "id": "string",      "regions": [        "string"      ]    }  ],  "cpu_types": [    {      "available": true,      "cpu_arch": "string",      "exact_regions": [        "string"      ],      "fallback_regions": [        "string"      ],      "id": "string",      "name": "string",      "tier": 0    }  ],  "regions": [    {      "default_arch": "string",      "default_type": "string",      "id": "string"    }  ]}
GET
/cpu-types

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Response Body

The CPU type registry

application/json
  1. response
[index: integer]?

A cpu_types registry row, as served by GET /cpu-types.

tier (migration 0056, PLAN-HOST-CLASS-TIERS.md) is a per-arch rank (1 = lowest). It is exposed for discovery + e2e assertions; the placement mechanic itself lives on the runner (lazy-poll shared-durable fallback), so no client consumes tier yet.

curl -X GET 'https://example.com/cpu-types'
[  {    "cpu_arch": "string",    "id": "string",    "name": "string",    "tier": 0  }]
GET
/disk-classes

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Response Body

The disk class registry

application/json
  1. response
[index: integer]?

A class-registry row, as served by GET /network-classes and /disk-classes.

tier (migration 0056, PLAN-HOST-CLASS-TIERS.md) is a single global rank per dimension (1 = lowest). Exposed for discovery + e2e assertions; the placement mechanic lives on the runner, so no client consumes it yet.

curl -X GET 'https://example.com/disk-classes'
[  {    "id": "string",    "name": "string",    "tier": 0  }]
GET
/network-classes

Authorization

headerAuthorizationBearer <token>

Project API key (dtn_…) as a Bearer token. Mint via the management API (POST /projects/:id/api-keys) or this deployment's key-mint CLI. Every key carries an explicit set of verb:resource project permissions chosen at mint time (PLAN-API-KEY-PERMISSIONS.md); each operation lists the project permission it requires in its security requirement, and a key lacking it is answered 403 missing required project permission: <project-permission>. Some operations require an additional permission depending on the request body, stated in the operation's description. Holding a mutating verb (write:/delete:/invoke:) implies the resource's read: permission. Operations whose api_key project-permission list is empty need no specific project permission — any live project key works (the global catalogs and the artifact-cache read).

Response Body

The network class registry

application/json
  1. response
[index: integer]?

A class-registry row, as served by GET /network-classes and /disk-classes.

tier (migration 0056, PLAN-HOST-CLASS-TIERS.md) is a single global rank per dimension (1 = lowest). Exposed for discovery + e2e assertions; the placement mechanic lives on the runner, so no client consumes it yet.

curl -X GET 'https://example.com/network-classes'
[  {    "id": "string",    "name": "string",    "tier": 0  }]