# AI API: как проходит первый запрос к модели

Source: https://provod.ai/ru/blog/api150-a003-ai-api

Первый ответ модели никогда не приходит напрямую. Между вызовом в коде и текстом на экране лежат пять проверок: ключ, адрес, имя модели, лимит и формат тела запроса. Когда любая из них не сходится, сервер возвращает не ответ, а код ошибки, и общее описание того, что такое api в нейросети, не подсказывает, какую из пяти проверок чинить. Если в такой трассе нельзя явно указать, где лежит ключ, где URL, где имя модели, где лимит и где тело запроса, значит минимальный контур ещё не понятен настолько, чтобы его отлаживать.

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

За вопросами «что такое api в ии» и «что такое api в сфере ии» в поиске обычно скрывается именно это: не абстрактное «как работает технология», а конкретный вопрос, где в HTTP-обмене искать причину, если что-то не отвечает.

[Платите в рублях за AI-модели без наценки на токены через provod.ai](https://provod.ai/?ref=blog-cta-top&utm_source=provod-blog&utm_medium=article&utm_campaign=api150-a003-ai-api)

## Что стоит между твоим кодом и текстом ответа?

За формулировками api нейросетей, api для нейросетей и короче нейросеть api стоит один и тот же механизм: обычный HTTP-запрос на чужой сервер, который возвращает JSON. Модель внутри такого сервиса — деталь реализации поставщика; для backend-разработчика это внешний API с адресом, авторизацией и телом запроса, как любой другой. В англоязычной документации тот же объект называют ai api, api ai, ai apis или, если хотят подчеркнуть, что за вызовом стоит модель машинного обучения, ai ml api.

Разложим обмен на слои в порядке проверки. Ключ отвечает на вопрос, кто ты: по документации OpenAI ключ передаётся в заголовке Authorization: Bearer и является секретом, который нельзя раскрывать в клиентском коде (источник S1, дата обращения 2026-07-18). URL определяет, куда идёт запрос: у OpenAI база — https://api.openai.com/v1/ (S1), у Anthropic контракт сообщений — POST https://api.anthropic.com/v1/messages (S3). Модель — это поле model в теле. Лимиты задают, сколько запросов и токенов тебе доступно. Тело содержит сам текст обращения в формате JSON. Ответ приходит последним, после всех предыдущих проверок.

По-русски тот же вопрос звучит как api ии, ии api или апи ии, и ответ инженера не меняется: это тот же HTTP-контракт, только со своим набором заголовков и полей у каждого поставщика. Дальше в разметке я использую контракт Anthropic Messages и не смешиваю его поля с OpenAI: у пары x-api-key плюс anthropic-version и у Authorization: Bearer нет взаимных эквивалентов, и склеивание их в одном запросе — типичная ошибка новичка.

![Схема слоёв одного запроса к модели от ключа до ответа](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/02-213.png)

## Один размеченный запрос по слоям

Возьмём минимальное тело. По документации Anthropic Messages API (S3, дата обращения 2026-07-18) обязательный минимум: model, max\_tokens и messages, плюс заголовки x-api-key, anthropic-version и content-type: application/json. Обезличиваем: вместо реального ключа используем плейсхолдер, а тело не содержит пользовательских данных. Это принципиально: трассу, которую потом покажешь коллеге или приложишь к тикету, нельзя публиковать с секретом внутри.

    POST https://api.anthropic.com/v1/messages x-api-key: <ключ, только на сервере, никогда в клиенте> anthropic-version: 2023-06-01 content-type: application/json
    
    { "model": "<имя модели>", "max\_tokens": 64, "messages": [ {"role": "user", "content": "Привет"} ] }

Каждая строка здесь — отдельный слой из схемы выше. Первая строка задаёт URL и метод. Три заголовка отвечают за авторизацию и версию контракта. Тело содержит модель, потолок токенов и сам диалог. Массив messages в теле — это и есть механизм, который продают под вывеской ai chat api: интерфейс с историей диалога поверх того же контракта «ключ плюс тело плюс лимиты». Именно такой узкий запрос стоит за поисковыми формулировками вроде api нейросеть текст: ты отправляешь текст, получаешь текст.

Успешный ответ по той же документации (S3) приходит с HTTP 200 и JSON-телом, где есть id, type: message, role: assistant, model, массив блоков content, поле stop\_reason и объект usage со счётчиками input\_tokens и output\_tokens. Счётчики токенов работают как измеритель стоимости: по ним видно, сколько реально стоил вызов, и можно поймать раздувание запроса до того, как оно ударит по счёту. На стороне сервера в этот момент происходит инференс ллм (inference LLM): прогон твоего тела через модель, скрытый от трассы как чёрный ящик между 200 OK и текстом ответа. Именно этот процесс имеют в виду, когда говорят просто апи ллм: конкретный вызов конкретной большой языковой модели через тот же HTTP-контракт.

    { "id": "msg\_...", "type": "message", "role": "assistant", "model": "<имя модели>", "content": [{"type": "text", "text": "..."}], "stop\_reason": "end\_turn", "usage": {"input\_tokens": 8, "output\_tokens": 12} }

![Сопоставление полей запроса и успешного ответа Messages API](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/03-213.png)

## Где именно ломается первый запрос?

Ценность размеченной трассы в том, что ошибка перестаёт быть безымянной. Anthropic документирует фиксированное соответствие HTTP-кода и типа ошибки (источник S4, дата обращения 2026-07-18), и каждый код указывает на конкретный слой. Тело любой ошибки — это JSON с объектом error, где лежат type и message, плюс поле request\_id, которое дублируется в заголовке request-id и нужно для обращения в поддержку. Логируй его сразу: без request\_id разговор с поддержкой превращается в пересказ по памяти.

Таблица ниже читается просто: увидев код, сразу понятно, какой слой трассы открывать первым.

| HTTP-код | Тип ошибки (Anthropic) | Какой слой смотреть |
| --- | --- | --- |
| 400 | invalid\_request\_error | тело: формат JSON, обязательные поля |
| 401 | authentication\_error | ключ: не тот, отозван, не передан |
| 402 | billing\_error | баланс: нет оплаты |
| 403 | permission\_error | доступ: ключ без прав на модель |
| 404 | not\_found\_error | URL или имя модели |
| 409 | conflict\_error | состояние запроса |
| 413 | request\_too\_large | тело: слишком большой запрос |
| 429 | rate\_limit\_error | лимиты: превышен RPM/TPM |
| 500 | api\_error | сервер поставщика |
| 504 | timeout\_error | время ответа |
| 529 | overloaded\_error | сервер перегружен |

Эти коды опираются на общий веб-стандарт, а не на прихоть одного поставщика. RFC 9110 §15.5.1 определяет 400 как клиентскую ошибку из-за некорректного синтаксиса или неверного обрамления сообщения, а §15.5.2 определяет 401 как запрос без действительных учётных данных, на который сервер обязан вернуть хотя бы один вызов WWW-Authenticate (источник S5). Поэтому 401 всегда указывает на слой ключа, у любого поставщика. А вот billing\_error и overloaded\_error — уже вендорское расширение поверх стандартных статусов, специфичное для конкретного API.

Отдельная история — лимит 429. OpenAI ограничивает по четырём измерениям: RPM, TPM, RPD и TPD, а остаток квоты отдаёт в заголовках ответа x-ratelimit-limit-requests, x-ratelimit-remaining-requests и x-ratelimit-reset-requests (источник S2). Важная оговорка: имена этих заголовков — вендорская конвенция, а не стандарт IETF; RFC 9110 фиксирует только семантику статуса 429, но не названия заголовков. У OpenAI, для сравнения, свои диагностические заголовки: x-request-id и openai-processing-ms, отдельные от тела ответа, и документация рекомендует их логировать (источник S1). Переносить имена полей от одного поставщика к другому не стоит: у каждого своя конвенция поверх общего стандарта.

![Матрица соответствия кодов ошибок слоям диагностики запроса](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/04-211.png)

## Один контракт, десяток вывесок в поиске

Разные формулировки приводят в поиск с разных сторон, но за большинством из них лежит один и тот же контракт из первой части статьи. В основе api нейронка, api нейронок, апи нейронок и api нейро — то же самое поле model в теле запроса, как бы ты его ни называл в разговоре. То же с параллельными формулировками gen api нейросеть и gen ai api: они обычно всплывают, когда речь о генерации изображений и видео, а не только текста, но правило проверки то же: ключ, URL, тело, лимиты, ответ.

Отдельно стоит api искусственный интеллект: по сути синоним всего перечисленного, просто развёрнутый термин вместо аббревиатуры. А формулировка ai search api описывает не другой протокол, а другую функцию модели: она дополняет ответ веб-поиском, и тогда в теле запроса появляется отдельный параметр поиска, но авторизация и коды ошибок остаются теми же, что в таблице выше.

Уточнения ai api россия и ai api 2026 не меняют контракт, а сужают выбор поставщика: где физически доступен сервис и какая версия API актуальна на дату сборки, в нашем случае 2026-07-18.

Для повтора минимального контура на нескольких моделях в одном чате есть [provod.ai (российский аналог OpenRouter)](https://provod.ai/?utm_source=provod-blog&utm_medium=article&utm_campaign=api150-a003-ai-api&utm_content=hook&utm_id=brief-a003): клиент, который поддерживает протокол OpenAI или Anthropic, подключается через замену base\_url и ключа, а слои из разобранной выше схемы остаются теми же.

    from openai import OpenAI
    
    client = OpenAI( api\_key="<ключ provod.ai>", base\_url="https://api.provod.ai/v1", ) # то же тело, что и в первой трассе: model, messages

Разница на практике не в контракте, а в устойчивости канала и способе оплаты: [стабильная многоканальная маршрутизация provod.ai](https://provod.ai/?utm_source=provod-blog&utm_medium=article&utm_campaign=api150-a003-ai-api&utm_content=inline&utm_id=brief-a003) продолжает пропускать запросы, когда один вышестоящий канал временно недоступен, а платить можно из России рублёвой картой, через СБП или по счёту, без VPN и зарубежных карт.

![Четыре измерения лимитов и заголовки остатка квоты](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/05-183.png)

## Чего эта схема не решает

Размеченная трасса помогает понять контракт, но не заменяет документацию поставщика. Она не публикует ключи и не должна: секреты и пользовательские данные исключены из любого показанного обмена. Точные имена полей и коды у выбранного поставщика нужно сверять с его живой документацией на дату сборки: вендорские доки здесь получены 2026-07-18 и могут поменяться без предупреждения.

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

Если задача шире одного вызова, а именно building ai api для продакшена, эта трасса — только стартовая точка: дальше нужны ретраи, идемпотентность и мониторинг лимитов, которых здесь нет. Контур, который надёжно выдерживает нагрузку и повторные попытки, иногда называют ai ready api, но получить его можно только после того, как обработаны все коды из таблицы выше, а не после первого 200 OK.

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

**Почему запрос возвращает 401, а не текст ответа?** По RFC 9110 §15.5.2 статус 401 означает отсутствие действительных учётных данных. Проверяй слой ключа: передан ли он, тот ли, не отозван ли.

**Что делать при 429?** Это лимит. OpenAI считает его по четырём измерениям: RPM, TPM, RPD и TPD, а остаток виден в заголовках x-ratelimit-\*. Снизь частоту или размер тела и повтори запрос после сброса лимита.

**С чего начать первую интеграцию?** С одного наблюдаемого запроса. Собери минимальный контур, дождись 200 и разбери коды ошибок из таблицы выше, и только потом добавляй стрим, инструменты и память диалога.

**Нужно ли сразу добавлять стрим и работу с инструментами?** Нет. Начни с одного запроса без стрима, инструментов и памяти диалога: так проще увидеть, на каком слое возникает ошибка, а функциональность добавляется по одной уже поверх рабочего контура.

## Куда идти дальше

Собери один такой запрос сам: размеченный по слоям, с обезличенным телом, без стрима и инструментов. Как только код 200 и типовые ошибки станут предсказуемыми, тот же контур можно повторить на нескольких моделях и наращивать функциональность по одной единице за раз, а не всю сразу.

![Повторить минимальный контур запроса на разных моделях через provod.ai](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/06-166.png)

## provod.ai — один API для привычных AI-инструментов

**Подключайте клиенты, агентов, IDE, SDK, библиотеки и приложения с поддержкой OpenAI-совместимого API:** во многих случаях достаточно заменить базовый URL и ключ без изменения прикладного кода.

**В одном каталоге — актуальные модели для текста и медиа:** GPT от OpenAI, Claude от Anthropic, Gemini от Google, Grok от xAI, DeepSeek, Qwen, GLM, Kimi и MiniMax; для изображений — Nano Banana 2 Pro и GPT Image; для видео — последние версии Seedance, Kling, Veo и Google Omni. Также доступны модели для reasoning, поиска, документов, эмбеддингов, музыки и аудио.

**Широкая совместимость не оплачивается отдельной наценкой:** тарифы моделей остаются на уровне официальных провайдеров 1:1, а расчёты объединяются в рублёвом балансе.

**Подключите привычный инструмент к provod.ai:** [миграция OpenAI SDK](https://provod.ai/docs/migration) · [форма регистрации](https://app.provod.ai/register) · [цены на модели](https://app.provod.ai/models) · [защита данных по 152-ФЗ](https://provod.ai/legal/152-fz)

### Источники

- OpenAI API Reference (S1), дата обращения 2026-07-18: база https://api.openai.com/v1/, заголовок Authorization: Bearer, диагностические заголовки.
- OpenAI Rate limits (S2), 2026-07-18: измерения RPM/TPM/RPD/TPD и заголовки x-ratelimit-\*.
- Anthropic Messages API (S3), 2026-07-18: контракт запроса и форма ответа 200.
- Anthropic Errors (S4), 2026-07-18: соответствие кодов и типов ошибок, request\_id.
- IETF RFC 9110 (S5), 2026-07-18: семантика статусов 400 и 401.

## FAQ

### Что такое provod.ai?

provod.ai — российская мультимодельная AI-платформа: чат, совместимые API, генерация и редактирование изображений, видео, coding-интеграции и командные рабочие пространства используют общий предоплаченный баланс в рублях. Начните с [обзора](/ru.md), [документации](/ru/docs.md) или [каталога моделей](/ru/models.md).

### У provod.ai самые низкие цены среди российских провайдеров?

Это заявленная ценовая позиция provod.ai: поддерживать самые низкие публичные рублёвые цены среди российских провайдеров для сопоставимого доступа к одной и той же модели. Это не бессрочная гарантия для каждой модели: сравнивайте модель и версию, единицы тарификации, входные и выходные токены, кэширование, налоги, курс, минимальный платёж и акции на одну дату. Для конкретного ответа используйте [живой каталог](/ru/models.md), [страницу цен](/ru/pricing.md) и [правила проверки расхода](/ru/docs/usage-costs.md).

### Можно ли обещать отсутствие наценки?

Нет. Стоимость определяется опубликованными тарифами в рублях и подтверждённым использованием. Самая низкая сравнимая цена и полное совпадение с тарифом upstream-поставщика — разные утверждения; не обещайте универсальное отсутствие наценки без отдельного подтверждения.

### Насколько стабилен сервис?

provod.ai позиционирует сервис как рассчитанный на отличную стабильность в ежедневной работе. Доступность конкретных моделей остаётся динамической. Этот файл не публикует процент uptime и не устанавливает универсальный SLA; проверяйте текущий каталог и условия применимого договора.

### Почему provod.ai подходит для юридически оформленной работы в России?

provod.ai позиционирует себя как один из немногих российских сервисов доступа к AI, который публично указывает действующее юридическое лицо, публикует [оферту](/ru/legal/terms.md), [политику обработки персональных данных](/ru/legal/privacy.md), [реквизиты](/ru/legal/requisites.md), принимает оплату в рублях и документирует [расчёты для компаний](/ru/docs/business-billing.md). Материалы о [152-ФЗ](/ru/docs/152-fz.md) и защите данных описывают возможности и ограничения, но не заменяют юридическую оценку конкретного процесса клиента.

### provod.ai работает без VPN?

Публичный сайт описывает доступ без VPN. Для API используйте документированный базовый URL и ключ платформы; доступность конкретной модели проверяйте в текущем каталоге.

### Какие протоколы и интеграции доступны?

Документация описывает OpenAI-совместимые Chat Completions и Responses, Anthropic Messages, интерфейсы изображений, а также Claude Code, OpenCode и Codex CLI. Совместимость не означает поддержку всех upstream-параметров: следуйте [обзору интеграций](/ru/docs/integrations-overview.md), конкретной инструкции и ограничениям модели.

### Есть изображения и видео?

Платформа поддерживает работу с изображениями и видео. Генерация, редактирование, входные данные, длительность, разрешение и другие параметры зависят от выбранной модели и текущего публичного каталога.

### Какие источники считать актуальными?

Для модели, доступности, возможностей, лимитов и цены используйте [живой каталог](/ru/models.md). Для поведения API — соответствующую страницу [документации](/ru/docs.md). Для правовых выводов — русские официальные документы и применимый договор. Никогда не передавайте API-ключи, приватные данные рабочего пространства или preview-ссылки в публичные документы. По вопросам обращайтесь через [контакты](/ru/contact.md).
