API Documentation
Create and manage OpenClaw deployments programmatically using the Laboros REST API.
Authentication
All API requests require a Bearer token in the Authorization header. Generate your token from the Account page (sign in first) and include it in every request:
Authorization: Bearer YOUR_API_TOKEN
Base URL
https://www.laboros.ai/api/v1
GET List Deployments
Returns all deployments for the authenticated user.
Request
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://www.laboros.ai/api/v1/deployments
Response
[
{
"id": 42,
"subdomain_slug": "swift-lobster-a1b2c3",
"status": "live",
"interface": "web",
"ai_model": "claude-sonnet-4-5",
"openclaw_url": "https://swift-lobster-a1b2c3.openclaw.net/?token=...",
"created_at": "2026-02-10T12:00:00.000Z"
}
]
POST Create Deployment
Creates a new OpenClaw deployment and begins provisioning.
Note:
A successful response means provisioning has started, not that the deployment is live.
Poll GET /api/v1/deployments/:id and check the status field until it reaches "live" (or "failed"). This typically takes 3-5 minutes.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| interface | string | Yes |
One of:
web
,
telegram
,
discord
,
slack
|
| ai_model | string | Yes |
e.g.
claude-sonnet-4-5
,
gpt-4o
,
kimi-k2.5
|
| api_token | string | Yes | Your AI provider API key (Anthropic, OpenAI, or Moonshot) |
| telegram_token | string | Telegram only | Telegram bot token from @BotFather |
| telegram_user_id | string | Telegram only | Your Telegram username or user ID |
| discord_token | string | Discord only | Discord bot token |
| slack_bot_token | string | Slack only | Slack bot token (xoxb-...) |
| slack_app_token | string | Slack only | Slack app-level token (xapp-...) |
Example (Web)
curl -X POST \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"interface":"web","ai_model":"claude-sonnet-4-5","api_token":"sk-ant-..."}' \
https://www.laboros.ai/api/v1/deployments
Example (Telegram)
curl -X POST \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"interface": "telegram",
"ai_model": "claude-sonnet-4-5",
"api_token": "sk-ant-...",
"telegram_token": "123456:ABC-...",
"telegram_user_id": "your_username"
}' \
https://www.laboros.ai/api/v1/deployments
Response (201 Created)
{
"id": 43,
"subdomain_slug": "keen-crab-d4e5f6",
"status": "pending",
"interface": "web",
"ai_model": "claude-sonnet-4-5",
"openclaw_url": null,
"created_at": "2026-02-10T12:05:00.000Z"
}
Polling for Status
After creating a deployment, poll the Show endpoint every 10-15 seconds until
finished
is
true
:
# Poll until deployment is ready
while true; do
STATUS=$(curl -s -H "Authorization: Bearer YOUR_API_TOKEN" \
https://www.laboros.ai/api/v1/deployments/43)
echo "$STATUS" | grep -q '"finished":true' && break
sleep 15
done
echo "$STATUS"
GET Show Deployment
Returns detailed status information for a single deployment.
Request
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://www.laboros.ai/api/v1/deployments/42
Response
{
"id": 42,
"subdomain_slug": "swift-lobster-a1b2c3",
"status": "live",
"interface": "web",
"ai_model": "claude-sonnet-4-5",
"openclaw_url": "https://swift-lobster-a1b2c3.openclaw.net/?token=...",
"created_at": "2026-02-10T12:00:00.000Z",
"progress_phase": "live",
"progress_timeline": [...],
"error_message": null,
"finished": true
}
DELETE Delete Deployment
Deletes a deployment and terminates the EC2 instance.
Request
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_TOKEN" \
https://www.laboros.ai/api/v1/deployments/42
Response (200 OK)
{
"message": "Deployment deleted"
}
Error Codes
| Status | Meaning |
|---|---|
| 401 Unauthorized | Missing or invalid API token |
| 402 Payment Required | No available deployment slots (subscribe or add a slot) |
| 404 Not Found | Deployment not found or belongs to another user |
| 422 Unprocessable Entity | Validation failed (invalid parameters, bad API key, etc.) |
Error Response Format
{"error": "Unauthorized"}
{"error": "No available deployment slots..."}
{"errors": ["API key is invalid - ..."]}