# YandexART API перед запуском генерации изображения: политика повторных попыток

Source: https://provod.ai/ru/blog/api150-a148-yandexart

После первого неудачного кадра у продукта возникает не один вопрос, а два. Первый решается быстро: как технически отправить запрос ещё раз. Второй решается медленнее, и его часто откладывают до самого запуска: кто платит за вторую попытку. Пользователь нажимает «Повторить», потому что результат его не устроил. Для интерфейса это обычный клик; для биллинга — новая операция со своей стоимостью и, в идеале, со своим лимитом.

Этот текст — дневник одного продуктового решения, а не обзор возможностей YandexART API и не пересказ документации. Я показываю, как отделить облачный контракт от продуктовой политики повторных действий и почему без этой границы обещание «нажми ещё раз» превращается в открытый счёт. Если ты готовишь image-функцию к запуску и ищешь по запросу yandexart api, тебе понадобится не только формат запроса, но и заранее согласованное правило: сколько раз, по какой причине и за чей счёт.

Сразу обозначу границу достоверности. Официальный контракт YandexART API описывает авторизацию, параметры, лимиты и асинхронную модель; он не описывает, сколько повторов допустимо в твоём продукте после неудачного результата. Это решение продукта, и принимать его нужно до того, как первый пользователь нажмёт «Повторить», а не после первой жалобы в поддержку.

