Skip to main content
POST
Create a pod

Authorizations

X-API-Key
string
header
required

A compute API key (x402c_...). Mint one in the dashboard under Settings -> API Keys. This is the ONLY auth /pods/v1/* accepts - wallet signatures are bound to method+path+body and do not survive the internal hop, so signature callers must use the dashboard routes instead. Two extra scopes gate the dangerous powers: pods:wallet:write (pod wallet money, backup passphrase) and pods:control:write (connectors, full-power control socket).

Headers

Idempotency-Key
string
required

REQUIRED. A stable id of your own. Replaying it returns the original response instead of creating a second pod.

x-request-id
string

Optional correlation id, echoed back on the response.

Body

application/json

Only these fields are read. Anything else is ignored - internal pricing and provisioning fields are deliberately not forwardable from a public caller.

tier
string

Capability/price tier. Defaults to starter.

Example:

"starter"

name
string

Your display name for the pod.

Maximum string length: 120
external_ref
string

YOUR id. Comes back on every read and filters GET /pods, so you can find the pod again from your own database without storing ours.

Maximum string length: 128
model
string

Model slug. Managed pods clamp this to the tier's allowed list.

system_prompt
string

Initial system prompt for the agent.

region
string

Optional datacentre pin. Omit it and we choose - picking a datacentre is our job, not yours.

term_hours
integer
default:24

Prepaid runtime in hours. Minimum 24.

Required range: x >= 24
capabilities
object

What this pod was provisioned with. Omitting capabilities on create gives every capability.

ai
object

managed = we run and meter the LLM. byok = the pod calls your own OpenAI-compatible endpoint.

Response

Idempotent replay: this exact Idempotency-Key already created a pod, so the ORIGINAL response body is returned unchanged. 200, not 201 - the pod was created by the earlier call.

pod
object

The public projection of a pod on /pods/v1. An allowlist: it never carries the engine, its version, the provider, the region, the machine plan, the IP, or any credential, so the pod's implementation can change without breaking your integration.