OpenClaw
Add OneProvider to OpenClaw as a custom anthropic-messages provider in its config file. On restart the client adds it to its model list for you.
Add OneProvider as a custom Anthropic-messages provider in OpenClaw's config. The client auto-merges the provider into its model catalogue on restart.
All models, capabilities, and prices Documentation index for AI agents:https://oneprovider.dev/docs/llms.txt Before you start: a key from your cabinet Open your cabinet: the Telegram bot @oneprovider_robot (Account) or app.oneprovider.dev . Press “Issue a key”, give it a name (for example, this client) and a spend limit, and copy the key. You top up the balance in the same place. More about the cabinet and keys . Configure
Default config path: ~/.config/openclaw/openclaw.json. Create the file if it doesn’t exist, paste the snippet below, and restart OpenClaw.
{
"models": {
"mode": "merge",
"providers": {
"oneprovider": {
"baseUrl": "https://api.oneprovider.dev",
"apiKey": "sk-your-key-here",
"api": "anthropic-messages",
"models": [
{
"id": "claude-fable-5",
"name": "Claude Fable 5",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 10,
"output": 50,
"cacheRead": 1,
"cacheWrite": 12.5
},
"contextWindow": 1000000
},
{
"id": "claude-haiku-4-5",
"name": "Claude Haiku 4.5",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 1,
"output": 5,
"cacheRead": 0.1,
"cacheWrite": 1.25
},
"contextWindow": 200000,
"maxTokens": 64000
},
{
"id": "claude-haiku-4-5-20251001",
"name": "Claude Haiku 4.5 20251001",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 1,
"output": 5,
"cacheRead": 0.1,
"cacheWrite": 1.25
},
"contextWindow": 200000,
"maxTokens": 64000
},
{
"id": "claude-haiku-4-5-20251001-thinking",
"name": "Claude Haiku 4.5 20251001 Thinking",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 1,
"output": 5,
"cacheRead": 0.1,
"cacheWrite": 1.25
}
},
{
"id": "claude-haiku-4-5-thinking",
"name": "Claude Haiku 4.5 Thinking",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 1,
"output": 5,
"cacheRead": 0.1,
"cacheWrite": 1.25
}
},
{
"id": "claude-opus-4-7",
"name": "Claude Opus 4.7",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 5,
"output": 25,
"cacheRead": 0.5,
"cacheWrite": 6.25
},
"contextWindow": 1000000,
"maxTokens": 128000
},
{
"id": "claude-opus-4-8",
"name": "Claude Opus 4.8",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 5,
"output": 25,
"cacheRead": 0.5,
"cacheWrite": 6.25
},
"contextWindow": 1000000,
"maxTokens": 128000
},
{
"id": "claude-opus-5",
"name": "Claude Opus 5",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 5,
"output": 25,
"cacheRead": 0.5,
"cacheWrite": 6.25
},
"contextWindow": 1000000,
"maxTokens": 128000
},
{
"id": "claude-opus-5-5",
"name": "Claude Opus 5.5",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 4,
"output": 20,
"cacheRead": 0.2,
"cacheWrite": 5
},
"contextWindow": 1000000,
"maxTokens": 128000
},
{
"id": "claude-sonnet-5-5",
"name": "Claude Sonnet 5.5",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 2,
"output": 10,
"cacheRead": 0.1,
"cacheWrite": 2.5
},
"contextWindow": 1000000
},
{
"id": "claude-haiku-5-5",
"name": "Claude Haiku 5.5",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 0.1,
"output": 0.5,
"cacheRead": 0.01,
"cacheWrite": 0.125
},
"contextWindow": 1000000,
"maxTokens": 128000
},
{
"id": "claude-opus-5-thinking",
"name": "Claude Opus 5 Thinking",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 5,
"output": 25,
"cacheRead": 0.5,
"cacheWrite": 6.25
}
},
{
"id": "claude-sonnet-4-6",
"name": "Claude Sonnet 4.6",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 3,
"output": 15,
"cacheRead": 0.3,
"cacheWrite": 3.75
},
"contextWindow": 1000000,
"maxTokens": 64000
},
{
"id": "claude-sonnet-5",
"name": "Claude Sonnet 5",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 2,
"output": 10,
"cacheRead": 0.2,
"cacheWrite": 2.5
},
"contextWindow": 1000000
},
{
"id": "claude-sonnet-5-thinking",
"name": "Claude Sonnet 5 Thinking",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 2,
"output": 10,
"cacheRead": 0.2,
"cacheWrite": 2.5
},
"contextWindow": 1000000
},
{
"id": "claude-fable-5-1",
"name": "Claude Fable 5.1",
"api": "anthropic-messages",
"input": [
"text",
"image"
],
"cost": {
"input": 10,
"output": 50,
"cacheRead": 0.25,
"cacheWrite": 12.5
},
"contextWindow": 1000000
}
]
}
}
}
} mode: "merge" keeps OpenClaw’s built-in providers alongside OneProvider — drop it to "replace" if you only want Claude through us.
Quick answers
Which base URL do I use?
Claude Code and Anthropic SDKs use https://api.oneprovider.dev. OpenAI SDKs and OpenAI-compatible clients use https://api.oneprovider.dev/v1. One key works behind both; the model list is on the models page ; rates are on the pricing page .
How do I authenticate?
Send the raw sk-… key in x-api-key or Authorization: Bearer: one of them, never both. Keep the key in an environment variable, not in a file that gets committed. More on authentication .
Where do I get a key?
Open your cabinet in the Telegram bot @oneprovider_robot or at app.oneprovider.dev, top up the balance and press “Issue a key”. Each key can carry its own spend limit. Cabinet & API keys .
What do 401, 404 and 429 mean?
401: the key is missing, mistyped or sent in the wrong header; paste the whole key without quotes or spaces. 404: usually a wrong base URL, for example a missing or doubled /v1. 429 with “Insufficient balance”: the cabinet balance or the key’s spend limit is used up, so top up instead of retrying; any other 429 is a rate limit, so wait for Retry-After. Details: error codes and troubleshooting .
Why do streams cut off or reset?
VPN and VLESS proxies often buffer SSE or break HTTP/2 negotiation. OneProvider has no regional restrictions and does not buffer streams, so turn the proxy off and retry.
Where do I ask if this is not enough?
Message @Oneproviderhelpbot on Telegram or open “Support” in the web cabinet, with the HTTP status code and the exact error message. How support works .
Last updated: 2026-10-05 Found a bug? @Oneproviderhelpbot