Skip to main content

Prerequisites

You need:
  • A terminal with curl (or any HTTP client)
  • That’s it. No Docker, no Node.js, no config files.

Step 1: Create your organization

Every Chowder account starts with an organization. This call creates one and returns your API key.
Save the api_key from this response — it won’t be shown again. This is your organization key and grants full access to all resources.
curl -X POST https://api.chowder.dev/v1/organization/signup \
  -H "Content-Type: application/json" \
  -d '{"name": "acme-corp"}'
{
  "organization": {
    "id": "4737cccd-3d1d-4790-979b-6825d6a333de",
    "name": "acme-corp",
    "subscription_tier": "shrimp",
    "instance_limit": 1,
    "instance_count": 0
  },
  "api_key": "chd_org_ea3adc9d38e618552a82c7df4ff75428..."
}
You’re on the shrimp tier (free) which gives you 1 instance. That’s enough to get started.

Step 2: Create an instance

An instance is a running OpenClaw agent with its own sandbox, workspace, and gateway.
export CHOWDER_KEY="chd_org_ea3adc9d38e618552a82c7df4ff75428..."

curl -X POST https://api.chowder.dev/v1/instances \
  -H "Authorization: Bearer $CHOWDER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-first-agent"}'
{
  "id": "ead7b76b-f34e-4b91-93e7-9c979cf9e41c",
  "name": "my-first-agent",
  "status": "provisioning",
  "model_provider": "anthropic",
  "sandbox_provider": "sandbox",
  "openclaw_version": "v1"
}
The instance starts in provisioning status. Behind the scenes, Chowder is:
  1. Creating a cloud sandbox
  2. Installing OpenClaw
  3. Running the onboarding wizard
  4. Configuring gateway authentication
  5. Starting the gateway
This takes about 60–90 seconds. You can poll for status:
curl https://api.chowder.dev/v1/instances/ead7b76b-.../status \
  -H "Authorization: Bearer $CHOWDER_KEY"
Once you see "status": "running", you’re good to go.

Step 3: Talk to your agent

Send a message and get a response. You need to specify a model — the agent will use it for this turn.
curl -X POST https://api.chowder.dev/v1/instances/ead7b76b-.../responses \
  -H "Authorization: Bearer $CHOWDER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "input": "Hey! Who are you?"
  }'
{
  "id": "resp_238a6f70-1fe6-42fc-8488-6a3762ef7e68",
  "status": "completed",
  "model": "claude-sonnet-4-20250514",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "Hey! I just came online — fresh instance, blank slate. What should I call myself? What kind of creature am I? Let's figure this out together."
        }
      ]
    }
  ]
}
The agent remembers this conversation. Send another message and it’ll have context from the first one.

Step 4: Try sessions

By default, all messages go to the agent’s main session. To create a separate conversation thread, use the session endpoint:
# This creates a new session called "project-alpha"
curl -X POST https://api.chowder.dev/v1/instances/ead7b76b-.../session/project-alpha/responses \
  -H "Authorization: Bearer $CHOWDER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "input": "This session is for planning project alpha. Remember that."
  }'
Sessions are isolated — the agent maintains separate memory and context for each one. Switch back to the main session anytime by using the regular /responses endpoint.

What’s next?