LLM API и интеграция

Anthropic Messages API: чем отличается от OpenAI

Anthropic Messages API: чем отличается от OpenAI

13 августа протокол Anthropic Messages в каталоге KeyDealer перешёл из статуса review в available — и произошло это в течение одного дня. Утром /v1/messages был закрыт у всех 35 текстовых моделей, к вечеру открылся у восьми: fable-5, opus-5, opus-4-8, opus-4-7, opus-4-6, sonnet-5, sonnet-4-6 и haiku-4-5. Практическое следствие — Claude Code теперь подключается к KeyDealer по родному протоколу, а не через прослойку. Разбираем, чем этот маршрут отличается от привычного OpenAI-совместимого, кому он реально нужен и почему статус протокола стоит читать из живой выдачи, а не из статьи — даже из этой.

Что такое «протокол» в ответе каталога

В GET /v1/models у каждой модели есть объект protocols. Это не то же самое, что capabilities, и путать их дорого.

ПолеЧто означает
protocols.chat_completionsоткрыт ли OpenAI-совместимый маршрут
protocols.anthropic_messagesоткрыт ли родной маршрут Anthropic
protocols.responsesоткрыт ли маршрут Responses

Значений два: available — запрос пройдёт, review — маршрут закрыт. Закрытый протокол отклоняет запрос до резервирования средств и до обращения к сервису модели, так что списания не будет.

Ключевое: статус живёт на уровне протокола, а не модели. Одна и та же модель может быть открыта по одному маршруту и закрыта по другому — и это не сбой, а нормальное состояние.

Расклад на 13 августа

Цифры из живой выдачи на вечер того же дня, когда всё поменялось.

ПротоколОткрытВ review
chat_completions2411
anthropic_messages827
responses035

Восемь моделей с открытым родным протоколом — это ровно всё семейство Claude в каталоге. Логично: /v1/messages придуман Anthropic под свои модели, и для GPT или Gemini он смысла не имеет.

Отдельно стоит отметить неочевидное: у sonnet-5, opus-4-8 и haiku-4-5 в тот момент родной протокол был открыт, а OpenAI-совместимый — ещё нет. То есть «модель доступна» и «доступна тем способом, которым вы её зовёте» — разные утверждения.

Чем родной формат отличается от OpenAI-совместимого

Разница не косметическая, и дело не только в названиях полей.

Блоки рассуждений. Модели Claude с включённым размышлением возвращают его отдельной структурой. В OpenAI-совместимой схеме такого места просто нет, и содержимое приходится либо терять, либо укладывать в чужое поле.

Формат вызова инструментов. У Anthropic своя структура для описания инструментов и для передачи результатов их работы обратно в диалог. Прослойка её переводит, и на сложных сценариях с параллельными вызовами перевод не всегда бесплатен.

Поле stop_reason. Здесь самое практичное. Классификаторы безопасности могут отклонить запрос, и тогда Messages API отдаёт stop_reason: "refusal" успешным HTTP 200, а не ошибкой. Если ваш код ловит только коды ошибок, он молча примет отказ за нормальный ответ. Подробности мы разбирали, когда в каталоге появилась Fable 5.

Инструменты, которые не умеют иначе. Claude Code ходит именно в /v1/messages. Никакой OpenAI-совместимый маршрут его не устроит — не потому что хуже, а потому что формат другой.

Какой протокол выбирать

Практический ответ короткий.

Оставайтесь на chat_completions, если ваш код написан под OpenAI SDK. Он открыт у 24 моделей против восьми, покрывает все семейства каталога, и переписывать интеграцию ради родного формата смысла нет.

Берите anthropic_messages, если инструмент требует именно его, если вам нужны блоки рассуждений в исходном виде или если вы хотите видеть stop_reason без переводчика посередине.

Настройка Claude Code вынесена на отдельную страницу — подключение Claude Code, там пошагово. Цены, публичные идентификаторы и статусы всех маршрутов семейства собраны на странице Claude API.

Отдельно про то, чего смена протокола не даёт. Ставка за токены от маршрута не зависит: fable-5 стоит 180 ₽ за миллион в обе стороны и по родному протоколу, и по OpenAI-совместимому. Кэш промптов помечен unsupported тоже независимо от маршрута. То есть переезд на /v1/messages — решение про совместимость с инструментом, а не про экономию.

И ещё одно, что стоит проверить до переезда: ваши обработчики ошибок. В родном формате отказ классификатора приходит успешным ответом с полем stop_reason, а не кодом ошибки. Код, написанный под OpenAI-совместимую схему, такой ответ пропустит как валидный и отдаст пользователю пустоту вместо объяснения.

Почему протокол и возможность — разные поля

Ещё одно место, где легко ошибиться, потому что названия похожи.