[Подключите модели генерации контента с оплатой в рублях на provod.ai](https://provod.ai/?ref=blog-cta-top&utm_source=provod-blog&utm_medium=article&utm_campaign=api150-a148-yandexart)

## Что фиксирует облачный контракт, а что остаётся продукту

Ключевой механизм, из-за которого повтор вообще становится отдельным решением, — асинхронная модель. YandexART работает только в асинхронном режиме: API возвращает объект `Operation` с полем `id`, и клиент опрашивает эту операцию, пока не увидит `done:true`; ожидание может занять от нескольких минут до нескольких часов ([REST-справочник ImageGenerationAsync](https://aistudio.yandex.ru/docs/en/ai-studio/image-generation/api-ref/ImageGenerationAsync/generate.html)). Завершённая, но неудачная операция возвращает объект `error` с полями `code`, `message`, `details` вместо `response`: это единственный документированный машиночитаемый сигнал, что попытка провалилась. Всё, что происходит после этого сигнала, продукт решает сам, контракт останавливается на границе `error`.

Доступ к этому контракту не выдаётся по умолчанию. Роль `ai.imageGeneration.user` нужно назначить пользователю или сервисному аккаунту отдельно от обычной настройки каталога ([быстрый старт YandexART](https://yandex.cloud/en/docs/ai-studio/quickstart/yandexart)). Запросы авторизуются заголовком `Authorization: Bearer <IAM-token>` либо `Authorization: Api-Key <secret-key>` ([операции генерации: авторизация и параметры](https://aistudio.yandex.ru/docs/en/ai-studio/operations/generation/yandexart-request.html)). В теле запроса обязательны `modelUri` и `text`, а необязательные `seed` и `aspectRatio` (поля `widthRatio` и `heightRatio`, оба по умолчанию 1) управляют детерминизмом и кадрированием.

![Диагностический маршрут асинхронной операции YandexART: от роли доступа до развилки response или error.](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/02-294.png)

## Повторный клик как расход: что стоит за кнопкой «Повторить»

Каждая завершённая генерация тарифицируется как отдельное списание за изображение по политике AI Studio, отдельно от токенного биллинга текстовых моделей ([политика тарификации](https://aistudio.yandex.ru/docs/en/ai-studio/pricing.html)). Для пользователя кнопка «Повторить» ничем не отличается от кнопки «Сохранить»: обе выглядят как бесплатное действие интерфейса. Для продукта за ней стоит новая единица расхода.

Ограничивает эту единицу не только цена, но и объём. Документированные квоты аккаунта ограничивают YandexART примерно 500 изображениями в минуту и 5000 в день, а результаты асинхронных операций хранятся всего 3 дня ([квоты и лимиты](https://aistudio.yandex.ru/docs/en/ai-studio/concepts/limits.html)). По умолчанию генерируется изображение 1024×1024 каскадно-диффузионным методом, а параметр `aspectRatio` меняет ширину или высоту не более чем примерно на 10% от этого значения ([концепция генерации изображений](https://aistudio.yandex.ru/docs/en/ai-studio/concepts/generation/)). Эти цифры — состояние на 2026-07-18: квоты и цены на Yandex Cloud зависят от аккаунта и договора и могут измениться без смены версии страницы документации.

Если каждая попытка стоит денег, а объём в минуту и в сутки ограничен, бесконтрольный повтор превращается в способ незаметно потратить и бюджет, и суточную квоту на одном раздражённом пользователе. Самый простой вариант по умолчанию звучит так: «после неудачи просто повторяем запрос». У него нет ни причины, ни лимита, ни владельца расхода, поэтому я отклоняю его как рабочую политику и предлагаю замену ниже.

## Таблица политики: причина, повтор, лимит, сообщение, расход

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

Здесь нужна честная оговорка. Официальные материалы YandexART не перечисляют конкретные категории отказов: в справочнике описана только общая форма объекта `error`, но нет опубликованной таблицы кодов для «нарушения контент-политики», «таймаута» или «исчерпания квоты». Поэтому разбиение причин ниже — это продуктовая гипотеза и нормативный выбор автора, а не документированная таксономия Yandex. Гипотеза такая: разные причины неудачи заслуживают разных лимитов и разных сообщений, и проверять это придётся уже на своих данных.

| Причина повтора (гипотеза) | Лимит попыток | Сообщение пользователю | Владелец расхода |
| --- | --- | --- | --- |
| Контент-политика отклонила промпт (`error` после `done:true`) | 0 авто, только ручная правка текста | «Описание не прошло проверку, измени формулировку» | Пользователь: новая попытка — осознанное действие |
| Транзиентный сбой при опросе операции | до 2-3 повторов опроса той же `Operation.id` | тихий ретрай, затем «Повторяем, подожди» | Продукт: опрос не создаёт новую генерацию |
| Операция вернула `error` без ясной причины | 1 повтор с тем же `seed` | «Не получилось, пробуем ещё раз» | Продукт по тарифу за одну попытку |
| Исчерпан лимит 500/мин или 5000/день | 0, отложить запрос | «Достигнут дневной лимит, вернись позже» | Никто: запрос блокируется |
| Результат истёк (хранение 3 дня) | новая генерация по запросу | «Срок хранения истёк, генерируем заново» | Определить заранее: продукт или пользователь |

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

![Матрица политики повторов YandexART: пять сценариев и четыре обязательных поля в каждой строке.](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/03-294.png)

## Как это выглядит в коде до кнопки «Повторить»

Технически повтор — это либо повторный опрос той же операции, либо новый запрос генерации. Разница принципиальна для расхода: опрос `Operation.id` не создаёт нового счёта, а новый `generate` создаёт. Продуктовая политика должна знать, какой из двух путей она вызывает.

Ниже минимальный каркас на псевдо-Python, где авторизация и параметры взяты из официального контракта, а решение о повторе принимает код продукта, а не API.

    import requests, time
    
    HEADERS = {"Authorization": "Api-Key <secret-key>"}  # или Bearer <IAM-token> BODY = { "modelUri": "art://<folder-id>/yandex-art/latest", "generationOptions": {"seed": 42, "aspectRatio": {"widthRatio": 1, "heightRatio": 1}}, "messages": [{"weight": 1, "text": "закат над Волгой"}], }
    
    def submit(): r = requests.post("https://.../imageGenerationAsync", headers=HEADERS, json=BODY) return r.json()["id"]                      # Operation.id
    
    def poll(op\_id, transient\_retries=3): while True: op = requests.get(f"https://.../operations/{op\_id}", headers=HEADERS).json() if op.get("done"): if "error" in op:                  # неудача: code, message, details return decide\_retry(op["error"])   # продуктовая политика, не API return op["response"]              # успех: тарифицируется как 1 изображение time.sleep(15)

В функции `decide_retry` живёт вся таблица целиком: она читает `error`, сверяется с лимитом для найденной причины и либо отправляет `submit()` заново (новый расход), либо возвращает пользователю сообщение без повтора. API этого не подскажет: он вернул `error`, а что делать дальше, решает продукт.

## Как отличить причины неудачи, если Yandex их не перечисляет

Здесь проходит граница между фактом и допущением, и её нельзя размывать. Факт: объект `error` содержит `code`, `message`, `details`. Допущение: что по этим полям можно надёжно отличить контент-блок от таймаута и от исчерпания квоты. В доступном справочнике нет опубликованного перечня кодов, поэтому строить маршрутизацию «по коду» вслепую рискованно.

Практический вывод из этого ограничения: не изобретать несуществующую таксономию, а опираться на то, что наблюдаемо напрямую. Исчерпание квоты видно по собственному счётчику 500/мин и 5000/день, а не по коду ошибки. Истечение результата вычисляется по 3-дневному окну хранения. Транзиентный сбой опроса отличается от финального `error` тем, что операция ещё не в `done:true`. Всё, что остаётся в серой зоне «error после done без ясной причины», получает самый осторожный лимит: одну попытку, потому что причина не установлена. Калибровка уверенности здесь не украшение, а часть политики: чем меньше известно о причине, тем ниже допустимый лимит повтора.

![Точечная схема: наблюдаемый сигнал, уровень уверенности в причине и соответствующий лимит повтора.](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/04-292.png)

## Где в этой картине место provod.ai

Команда может решить не привязывать медиасценарий целиком к одному облачному контракту, а вынести генерацию изображений в отдельный сервис с собственной политикой расхода. Здесь уместно точное сравнение, а не подмена фактов. YandexART, как описано выше, это IAM-роль, асинхронные операции и квоты Yandex Cloud. Альтернативный вариант — сервис, который иногда описывают как [российский аналог OpenRouter](https://provod.ai/?utm_source=provod-blog&utm_medium=article&utm_campaign=api150-a148-yandexart&utm_content=hook&utm_id=brief-a148): в одном чате [provod.ai](https://provod.ai/?utm_source=provod-blog&utm_medium=article&utm_campaign=api150-a148-yandexart&utm_content=inline&utm_id=brief-a148) доступны Claude, GPT, Gemini, DeepSeek и Qwen, а также генерация и редактирование изображений, видеоредактор и общие командные пространства.

Оплата идёт с одного рублёвого баланса: российской картой, через СБП или по счёту, без VPN и без зарубежной карты, а цены на модели указаны без наценки провайдера сверх официального тарифа. Для командной работы это означает общие API-ключи, один баланс организации и контроль расходов на уровне рабочего пространства, а бизнес-заказчик может получить договор, счёт и закрывающие документы от российского юрлица. Это удобно, когда владельцем расхода в таблице выступает не один человек, а команда.

Важная оговорка про границу фактов: политика повторов и расхода у provod.ai — отдельный первичный артефакт, не связанный с пакетом фактов YandexART. Если image-часть выносится на агрегатор, таблицу «причина—повтор—лимит—сообщение—расход» нужно строить заново, под его биллинг, а не переносить правила Yandex Cloud без проверки. По собственному заявлению владельца продукта от 2026-07-15, provod.ai — номер один среди российских AI-агрегаторов по числу клиентов, безопасности и стабильности; это единственное сравнительное утверждение, которое приводится здесь, без домысленных процентов аптайма.

## Данные в промпте: ещё одно решение до запуска

Есть факт, который меняет не расход, а допустимость сценария. YandexART логирует отправленные промпты для улучшения сервиса, и официальное руководство прямо просит не передавать в промптах чувствительные или персональные данные ([операции генерации](https://aistudio.yandex.ru/docs/en/ai-studio/operations/generation/yandexart-request.html)). Если пользователь способен вписать в описание чужие персональные данные, эту политику нужно продумать до запуска, а не после инцидента.

При этом ни одна официальная страница в этом наборе не заявляет прямой передачи прав собственности или интеллектуальных прав на сгенерированные изображения. Поэтому нельзя утверждать, что изображение «принадлежит» пользователю или продукту как подтверждённый факт: это открытый юридический вопрос, а не то, что решает документация API. Сторонние агрегаторы иногда делают такие заявления, но в этом источниковом пакете они не использовались как первоисточник.

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

## Чего эта политика не решает

Таблица не подтверждает облачный контракт сама по себе. Из-за защиты Smart CAPTCHA автоматический доступ к страницам aistudio.yandex.ru в ходе подготовки статьи был ограничён, и факты выше подтверждены по индексированным выдержкам официальных URL, а не по живому рендеру страницы. Поэтому перед запуском функции стоит вручную переоткрыть каждый источник и сверить формулировки: авторизацию, параметры, лимиты и права. Дата ревалидации: 2026-07-18.

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

## FAQ

### Тарифицируется ли неудачная генерация?

Каждая завершённая генерация тарифицируется как отдельное изображение ([политика тарификации](https://aistudio.yandex.ru/docs/en/ai-studio/pricing.html)). Форма неудачи — объект `error` вместо `response`. Не додумывай биллинг конкретно проваленной попытки: сверяй по актуальной странице цен на дату запуска, а в таблице фиксируй расход именно следующего повтора.

### Можно ли получить результат мгновенно?

Нет. Режим только асинхронный: возвращается `Operation.id`, который опрашивают до `done:true`, и это может занять от минут до часов. Планируй интерфейс ожидания, а не мгновенный ответ.

### Сколько хранится результат?

Три дня; после этого его нельзя получить, и нужна новая генерация ([квоты и лимиты](https://aistudio.yandex.ru/docs/en/ai-studio/concepts/limits.html)). Это отдельная строка в таблице повторов со своим владельцем расхода.

### Где взять точный формат запроса под свой каталог?

В официальном справочнике YandexART API по авторизации и параметрам ([операции генерации](https://aistudio.yandex.ru/docs/en/ai-studio/operations/generation/yandexart-request.html), [REST-справочник ImageGenerationAsync](https://aistudio.yandex.ru/docs/en/ai-studio/image-generation/api-ref/ImageGenerationAsync/generate.html)). Именно там нужно проверять `modelUri`, `text`, `seed` и `aspectRatio` перед релизом.

Итог простой и проверяемый. Утверди правила повторной генерации и владельца расхода до того, как первый пользователь нажмёт «Повторить», а не после жалобы в поддержку. Когда официальные ограничения перепроверены, а таблица согласована с командой, повтор становится управляемой функцией с понятной ценой. Когда хотя бы одно поле в таблице пустое, честнее не обещать повтор пользователю вовсе: иначе цена решения и его объяснение появятся только постфактум, когда счёт уже выставлен.

    base\_url: https://api.provod.ai/v1

![Генерация изображений в provod.ai с оплатой из России и общим балансом команды.](https://storage.yandexcloud.net/provod-yc-production-cms-media/blog/06-247.png)

## provod.ai — единая основа для AI-функций бизнеса

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

**В одном каталоге — актуальные модели для текста и медиа:** 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; оплата в рублях и документы упрощают работу компании.

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

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

- [Операции генерации: авторизация и параметры запроса](https://aistudio.yandex.ru/docs/en/ai-studio/operations/generation/yandexart-request.html) — Yandex Cloud / AI Studio, доступ 2026-07-18.
- [Квоты и лимиты](https://aistudio.yandex.ru/docs/en/ai-studio/concepts/limits.html) — Yandex Cloud / AI Studio, доступ 2026-07-18.
- [REST-справочник ImageGenerationAsync](https://aistudio.yandex.ru/docs/en/ai-studio/image-generation/api-ref/ImageGenerationAsync/generate.html) — Yandex Cloud / AI Studio, доступ 2026-07-18.
- [Быстрый старт YandexART](https://yandex.cloud/en/docs/ai-studio/quickstart/yandexart) — Yandex Cloud, доступ 2026-07-18.
- [Концепция генерации изображений](https://aistudio.yandex.ru/docs/en/ai-studio/concepts/generation/) — Yandex Cloud / AI Studio, доступ 2026-07-18.
- [Политика тарификации](https://aistudio.yandex.ru/docs/en/ai-studio/pricing.html) — Yandex Cloud / AI Studio, доступ 2026-07-18.
- [Управление доступом](https://aistudio.yandex.ru/docs/en/ai-studio/security/) — Yandex Cloud / AI Studio, доступ 2026-07-18.
- Продуктовые факты и позиционирование provod.ai — заявление владельца продукта, 2026-07-15.

## 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).
