HomeDocs

The Everpod API

Last updated: October 3, 2026
In short

The Everpod API is how an agent you already use, such as Claude Code or Codex, works with your Everpod account for you. A key lets an agent or an app you trust see your pods and start a new one for you, which you then pay for on everpod.ai. It can’t pay, change or cancel a plan, delete anything, or open your agent’s control panel.

It is an MCP server at https://everpod.ai/mcp and three REST routes under https://everpod.ai/api/v1, both used with a key you make in your account.

Make a key

  1. Sign in at everpod.ai/signin with your email address and the code we send you. If you have no account yet, signing in makes one.
  2. Open API keys from your account page, at everpod.ai/account/keys, name the key after what will use it, and make it.
  3. Copy the key. It starts with everpod_.

We show a key once, when you make it, and keep no copy of it. You can revoke a key in your account at any time, and anything using it stops working at once. A key is not a way to sign in. Whoever holds a key can use it, so keep it secret. Give each agent or app a key of its own, so that revoking one leaves the others working.

What a key can do

Three operations. An agent you connect has each as a tool, with the description shown here, and a script calls each as a route.

What a pod costs is on the page where you pay for it, and on everpod.ai.

Connect an agent

An MCP client connects to https://everpod.ai/mcp over HTTP and sends the key as the header Authorization: Bearer YOUR_KEY. When it connects, the agent is told what its tools can and cannot do and what each pod status means, so it can tell you where to pay and what happens next.

Claude Code

claude mcp add --transport http --scope user everpod https://everpod.ai/mcp \
  --header "Authorization: Bearer YOUR_KEY"

Codex

export EVERPOD_API_KEY=YOUR_KEY
codex mcp add everpod --url https://everpod.ai/mcp \
  --bearer-token-env-var EVERPOD_API_KEY

Codex reads the key from that environment variable each time it starts, so set it in the shell Codex runs in.

Another MCP client

Give it the address and the header. As a JSON entry, in the form Claude Code’s .mcp.json takes, with the key read from an environment variable so that it is never written into a file you share:

{
  "mcpServers": {
    "everpod": {
      "type": "http",
      "url": "https://everpod.ai/mcp",
      "headers": { "Authorization": "Bearer ${EVERPOD_API_KEY}" }
    }
  }
}

Then ask the agent, for example:

Start an Everpod pod called Otto and tell me where to pay.

Call it from code

The same three operations over HTTPS. Every request carries the key as Authorization: Bearer YOUR_KEY, and requests and answers are JSON. The list answers { "pods": [...] }; reading or starting a pod answers { "pod": {...} }. Starting one takes { "name": "..." }, the name you want for the pod’s agent, up to 40 characters.

export EVERPOD_API_KEY=YOUR_KEY

curl https://everpod.ai/api/v1/pods \
  -H "Authorization: Bearer $EVERPOD_API_KEY"

curl -X POST https://everpod.ai/api/v1/pods \
  -H "Authorization: Bearer $EVERPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Otto"}'

A pod

{
  "pod": {
    "id": "5f0c1a52-8f1e-4d0b-9a57-3f6f2f7c1e9a",
    "name": "Otto",
    "harness": "openclaw",
    "status": "awaiting_payment",
    "created_at": "2026-10-03T09:12:44.512345+00:00",
    "url": null,
    "pay_url": "https://everpod.ai/create?pod=5f0c1a52-8f1e-4d0b-9a57-3f6f2f7c1e9a",
    "plan": null,
    "subscription": null
  }
}

Pod status

When a request is refused

A refusal answers with a code and a message. The message says what happened and what to do next, in words an agent can pass on to you; over MCP the same message arrives as the tool’s error.

{
  "error": {
    "code": "not_found",
    "message": "No pod with that id on this account."
  }
}

Questions

Anything about the API: support@everpod.ai. How your account and your keys are protected is in the Security overview.