Рядом с protocols в ответе каталога лежит объект capabilities, и в нём встречаются такие же ключи: anthropic_messages, streaming, tools. Но отвечают они на разные вопросы.

protocols отвечает: пустят ли ваш запрос на этот маршрут. Значения — available или review.

capabilities отвечает: проверена ли конкретная функция внутри маршрута. Значения — verified, unsupported или unknown.

Разница практическая. unknown в capabilities — это не «не работает», а «мы не проверяли». Строить на непроверенном поле можно, закладывать его в обязательства перед своим клиентом — нет. А вот review в protocols означает именно отказ: запрос не дойдёт.

У fable-5 на 13 августа картина такая: маршрут anthropic_messages открыт, и внутри него verified стоят у потоковой передачи, инструментов, принудительного выбора инструмента, передачи результатов их работы и потоковой передачи вместе с инструментами. Протокол responses при этом закрыт, и всё семейство responses_* в capabilities помечено unknown — что логично: непроверенное на закрытом маршруте.

Почему статус нельзя запоминать

Главный урок этого дня — не про протокол, а про метод.

Утром 13 августа корректным ответом на вопрос «можно ли подключить Claude Code» было «нет, ни на одной модели». К вечеру корректным ответом стало «да, на восьми». Между этими двумя состояниями прошли часы, и ни одно уведомление об этом не приходило.

Отсюда правило, которое стоит зашить в код, а не в память:

  1. Читайте protocols перед запросом, а не полагайтесь на то, что работало вчера.
  2. Фильтруйте по тому протоколу, который реально зовёте. Для /v1/chat/completionsprotocols.chat_completions, для /v1/messagesprotocols.anthropic_messages.
  3. Не кэшируйте статус надолго. Каталог за сутки вырос с 25 моделей до 37, и статусы внутри него двигались ещё быстрее.
  4. Обрабатывайте отказ маршрута отдельно от ошибок модели: он приходит раньше и денег не стоит.

Что именно изменилось в каталоге за эти сутки и сколько стоят новые позиции — в разборе роста каталога до 37 моделей.

Чего мы не утверждаем

Границы, как обычно.

Не обещаем, что остальные 27 моделей получат родной протокол. Для не-Claude моделей он и не предполагается.

Не обещаем сроков по Responses. На 13 августа он закрыт у всего текстового каталога.

Не утверждаем, что статусы застыли. Ровно наоборот: этот материал описывает состояние на вечер 13 августа, и единственный источник правды — GET /v1/models в момент вашего запроса.

Кэш промптов остаётся unsupported у всех 35 текстовых моделей, независимо от протокола. Скидку за повторный контекст мы не обещаем — как устроена эта экономика у тех, кто её даёт, разбирали на примере выхода DeepSeek V4 Pro из preview.

Открытие протокола не означает, что модель стала лучше. Это про способ обращения к ней, а не про качество ответов. Одна и та же модель по обоим маршрутам отвечает одинаково.

Мы не проверяли каждую возможность через родной маршрут. У fable-5 набор anthropic_* помечен verified, у остальных семи моделей Claude статусы стоит смотреть индивидуально — они различаются.

Что держать в голове

Родной протокол Anthropic открылся у восьми моделей Claude, OpenAI-совместимый остаётся основным маршрутом с 24 открытыми позициями, Responses закрыт у всех.

Выбирать между ними по вкусу не нужно: берите тот, который требует ваш инструмент, и проверяйте его статус в живой выдаче перед запросом. Это одна строка кода, которая экономит разбор непонятных отказов.

Как мы проверяем факты и почему у каждой цифры стоит дата — на странице о проекте. Один ключ на весь каталог и оба протокола: keydealer.ru/login.

Частые вопросы

У каких моделей открыт протокол Anthropic Messages?

На вечер 13 августа 2026 года — у восьми моделей Claude: fable-5, opus-5, opus-4-8, opus-4-7, opus-4-6, sonnet-5, sonnet-4-6 и haiku-4-5. У остальных 27 текстовых моделей каталога он в статусе review.

Чем /v1/messages отличается от /v1/chat/completions?

Это разные протоколы с разным форматом запроса и ответа. Родной формат Anthropic отдаёт блоки рассуждений, свою структуру вызова инструментов и поле stop_reason, которого нет в OpenAI-совместимой схеме.

Какой протокол выбрать?

Если ваш код уже написан под OpenAI SDK — оставайтесь на chat_completions, он открыт у 24 моделей. Родной протокол нужен, когда инструмент требует именно его: так устроен Claude Code.

Как проверить, что маршрут открыт?

Читать поле protocols.anthropic_messages в ответе GET /v1/models. Значение available означает, что запрос пройдёт; review — что он будет отклонён до резервирования средств.

Что с протоколом Responses?

На 13 августа он в статусе review у всего текстового каталога без исключений.

Источники