LLM API и интеграция
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_completions | 24 | 11 |
anthropic_messages | 8 | 27 |
responses | 0 | 35 |
Восемь моделей с открытым родным протоколом — это ровно всё семейство 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» было «нет, ни на одной модели». К вечеру корректным ответом стало «да, на восьми». Между этими двумя состояниями прошли часы, и ни одно уведомление об этом не приходило.
Отсюда правило, которое стоит зашить в код, а не в память:
- Читайте
protocolsперед запросом, а не полагайтесь на то, что работало вчера. - Фильтруйте по тому протоколу, который реально зовёте. Для
/v1/chat/completions—protocols.chat_completions, для/v1/messages—protocols.anthropic_messages. - Не кэшируйте статус надолго. Каталог за сутки вырос с 25 моделей до 37, и статусы внутри него двигались ещё быстрее.
- Обрабатывайте отказ маршрута отдельно от ошибок модели: он приходит раньше и денег не стоит.
Что именно изменилось в каталоге за эти сутки и сколько стоят новые позиции — в разборе роста каталога до 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 у всего текстового каталога без исключений.