API

Подключение к API

API совместим с OpenAI (Chat Completions, Responses, Images) и Anthropic (Messages). Подходит любой клиент, где можно указать свой адрес и ключ. Ключ создаётся в профиле, вкладка API.

Базовый адрес
https://slafy.co/v1
Для Anthropic SDK
https://slafy.co, SDK сам добавит /v1
Ключ
заголовок Authorization: Bearer sk-slafy-… или x-api-key: sk-slafy-…
Список моделей
GET /v1/models, цены на странице Тарифы
Усилия модели
reasoning_effort (в Responses reasoning.effort): low, medium, high, xhigh, max или ultra, это максимум для выбранной модели. Если модель не знает значение, Slafy подставит ближайшее, а у моделей без настройки усилий параметр уберёт

Эндпоинты

Метод и путьФормат
POST /v1/chat/completionsOpenAI Chat Completions, стриминг поддерживается
POST /v1/responsesOpenAI Responses
POST /v1/messagesAnthropic Messages, стриминг поддерживается
POST /v1/messages/count_tokensAnthropic, подсчёт токенов, бесплатно
POST /v1/images/generationsOpenAI Images, ответ в b64_json
POST /v1/images/editsOpenAI Images, multipart/form-data
GET /v1/modelsСписок доступных моделей

Какая модель работает через какой эндпоинт, видно в тарифах.

Claude Code

Задайте переменные окружения перед запуском claude:

export ANTHROPIC_BASE_URL="https://slafy.co"
export ANTHROPIC_AUTH_TOKEN="sk-slafy-ваш_ключ"
export ANTHROPIC_MODEL="claude-sonnet-5-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-5-5"

Codex CLI

Добавьте провайдера в ~/.codex/config.toml и положите ключ в переменную SLAFY_API_KEY:

model = "gpt-6.1-sol"
model_provider = "slafy"

[model_providers.slafy]
name = "Slafy"
base_url = "https://slafy.co/v1"
env_key = "SLAFY_API_KEY"
wire_api = "responses"

Cursor, Cline, Continue, Roo Code

Выберите провайдера «OpenAI Compatible», укажите Base URL https://slafy.co/v1, ключ и имя модели, например claude-sonnet-5-5.

Python, OpenAI SDK

from openai import OpenAI

client = OpenAI(base_url="https://slafy.co/v1", api_key="sk-slafy-ваш_ключ")
r = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Привет"}],
)
print(r.choices[0].message.content)

Python, Anthropic SDK

import anthropic

client = anthropic.Anthropic(base_url="https://slafy.co", api_key="sk-slafy-ваш_ключ")
m = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Привет"}],
)
print(m.content[0].text)

curl, стриминг

curl https://slafy.co/v1/messages \
  -H "x-api-key: sk-slafy-ваш_ключ" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-5-5", "max_tokens": 512, "stream": true,
       "messages": [{"role": "user", "content": "Расскажи анекдот"}]}'

Ошибки

HTTPКодЧто делать
401invalid_api_keyКлюч не найден или отключён. Скопируйте его из профиля полностью.
402insufficient_balanceТокены закончились, пополните баланс.
402key_limit_reachedКлюч упёрся в свой лимит расходов, поднимите лимит во вкладке API.
404model_not_foundНет такой модели. Проверьте имя по GET /v1/models.
429rate_limit_exceededСлишком часто. Повторите через несколько секунд.
5xxupstream_errorСбой на стороне модели, запрос не оплачивается. Повторите.

В каждом ответе есть заголовок x-request-id, по нему запрос находится в истории.