OpenAI Chat Completions API
Используйте OpenAI-compatible Chat Completions API BetterToken: полный URL запроса, Bearer API Key и примеры для curl, Python, JavaScript и отладки API.
Вызывайте OpenAI-compatible Chat Completions через POST https://bettertoken.ai/v1/chat/completions. Большинству внешних инструментов нужен только Base URL https://bettertoken.ai/v1: путь /chat/completions они добавляют самостоятельно.
Ключевые параметры
| Поле | Значение |
|---|---|
| API Key | API Key BetterToken |
| Полный URL запроса | https://bettertoken.ai/v1/chat/completions |
| Model | YOUR_MODEL_ID |
Подготовка
- Создайте API Key BetterToken
- Скопируйте Model ID из model plaza или окна Setup для ключа
- Подготовьте терминал с
curl, либо Python 3 / Node.js
Установка
curl
Для curl не нужен SDK. Проверьте команду curl --version.
Python
python -m pip install openaiJavaScript
npm install openaiРучная настройка
curl
curl "https://bettertoken.ai/v1/chat/completions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "model": "YOUR_MODEL_ID", "messages": [ { "role": "user", "content": "Привет" } ] }'Python SDK
from openai import OpenAI
client = OpenAI( api_key="YOUR_API_KEY", base_url="https://bettertoken.ai/v1",)
response = client.chat.completions.create( model="YOUR_MODEL_ID", messages=[ {"role": "user", "content": "Привет"}, ],)
print(response.choices[0].message.content)JavaScript SDK
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://bettertoken.ai/v1",});
const response = await client.chat.completions.create({ model: "YOUR_MODEL_ID", messages: [{ role: "user", content: "Привет" }],});
console.log(response.choices[0].message.content);Проверка подключения
В Playground справа:
- Укажите
YOUR_API_KEYв разделе Authorization. - Замените
modelнаYOUR_MODEL_ID. - Измените
messagesи отправьте запрос.
Playground уже использует полный URL https://bettertoken.ai/v1/chat/completions.
Ответ 200 с текстом модели в choices[0].message.content подтверждает подключение.
Смена модели
Замените YOUR_MODEL_ID на полный Model ID из model plaza или окна Setup. Не сокращайте Model ID по отображаемому названию.
Частые ошибки
| Ошибка | Решение |
|---|---|
401 | Проверьте Authorization: Bearer YOUR_API_KEY и снова скопируйте API Key BetterToken. |
404 | Для прямого HTTP-запроса используйте https://bettertoken.ai/v1/chat/completions; для base_url SDK — https://bettertoken.ai/v1. |
| Модель не найдена | Используйте полный Model ID из model plaza или окна Setup. |
| Неверный запрос | Проверьте, что messages — массив, а каждый элемент содержит role и content. |
Технические детали
Base URL и полный URL запроса
Инструментам, которым нужен полный URL запроса, например GitHub Copilot и TRAE, укажите https://bettertoken.ai/v1/chat/completions. В Cursor, Cline, OpenCode, n8n и Dify, которые сами добавляют путь, укажите только https://bettertoken.ai/v1.
/v1/chat/completionsАвторизации
Используйте API Key BetterToken как bearer token. Не публикуйте API keys во frontend-коде, скриншотах, логах, тикетах или Git-репозиториях.
Тело application/json
ID доступной выбранной модели. Ориентируйтесь на актуальный список в model plaza.
"YOUR_MODEL_ID"Массив сообщений диалога. Каждый элемент должен содержать role и content.
Show child attributes
"user""Привет"Запрашивать ли потоковый ответ.
Ответ
200Ответ Chat Completions API от выбранной модели.
Ответ OpenAI-compatible Chat Completions API. Поля зависят от выбранной модели и параметров запроса.
{}400Неверный формат запроса, отсутствующие параметры, ошибка разбора JSON или multipart, либо неверный формат размера.
Show child attributes
"invalid request""invalid_request_error""invalid_request""insufficient quota"{
"error": {
"message": "invalid request",
"type": "invalid_request_error",
"code": "invalid_request"
},
"message": "insufficient quota"
}401API Key отсутствует или недействителен.
Show child attributes
"invalid request""invalid_request_error""invalid_request""insufficient quota"{
"error": {
"message": "invalid request",
"type": "invalid_request_error",
"code": "invalid_request"
},
"message": "insufficient quota"
}402Недостаточно квоты или баланса.
Show child attributes
"invalid request""invalid_request_error""invalid_request""insufficient quota"{
"error": {
"message": "invalid request",
"type": "invalid_request_error",
"code": "invalid_request"
},
"message": "insufficient quota"
}429Сработал rate limit, лимит параллельных запросов или upstream временно перегружен.
Show child attributes
"invalid request""invalid_request_error""invalid_request""insufficient quota"{
"error": {
"message": "invalid request",
"type": "invalid_request_error",
"code": "invalid_request"
},
"message": "insufficient quota"
}500Ошибка gateway или upstream-сервиса.
Show child attributes
"invalid request""invalid_request_error""invalid_request""insufficient quota"{
"error": {
"message": "invalid request",
"type": "invalid_request_error",
"code": "invalid_request"
},
"message": "insufficient quota"
}
