HTTP 400
Проверьте JSON, роли сообщений, целочисленный лимит ответа и неподдерживаемые поля.
Рабочий контракт POST /v1/chat/completions: авторизация, messages, лимит ответа, streaming, tools, структура результата и ошибки.
Базовый адрес — https://tokenmost.ru/v1. Создайте ключ в личном кабинете, выберите модель в каталоге и отправьте первый запрос. Методы, которые ещё не доступны, отмечены отдельно.
Chat Completions принимает точный model ID и массив messages. Роли system, user и assistant задают инструкцию, новый вопрос и нужную историю. Каждый POST требует Bearer-ключ и уникальный Idempotency-Key.
Укажите TOKENMOST_BASE_URL=https://tokenmost.ru/v1, ключ проекта и точный ID модели из каталога. Пример отправляет запрос в публичный API и может списать средства с баланса по тарифу модели.
curl "$TOKENMOST_BASE_URL/chat/completions" \
-H "Authorization: Bearer $TOKENMOST_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: example-request-0001" \
-d '{
"model": "MODEL_ID_FROM_CATALOG",
"messages": [{"role": "user", "content": "Объясни API в двух предложениях."}],
"max_tokens": 128
}'Передавайте только нужную историю и ограничивайте максимальный ответ. Сетевой повтор выполняйте с тем же Idempotency-Key и неизменным телом.
API не хранит диалог между запросами. Клиент передаёт нужные предыдущие сообщения заново. Чем длиннее история, тем больше входных токенов и стоимость нового запроса.
При stream: false итог находится в choices[0].message. При stream: true клиент читает SSE-события по порядку и считает запрос завершённым только после терминального события и квитанции биллинга.
Модель может вернуть описание вызова функции, но Токенмост не исполняет вашу функцию. Приложение проверяет аргументы, выполняет разрешённое действие и передаёт результат следующим сообщением.
Проверьте JSON, роли сообщений, целочисленный лимит ответа и неподдерживаемые поля.
Передайте действующий ключ как Authorization: Bearer <ключ>.
Не хватает доступного баланса, бюджета ключа или суммы для резерва максимального ответа.
Тот же Idempotency-Key уже связан с другим телом запроса.
Проверьте finish_reason, лимит модели, max_tokens и reasoning-only результат.