MorphogenДокументация
API

Messages

POST /v1/messages: текстовый запрос в формате Anthropic Messages.

POST/v1/messages

Отправляет диалог текстовой модели в формате Anthropic Messages. Работает client.messages.create(...) из Anthropic SDK и Claude Code. Любая текстовая модель каталога принимает этот формат, не только модели Anthropic.

Заголовки

ЗаголовокЗначение
x-api-keyКлюч Morphogen. Обязателен. Вместо него принимается Authorization: Bearer <ключ>
anthropic-version2023-06-01. Anthropic SDK добавляет его сам
Content-Typeapplication/json
X-PII-Maskingon или off. Маскирование ПДн
X-Morphogen-Spacespc_…: пространство расхода. Необязательный

Тело запроса

modelstringобязательный

Имя модели из GET /v1/models.

max_tokensintegerобязательный

Максимальная длина ответа. В этом формате поле обязательное.

messagesarrayобязательный

Сообщения диалога: объекты с role (user или assistant) и content строкой или блоками (text, image, tool_use, tool_result).

systemstring | array

Системная инструкция.

streamboolean

true включает потоковый ответ в формате событий Anthropic.

toolsarray

Описание инструментов. Работает у моделей с поддержкой tool use.

Блок cache_control проходит как есть: у Claude он включает явный кеш промпта. Остальные поля формата передаются модели без изменений.

Пример запроса

curl https://api.morphogen.ru/v1/messages \
  -H "x-api-key: $MORPHOGEN_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 200,
    "messages": [{"role": "user", "content": "Назови столицу Франции одним словом"}]
  }'

Адрес base_url указывается без /v1: SDK добавляет путь сам.

Пример ответа

{
  "id": "msg_01Qx7LrT",
  "type": "message",
  "role": "assistant",
  "model": "anthropic/claude-sonnet-5",
  "content": [{ "type": "text", "text": "Париж" }],
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 18, "output_tokens": 3 }
}

В input_tokens входит весь вход, в том числе токены кеша. Если модель потратила весь max_tokens на размышления, ответ приходит без текста со stop_reason: "max_tokens".

Ошибки

Ошибки приходят в формате Anthropic: {"type": "error", "error": {"type": "...", "message": "..."}}. Поля error.code нет, кроме key_revoked: определяйте ошибку по HTTP-статусу, error.type и тексту error.message. Коды в таблице ниже названы по странице ошибок.

400invalid_jsonТело запроса не разобрано.
400model_category_mismatchМодель не текстовая.
401invalid_api_keyКлюч не передан, неверный, отозван или истёк.
402insufficient_fundsНа балансе не хватает денег на резерв запроса.
402key_limit_exceededИсчерпан дневной или месячный лимит ключа.
403model_not_allowedМодели нет в списке ключа.
404model_not_foundТакой модели нет в каталоге.
413request_too_largeТело запроса больше 32 МиБ.
429rate_limit_exceededПревышен лимит запросов или токенов в минуту. Повторите через время из Retry-After.
503service_unavailableСлужба временно недоступна. Повторите запрос.

Остальные коды: Ошибки.

На этой странице