Основное API
Чатовые ответы
Главный метод AllTokens: POST /api/v1/chat/completions.
POST /api/v1/chat/completions — главный метод AllTokens для работы с LLM в совместимом с OpenAI формате.
Когда использовать
- чат-интерфейсы
- сценарии помощника в коде и чате
- вызов инструментов
- потоковые ответы
- маршрутизация через
alltokens/autoиalltokens/free
Request
curl -X POST "https://api.alltokens.ru/api/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "alltokens/auto",
"messages": [
{"role": "system", "content": "Отвечай кратко."},
{"role": "user", "content": "Объясни, что такое векторная база данных"}
],
"temperature": 0.2,
"stream": false,
"metadata": {
"objective": "balanced"
}
}'
Главные поля запроса
| Поле | Тип | Что делает |
|---|---|---|
model | string | Конкретная модель или routing-модель alltokens/auto / alltokens/free |
messages | array | История диалога |
stream | boolean | Включает потоковый ответ через серверные события |
temperature | number | Управляет вариативностью ответа |
max_tokens | integer | Ограничивает размер ответа |
metadata | object | Цели маршрутизации и ограничения |
extra_body | object | Альтернативное место для параметров маршрутизации |
Поддерживаемые параметры маршрутизации
| Поле | Тип |
|---|---|
objective | cheapest | fastest | reliable | balanced |
allowed_models | string[] |
blocked_models | string[] |
provider_policy | object |
Response
{
"id": "gen-...",
"object": "chat.completion",
"model": "openai/gpt-4.1-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Vector database хранит embeddings и умеет искать похожие записи."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 13,
"total_tokens": 37,
"cost": 0.72
}
}
Что важно в ответе
| Поле | Зачем нужно |
|---|---|
id | Используйте для generation и route/explain |
choices[0].message.content | Основной текст ответа |
usage.cost | Сведения о стоимости запроса |
model | Фактическая модель, если ответ был не потоковым |
Потоковый ответ
Передайте "stream": true, если хотите получать поток через серверные события.
Коды ответов
| Код | Причина |
|---|---|
400 | Невалидный JSON или отсутствуют обязательные поля |
401 | Проблема с ключом |
402 | Недостаточно баланса |
404 | Не найдена модель или не осталось подходящих кандидатов под ограничения |
429 | Превышена допустимая частота запросов |
Частые вопросы
Какой минимальный body нужен для рабочего запроса?
Какой минимальный body нужен для рабочего запроса?
В большинстве случаев достаточно model и messages. Всё остальное, включая stream, temperature и metadata, лучше добавлять уже после того, как базовый запрос стабильно заработал.
Куда класть metadata: в metadata или extra_body?
Куда класть metadata: в metadata или extra_body?
Если ваш клиент позволяет, используйте обычное поле metadata как основной и более понятный вариант. extra_body полезен как обходной путь для SDK или обвязок, которые не дают пробросить произвольные поля напрямую.
Чем этот метод отличается от completions?
Чем этот метод отличается от completions?
chat/completions работает с массивом messages и лучше подходит для современных чатовых и агентных сценариев. completions уместнее там, где у вас уже есть старый формат с одиночным prompt.
Когда включать stream в этом методе?
Когда включать stream в этом методе?
Включайте stream, если ответ нужно показывать пользователю частями сразу по мере генерации. Если важнее простота интеграции и обработки ответа, начните с обычного нестримингового вызова.