Перейти к содержимому
NotHolyДокументация

Справочник API

Chat completions

POST /v1/chat/completions в формате OpenAI, со стримингом, инструментами, изображениями и рассуждениями.

Открыть как Markdown

Запрос и ответ OpenAI Chat Completions на моделях NotHoly. Направьте OpenAI SDK на base URL, больше ничего менять не нужно.

POSThttps://api.notholy.com/v1/chat/completions

Запрос

ПолеТипОбязательноеПримечания
modelstringДаID модели, например notholy-specter. См. Модели
messagesarrayДаРоли system, developer (читается как system), user, assistant и tool. Содержимое — строка или список частей text и image_url
max_completion_tokens / max_tokensnumberНетЛимит выхода. Если заданы оба, действует max_completion_tokens. По умолчанию максимальный выход модели; большее значение возвращает 400
streambooleanНетtrue возвращает server-sent events. См. Стриминг
toolsarrayНетТолько функции. Другие типы инструментов возвращают 400 unsupported_parameter
tool_choicestring или objectНетПередаётся модели, если задано tools
reasoning_effortstringНетОдно из значений reasoning_efforts модели. Любое другое значение возвращает 400. См. Рассуждения
response_formatobjectНетПередаётся модели
temperature, top_p, stopnumber, number, string или arrayНетПередаются модели
nnumberНетТолько 1

Неизвестные поля игнорируются. Изображения принимаются моделями, у которых в input_modalities есть image; у остальных они возвращают 400 unsupported_parameter.

Ответ без стриминга

JSON
{
  "id": "chatcmpl-8Kp2c1Vx",
  "object": "chat.completion",
  "created": 1793836800,
  "model": "notholy-specter",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "An IDOR lets a user read or change another user's object by changing its ID…",
        "refusal": null,
        "reasoning_content": "…"
      },
      "finish_reason": "stop",
      "logprobs": null
    }
  ],
  "usage": {
    "prompt_tokens": 42,
    "completion_tokens": 118,
    "total_tokens": 160,
    "prompt_tokens_details": { "cached_tokens": 0 },
    "completion_tokens_details": { "reasoning_tokens": 64 }
  }
}
  • reasoning_content есть, только если модель рассуждала.
  • При вызовах инструментов message.tool_calls содержит элементы {id, type: "function", function: {name, arguments}}, finish_reason равен tool_calls, а content равен null, если текста нет.
  • finish_reason принимает значения stop, length, tool_calls или content_filter.
  • При стриминге последний чанк перед data: [DONE] всегда содержит usage, независимо от того, отправляете ли вы stream_options.include_usage.

Пример

curl https://api.notholy.com/v1/chat/completions \
  -H "Authorization: Bearer $NOTHOLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "notholy-specter",
    "messages": [
      {"role": "system", "content": "You are reviewing code for an authorized assessment."},
      {"role": "user", "content": "What does a missing ownership check in GET /api/invoices/:id lead to?"}
    ]
  }'

Заголовки ответа

ЗаголовокЗначение
x-request-idОтправьте его в поддержку, когда сообщаете о проблеме
x-notholy-concurrency-limitСколько запросов можно выполнять одновременно
x-notholy-concurrency-remainingСвободные слоты на момент начала этого запроса
x-notholy-credits-remainingДоступные кредиты в долларах США на момент начала этого запроса

Ошибки

400 неверное тело или параметр · 401 ключ отсутствует или неверен · 402 не хватает кредитов или бюджета ключа · 403 ключу нельзя использовать эту модель · 404 неизвестная модель · 429 лимит запросов или параллельности (соблюдайте retry-after) · 502/504 модель упала или не ответила вовремя · 503 модель недоступна. Полная таблица: Ошибки.