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

Справочник API

Messages (Anthropic)

POST /v1/messages в формате Anthropic Messages, который используют SDK Anthropic и Claude Code.

Открыть как Markdown

Запрос и ответ Anthropic Messages на моделях NotHoly. SDK Anthropic принимают base URL https://api.notholy.com, без /v1. Работают и x-api-key, и Authorization: Bearer.

POSThttps://api.notholy.com/v1/messages

Запрос

ПолеТипОбязательноеПримечания
modelstringДаID модели, например notholy-specter
max_tokensnumberДаБольше 0. Не больше максимального выхода модели
messagesarrayДаХоды user и assistant с блоками text, image, tool_use и tool_result. Ходы system между сообщениями тоже принимаются
systemstring или arrayНетТолько текстовые блоки
toolsarrayНетВаши собственные инструменты с input_schema. Серверные инструменты вроде поиска в вебе пропускаются
tool_choiceobjectНетauto, any, none или {"type": "tool", "name": …}
thinkingobjectНет{"type": "enabled", "budget_tokens": N} или {"type": "adaptive"} включает рассуждения
output_config.effortstringНетГлубина рассуждений; приоритетнее thinking. Приводится к ближайшему уровню, который есть у модели
stop_sequences, temperature, top_pНетПередаются модели
streambooleanНетtrue возвращает события стрима Anthropic

POST /v1/messages/count_tokens принимает то же тело и возвращает {"input_tokens": n} — оценку без вызова модели.

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

JSON
{
  "id": "msg_3Jd8a",
  "type": "message",
  "role": "assistant",
  "model": "notholy-specter",
  "content": [
    { "type": "thinking", "thinking": "…", "signature": "nh" },
    { "type": "text", "text": "A Sigma rule is a generic detection rule in YAML…" }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": { "input_tokens": 24, "output_tokens": 131, "cache_read_input_tokens": 0, "cache_creation_input_tokens": 0 }
}
  • stop_reason принимает значения end_turn, max_tokens или tool_use.
  • Блоки thinking, которые вы отправляете обратно в истории, отбрасываются до того, как их увидит модель.
  • cache_control принимается и игнорируется.
  • PDF и файловые источники document возвращают 400 unsupported_parameter. Отправляйте файлы через чат или POST /v1/files.
  • В стриме вызовы инструментов приходят целиком: один input_json_delta с полными аргументами. Во время долгих пауз приходят события ping.

Пример

curl https://api.notholy.com/v1/messages \
  -H "x-api-key: $NOTHOLY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "notholy-specter", "max_tokens": 512, "messages": [{"role": "user", "content": "What is a Sigma rule?"}]}'

Подсчёт токенов перед отправкой:

curl
curl https://api.notholy.com/v1/messages/count_tokens \
  -H "x-api-key: $NOTHOLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "notholy-specter", "messages": [{"role": "user", "content": "What is a Sigma rule?"}]}'

Ошибки

Ошибки приходят в формате Anthropic, {"type": "error", "error": {"type", "message"}}: invalid_request_error (400) · authentication_error (401) · billing_error (402) · permission_error (403) · not_found_error (404) · rate_limit_error (429) · request_too_large (413) · api_error (500, 502, 504) · overloaded_error (503). См. Ошибки.