Caicaini
Начать

Эндпоинты

POST /v1/chat/completions

Вторичный эндпойнт, повторяющий конвенцию chat-completions. Все модели и все правила пула кредитов из /v1/messages применяются точно так же — отличаются только формы запроса и ответа.

Когда использовать этот эндпойнт

Используй /v1/chat/completions, когда у тебя уже есть клиент, который ждёт именно такую форму запроса/ответа, и ты хочешь подключиться без переписывания вызова. Для нового кода рекомендуем /v1/messages — там полноценная поддержка контент-блоков, инструментов, размышления и изображений; этот эндпойнт показывает только их подмножество.

Базовый вызов

curl https://caicaini.com/v1/chat/completions \
  -H "Authorization: Bearer cai_api_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "caicaini/auto",
    "messages": [
      {"role": "system", "content": "You are concise."},
      {"role": "user",   "content": "Two reasons to use TypeScript over JS in 2026?"}
    ],
    "max_tokens": 256
  }'

Поля запроса

ПолеТипОписание
modelобязательноstringОдин из пяти виртуальных id. По умолчанию для общего трафика — caicaini/auto.
messagesобязательноarraydevelopers.docs.chatCompletions.fieldMessagesDesc
max_tokensintegerЖёсткий потолок на токены завершения. Очень рекомендуется задавать.
temperaturenumber 0–2По умолчанию 1.
top_pnumber 0–1Nucleus sampling.
stopstring | string[]До четырёх стоп-последовательностей.
streambooleanКогда true, сервер отдаёт SSE-чанки. См. Стриминг.
toolsTool[]Описания функций в формате tools chat-completions. См. Инструменты.
tool_choice"none" | "auto" | objectОграничивает выбор инструмента.
response_format{ type: "json_object" }Заставляет модель вернуть валидный JSON. Подкрепи это указанием схемы в системной подсказке.
userstringИдентификатор конечного пользователя. Прокидывается в инструменты антифрода и отчётности.

Ответ

ответ · 200 OK
{
  "id": "chatcmpl_01H8fkx2N3p4q5r6s7t8u9v",
  "object": "chat.completion",
  "created": 1746748800,
  "model": "caicaini/auto",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "1) Catch class-of-bug at compile time. 2) Editor knows your shape."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 22,
    "total_tokens": 53,
    "credits_consumed": 27
  }
}
  • choices[0].message.content содержит текстовый ответ ассистента.
  • choices[0].finish_reason — одно из stop, length, tool_calls, content_filter.
  • usage.credits_consumed — авторитетное значение и совпадает с тем, что увидишь в эквивалентном вызове /v1/messages.

Стриминг на этом эндпойнте

Стриминг использует формат чанков chat-completions: SSE-поток событий chat.completion.chunk, оканчивающийся литеральным фреймом data: [DONE]. Полный справочник событий и примеры разбора — на странице Стриминг.