API
Claude API: подключение, SDK и совместимость
Anthropic-совместимый эндпоинт и OpenAI-совместимый эндпоинт поверх тех же моделей Claude. Интеграция — это две правки в уже написанном коде: base_url и ключ.
Endpoints и авторизация
https://app.claudich.dev/v1/messages https://app.claudich.dev/v1/chat/completions
Авторизация: Authorization: Bearer <ваш_api_ключ>. Для прямых HTTP-запросов также
поддерживается заголовок x-api-key.
Официальная документация Anthropic API подходит без адаптации: те же поля запроса и формат ответа,
меняются только base_url и ключ.
Примеры подключения
curl https://app.claudich.dev/v1/messages \
-H "x-api-key: ВАШ_КЛЮЧ_CLAUDICH" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Привет!"}]
}' from anthropic import Anthropic
client = Anthropic(
api_key="ВАШ_КЛЮЧ_CLAUDICH",
base_url="https://app.claudich.dev/v1",
)
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Привет!"}],
)
print(message.content) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "ВАШ_КЛЮЧ_CLAUDICH",
baseURL: "https://app.claudich.dev/v1",
});
const message = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Привет!" }],
});
console.log(message.content); {
"env": {
"ANTHROPIC_BASE_URL": "https://app.claudich.dev",
"ANTHROPIC_API_KEY": "",
"ANTHROPIC_DEFAULT_FABLE_MODEL": "claude-fable-5",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4.5",
"ANTHROPIC_AUTH_TOKEN": "ВАШ_КЛЮЧ_CLAUDICH",
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-sonnet-5"
},
"model": "claude-sonnet-5"
} {
"gateway": {
"port": 18789,
"mode": "local",
"bind": "loopback"
},
"models": {
"mode": "merge",
"providers": {
"claudich": {
"api": "anthropic-messages",
"baseUrl": "https://app.claudich.dev/v1",
"apiKey": "ВАШ_КЛЮЧ_CLAUDICH",
"headers": {
"x-client-provider": "openclaw"
},
"timeoutSeconds": 600,
"models": [
{ "id": "claude-fable-5", "name": "Claude Fable 5", "input": ["text", "image"] },
{ "id": "claude-sonnet-5", "name": "Claude Sonnet 5", "input": ["text", "image"] },
{ "id": "claude-opus-5", "name": "Claude Opus 5", "input": ["text", "image"] },
{ "id": "claude-opus-5-fast", "name": "Claude Opus 5 Fast", "input": ["text", "image"] },
{ "id": "claude-haiku-4.5", "name": "Claude Haiku 4.5", "input": ["text", "image"] }
]
}
}
},
"agents": {
"defaults": {
"model": { "primary": "claudich/claude-sonnet-5" }
}
}
} Что поддерживается
| Streaming (SSE) | есть | |
| Tool calls / function calling | есть | |
| system prompt | есть | |
| temperature, top_p | есть | |
| top_k | есть | только в Anthropic-эндпоинте — не часть OpenAI API |
| stop_sequences / stop | есть | |
| max_tokens | есть | выше лимита модели — автоматически ограничивается максимумом |
| Prompt caching (cache_control) | есть | только в Anthropic-эндпоинте |
| Extended thinking | есть | только в Anthropic-эндпоинте |
| Изображения / вложения | есть | |
| usage (токены, cache read/write) | есть |
Чего у меня нет
Claudich не полная копия платформ Anthropic или OpenAI. Не поддерживаются:
- не-Anthropic модели
- Batch API
- embeddings
- assistants API
- responses API
- vector stores
- платформенный Files API (/v1/files)
Некоторые OpenAI-специфичные параметры не влияют на поведение Claude-моделей и игнорируются:
logprobs, top_logprobs, seed, n,
frequency_penalty, presence_penalty, logit_bias, response_format.
Ошибки
При ошибке Anthropic-эндпоинт возвращает {"type":"error","error":{"type":"...","message":"..."}},
OpenAI-эндпоинт — {"error":{"message":"...","type":"...","code":"...","param":null}}. HTTP-статус
в обоих случаях соответствует смыслу ошибки — это то, что проверяют официальные SDK.
| Код | Значение | Типичная причина |
|---|---|---|
400 | invalid_request_error | Некорректное тело запроса — отсутствуют обязательные поля, неверный формат сообщений. |
401 | authentication_error | Неверный или отсутствующий API-ключ. |
402 | billing_error / insufficient_funds | Недостаточно баланса или превышен лимит расходов по ключу. |
403 | permission_error | Аккаунт заблокирован. |
409 | conflict_error | Повторный запрос с тем же Idempotency-Key ещё выполняется или использован с другим телом. |
429 | rate_limit_error / rate_limited | Превышен лимит запросов — по IP, по ключу, или лимит апстрим-провайдера. |
500 | api_error | Внутренняя ошибка гейтвея. |
503 | overloaded_error / api_error | Апстрим-провайдер временно недоступен или перегружен — стоит повторить запрос позже. |