Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions api-reference/agents.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@

<Note>Provisioning requests may be processed asynchronously through the background task queue. The agent is created immediately with a `provisioning` status and transitions to `running` once the backend deployment endpoint confirms the deployment. If deployment fails, the status changes to `error`.</Note>

<Note>The provisioning endpoint calls `POST /api/deployments` on the backend to deploy the agent as a Render service. The request includes a 15-second timeout. When the model is set to `claude-opus-4-6`, the AI provider is automatically set to `anthropic`; otherwise it falls back to the provider specified in the agent configuration (default: `openrouter`). The plan sent to the backend defaults to `label` when no tier is specified.</Note>

Check warning on line 258 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L258

Did you really mean 'openrouter'?

### Request body

Expand All @@ -266,7 +266,7 @@
| `config` | object | No | Agent configuration |
| `tier` | string | No | Subscription tier hint. Options: `starter`, `pro`, `enterprise`. This value is forwarded to the backend as the `plan` field (mapped to `solo`, `collective`, `label`, `network`). When omitted, the backend deployment defaults to `label`. |

<Note>The web proxy enforces agent limits based on the subscription tier (`starter`: 1, `pro`: 3, `enterprise`: 100). The backend provisioning route (`POST /api/provision`) enforces its own limits (`solo`: 1, `collective`: 3, `label`: 10, `network`: unlimited). Each plan maps to a Render instance type: `solo` → `starter` (512 MB RAM), `collective` → `standard` (2 GB RAM), `label` → `pro` (4 GB RAM), `network` → `pro_plus` (8 GB RAM). The limit cannot be overridden in the request body.</Note>
<Note>The web proxy enforces agent limits based on the subscription tier (`starter`: 1, `pro`: 3, `enterprise`: 100). The backend provisioning route (`POST /api/provision`) enforces its own limits (`solo`: 1, `collective`: 3, `label`: 10, `network`: practically unlimited). Plan resource allocations: `solo` → 2 GB RAM / 1 CPU, `collective` → 4 GB RAM / 2 CPUs, `label` → 8 GB RAM / 4 CPUs, `network` → 16 GB RAM / 4 CPUs. The limit cannot be overridden in the request body.</Note>

### Admin bypass

Expand Down Expand Up @@ -393,7 +393,7 @@
| `version` | string | Clone service version |
| `protocol` | string | Payment protocol used |
| `clonePrice` | string | Current price to clone an agent |
| `chainId` | number | Blockchain chain ID for payments |

Check warning on line 396 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L396

Did you really mean 'Blockchain'?

## List provisioned agents

Expand Down Expand Up @@ -636,7 +636,7 @@

Both patterns support the same actions. The examples below use the backend pattern.

