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:
- Creating a cloud sandbox
- Installing OpenClaw
- Running the onboarding wizard
- Configuring gateway authentication
- 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?