<Note>All lifecycle operations require the Render API to be available. When the Render API is unreachable, these endpoints return `500` with an error message describing the failure. You can check availability using the [backend health endpoint](/api-reference/health#backend-health-check) — when the `render` field is `unavailable`, lifecycle operations will fail. The API itself continues to serve non-lifecycle endpoints normally.</Note>
<Note>All lifecycle operations require the Render API to be available. When the Render API is unreachable, these endpoints return `500` with an error message describing the failure. You can check availability using the [backend health endpoint](/api-reference/health#backend-health-check) — when the `docker` field is `unavailable`, lifecycle operations will fail. The API itself continues to serve non-lifecycle endpoints normally.</Note>

### Start agent

Expand Down Expand Up @@ -724,7 +724,7 @@
| `backupPath` | string \| null | Path to the pre-update backup archive |
| `openclawVersion` | string | Current OpenClaw runtime version |

<Note>When the new service fails to start, the endpoint reverts to `previousImage`. The caller still receives a `500` error, but the agent is restored to its prior working state. The pre-update backup remains available at `backupPath` for manual recovery if needed.</Note>

Check warning on line 727 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L727

Did you really mean 'previousImage'?

Check warning on line 727 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L727

Did you really mean 'backupPath'?

#### Errors

Expand Down Expand Up @@ -855,7 +855,7 @@

## Agent verification

Agents can be verified using multiple verification types: `eas` (Ethereum Attestation Service), `coinbase`, `ens`, or `webauthn`.

Check warning on line 858 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L858

Did you really mean 'Ethereum'?

### Get verification status

Expand Down Expand Up @@ -894,7 +894,7 @@
| `verifierAddress` | string | No | Address of the verifying wallet |
| `metadata` | object | No | Additional verification metadata |

<Note>The web API always sets `verified: true` on success. When calling the backend directly, you can pass `verified`, `verifierAddress`, and `metadata` explicitly.</Note>

Check warning on line 897 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L897

Did you really mean 'verifierAddress'?

#### Response

Expand Down Expand Up @@ -938,7 +938,7 @@

<Warning>This endpoint is subject to the general rate limit of 120 requests per minute per IP.</Warning>

The request is proxied to the backend provisioning service. When `MUX_TOKEN_ID` and `MUX_TOKEN_SECRET` are configured, the backend creates a real Mux live stream via the Mux API with public playback policy. When Mux credentials are not configured, placeholder streaming credentials are returned instead.

Check warning on line 941 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L941

Did you really mean 'proxied'?

Check warning on line 941 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L941

Did you really mean 'Mux'?

Check warning on line 941 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L941

Did you really mean 'Mux'?

Check warning on line 941 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L941

Did you really mean 'Mux'?

### Request body

Expand Down Expand Up @@ -973,13 +973,13 @@
}
```

<Note>The `/api/provision` proxy returns only `success`, `userId`, `subdomain`, `url`, `streamKey`, and `liveStreamId`. The full response shape from the backend provisioning service is shown below.</Note>

Check warning on line 976 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L976

Did you really mean 'userId'?

Check warning on line 976 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L976

Did you really mean 'streamKey'?

### Full backend response

When calling the backend provisioning service directly, the response includes additional fields.

<Warning>Channel tokens (`telegramToken`, `discordBotToken`, `whatsappToken`) are no longer included in the provision response. Tokens are write-only secrets — they are stored server-side but never returned to the caller.</Warning>

Check warning on line 982 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L982

Did you really mean 'telegramToken'?

Check warning on line 982 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L982

Did you really mean 'whatsappToken'?

```json
{
Expand Down Expand Up @@ -1025,22 +1025,20 @@
"container": {
"name": "agentbot-agent-a1b2c3d4e5",
"status": "running",
"serviceId": "srv-abc123def456",
"url": "https://agentbot-agent-a1b2c3d4e5.onrender.com"
"port": 19000,
"gatewayUrl": "http://127.0.0.1:19000"
}
}
```

<Note>The `container` object is included when the backend successfully creates a Render service for the agent. If service creation fails (for example, when the Render API is unavailable), provisioning still succeeds and the `container` field is omitted. The agent can operate using API-side processing until the service becomes available. You can check Render API availability using the [backend health endpoint](/api-reference/health#backend-health-check).</Note>
<Note>The `container` object is included when the backend successfully creates a service for the agent. If service creation fails (for example, when the Render API is unavailable), provisioning still succeeds and the `container` field is omitted. The agent can operate using API-side processing until the service becomes available. You can check Render API availability using the [backend health endpoint](/api-reference/health#backend-health-check).</Note>

| Field | Type | Description |
|-------|------|-------------|
| `container.name` | string | Render service name |
| `container.name` | string | Service container name |
| `container.status` | string | Service status (for example, `running`, `suspended`) |
| `container.serviceId` | string | Render service identifier |
| `container.url` | string | Public URL of the deployed Render service |

<Warning>The following `container` response fields are deprecated and no longer returned: `port`, `gatewayUrl`. Agents are now provisioned as Render web services with a public URL instead of local Docker containers with mapped ports.</Warning>
| `container.port` | number | Host port mapped to the agent's internal gateway port (`18789`) |
| `container.gatewayUrl` | string | Local gateway URL in the format `http://127.0.0.1:<port>` |

### Errors

Expand All @@ -1049,7 +1047,7 @@
| 400 | At least one channel token required (Telegram, WhatsApp, or Discord), or invalid `aiProvider` value |
| 400 | Invalid plan value. The `plan` field must be one of `solo`, `collective`, `label`, or `network`. Unrecognized values (including the default `free`) return this error. |
| 402 | Active subscription required. Returned when a valid plan is specified but no Stripe subscription ID is provided and the caller is not an admin or tester. The response body includes a `code` field set to `PAYMENT_REQUIRED`. |
| 402 | Agent limit reached for your plan. The response body includes a `code` field set to `AGENT_LIMIT_REACHED`, along with `current` (current agent count) and `limit` (maximum allowed) fields. Provisioning limits: `solo` 1, `collective` 3, `label` 10, `network` unlimited. |
| 402 | Agent limit reached for your plan. The response body includes a `code` field set to `AGENT_LIMIT_REACHED`, along with `current` (current agent count) and `limit` (maximum allowed) fields. Provisioning limits: `solo` 1, `collective` 3, `label` 10, `network` practically unlimited. |
| 500 | Internal server error |
| 502 | Provisioning service unavailable or returned an error. All backend URLs failed or returned non-success responses. |
| 503 | Provisioning is temporarily disabled (kill switch active) |
Expand Down Expand Up @@ -1081,12 +1079,12 @@
| `gemini` | `gemini-2.0-flash` | `https://generativelanguage.googleapis.com/v1beta/models` |
| `groq` | `mixtral-8x7b-32768` | `https://api.groq.com/openai/v1` |
| `anthropic` | `claude-3-sonnet-20240229` | `https://api.anthropic.com/v1` |
| `openai` | `openai/gpt-4o` | `https://api.openai.com/v1` |
| `openai` | `gpt-4o` | `https://api.openai.com/v1` |
| `minimax` | `MiniMax/MiniMax-Text-01` | `https://api.minimax.chat/v1` |

Each provider includes a fallback model in the service config that is used automatically when the primary model is unavailable or returns an error.

<Note>`minimax` is available as a fallback in the provider configuration map but is not currently accepted as a value for the `aiProvider` request parameter. Passing `minimax` as `aiProvider` returns a `400` validation error. This provider may be enabled in a future release.</Note>

Check warning on line 1087 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L1087

Did you really mean 'minimax'?

Check warning on line 1087 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L1087

Did you really mean 'aiProvider'?

Check warning on line 1087 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L1087

Did you really mean 'minimax'?

## Channel configuration

Expand Down Expand Up @@ -1121,7 +1119,7 @@
|---------|-------|-------------|
| `dmPolicy` | `allowlist` or `pairing` | `allowlist` when owner IDs are provided, `pairing` otherwise |
| `dm.enabled` | `true` | Accept direct messages |
| `dm.groupEnabled` | `false` | Group DMs are disabled |

Check warning on line 1122 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L1122

Did you really mean 'DMs'?
| `historyLimit` | `20` | Number of messages retained in context |
| `streaming` | `partial` | Enable partial message streaming |
| `retry.attempts` | `3` | Maximum retry attempts |
Expand Down Expand Up @@ -1478,7 +1476,7 @@
|-------|------|----------|-------------|
| `action` | string | Yes | `set-credential` |
| `key` | string | Yes | Credential key (for example, `anthropic`, `telegram`) |
| `value` | string | No | Credential value. When omitted, the credential is marked as unconfigured. |

Check warning on line 1479 in api-reference/agents.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/agents.mdx#L1479

Did you really mean 'unconfigured'?

```json
{
Expand Down
10 changes: 5 additions & 5 deletions api-reference/ai.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -270,14 +270,14 @@

| Plan | Price | Models | Provision limit | Skill limit | A2A messages/day |
|------|-------|--------|-----------------|-------------|------------------|
| `solo` | £29/mo | `openai/gpt-4o-mini`, `openai/gpt-4o`, `google/gemini-2.0-flash`, `anthropic/claude-3.5-sonnet`, `xiaomi/mimo-v2-pro` | 1 | 10 | 500 |
| `collective` | £69/mo | `openai/gpt-4o-mini`, `openai/gpt-4o`, `openai/gpt-4-turbo`, `google/gemini-2.0-flash`, `anthropic/claude-3.5-sonnet`, `anthropic/claude-3-opus`, `xiaomi/mimo-v2-pro` | 3 | 25 | 2,000 |
| `label` | £149/mo | `openai/gpt-4o-mini`, `google/gemini-2.0-flash`, `xiaomi/mimo-v2-pro` | 10 | 3 | 100 |
| `network` | £499/mo | All models | Unlimited | 100 | 10,000 |
| `label` | £29/mo | `openai/gpt-4o-mini`, `google/gemini-2.0-flash`, `xiaomi/mimo-v2-pro` | 1 | 3 | 100 |
| `solo` | £79/mo | `openai/gpt-4o-mini`, `openai/gpt-4o`, `google/gemini-2.0-flash`, `anthropic/claude-3.5-sonnet`, `xiaomi/mimo-v2-pro` | 3 | 10 | 500 |
| `collective` | £199/mo | `openai/gpt-4o-mini`, `openai/gpt-4o`, `openai/gpt-4-turbo`, `google/gemini-2.0-flash`, `anthropic/claude-3.5-sonnet`, `anthropic/claude-3-opus`, `xiaomi/mimo-v2-pro` | 10 | 25 | 2,000 |
| `network` | £499/mo | All models | 100 | 100 | 10,000 |

<Note>Admin users are automatically granted `network`-level access regardless of their subscription plan.</Note>

<Warning>The plan middleware enforces model access based on the `x-user-plan` header. The `label` plan has the smallest model set (3 models) despite having a higher provision limit (10 agents) than `solo`. This is because `label` is designed for label operations where fewer model choices are needed but more agents are required.</Warning>
<Warning>The plan middleware enforces model access based on the `x-user-plan` header. The `label` plan has the smallest model set (3 models) and is the entry-level tier designed for basic operations. The `solo` plan offers more models and a higher skill limit for individual users.</Warning>

## Model fallbacks

Expand All @@ -291,7 +291,7 @@
| `anthropic` | `anthropic/claude-sonnet-4-5` | `openai/gpt-4o` |
| `openai` | `openai/gpt-4o` | `openai/gpt-4o-mini` |

<Note>`minimax` (`MiniMax/MiniMax-Text-01`) is available in the provider configuration map but is not currently supported in the model fallback chain. It may be enabled in a future release.</Note>

Check warning on line 294 in api-reference/ai.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/ai.mdx#L294

Did you really mean 'minimax'?

Fallback routing is handled transparently. The response always indicates which model ultimately served the request via the `model` field.

Expand Down
15 changes: 8 additions & 7 deletions api-reference/health.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -94,19 +94,19 @@
{
"status": "ok",
"timestamp": "2026-03-19T00:00:00Z",
"render": "available",
"provisioning": "enabled"
"docker": "available",
"provisioning": "enabled",
"provider": "render"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `status` | string | Always `ok` when the backend is running |
| `timestamp` | string | ISO 8601 timestamp of the health check |
| `render` | string | Render API availability. `available` when the Render API is reachable, `unavailable` otherwise. |
| `docker` | string | Provisioning infrastructure availability. `available` when the Render API is reachable, `unavailable` otherwise. Despite the field name, this checks the Render API — the name is a legacy artifact from when agents ran as local Docker containers. |
| `provisioning` | string | Agent provisioning capability. `enabled` when the Render API is available, `disabled` otherwise. |

<Warning>The `docker` field is deprecated and no longer returned. Use the `render` field instead to check provisioning infrastructure availability.</Warning>
| `provider` | string | Infrastructure provider. Always `render`. |

### Response when Render API is unavailable

Expand All @@ -116,8 +116,9 @@
{
"status": "ok",
"timestamp": "2026-03-19T00:00:00Z",
"render": "unavailable",
"provisioning": "disabled"
"docker": "unavailable",
"provisioning": "disabled",
"provider": "render"
}
```

Expand Down Expand Up @@ -265,7 +266,7 @@

| Endpoint | Purpose | Description |
|----------|---------|-------------|
| `GET /healthz` | Liveness | Returns `200` when the gateway process is running. Used by the health check to detect crashed or hung services. |

Check warning on line 269 in api-reference/health.mdx

View check run for this annotation

Mintlify / Mintlify Validation (raveculture) - vale-spellcheck

api-reference/health.mdx#L269

Did you really mean 'Liveness'?
| `GET /readyz` | Readiness | Returns `200` when the gateway is ready to accept requests. Use this to verify the service has completed startup before routing traffic. |

Both endpoints are unauthenticated and bind to the service's internal port (`18789`).
Expand Down