Расчёт цены запроса изображения
Бесплатная проверка цены конкретного маршрута и хеш согласованных условий для создания операции.
Для расчёта в контексте проекта используйте ключ компании с правом выполнения. Браузерный портал может вместо него использовать разрешение Images только на чтение, не раскрывающее секрет проекта. Цены компании и расчёт Usage Limit определяются контекстом этого ключа.
POST /v1/images/quote требует точного Content-Type application/json и Authorization. Это не эндпоинт генерации, и Idempotency-Key ему не нужен.
{
"model": "YOUR_REVIEWED_MODEL",
"operation": "image.generate",
"route_id": "YOUR_ROUTE_PUBLIC_ID",
"request": {"prompt": "A botanical illustration", "n": 1, "options": {}}
}
Используйте реальный 26-символьный публичный ID маршрута из GET /v1/images/catalog?model=...&operation=image.generate. Для редактирования request.images и request.mask — описания в формате проверенного контракта, а не байты загружаемых изображений. Эндпоинт создания отдельно декодирует загруженное содержимое. Применяются значения по умолчанию и исключения маршрута; неизвестные поля и неверные типы отклоняются.
Ответ содержит route_id, model, operation, contract_revision, contract_sha256, quote и quote_sha256. Значения charged, upload_content_verified и provider_health_verified равны false. quote сохраняет точные десятичные строки и раздельно указывает известные/неизвестные денежные суммы и Usage Limit. Отсутствующая цена по usage не равна нулю. Расчёт цены не является допуском, резервированием, разрешением платной работы или доказательством доступности поставщика.
Передавайте необязательный 64-значный шестнадцатеричный quote_sha256 как model_gate.quote_sha256 при создании генерации/редактирования, чтобы связать согласование с моделью, операцией, маршрутом, контрактом, параметрами, количеством и действующим ценовым контекстом. Несовпадение возвращает 422 image_quote_changed до отправки. Хеш не включает prompt или заявленные метаданные загрузки; точные байты браузерного запроса отдельно фиксируются разрешением на создание. Существующие API-интеграции могут не передавать поле, сохраняя прежний формат намерения. Для max_cost_usd сохраняется требование точно известной цены.
Некорректный запрос возвращает 400 invalid_image_quote, неправильный тип содержимого — 415 image_quote_json_required, отсутствие подходящего разрешённого маршрута — 422 no_matching_image_route, ошибка каталога — 503 image_catalog_unavailable. Ошибки области доступа и аутентификации обрабатываются отдельно. См. Images в Playground и сохранённые операции.
Ошибки запросов изображений
Ошибки содержат стабильный error.code, понятный error.message, error.type и, где применимо, error.param. Сохраните X-Request-ID из ответа для поддержки; не отправляйте API-ключ. Неизвестная каноническая модель или псевдоним возвращают 400 model_not_found, а не ошибку доступности каталога.
| HTTP | Код | Действие |
|---|---|---|
| 400 | model_not_found | Проверьте ID модели или псевдоним. |
| 400 | unsupported_parameter / unsupported_value / incompatible_parameters | Исправьте указанный параметр по контракту маршрута; ответ может содержать разрешённые значения. |
| 422 | image_route_not_available | Проверьте или уберите явный route_id. |
| 503 | image_route_unavailable | Сейчас нет доступного проверенного маршрута; обратитесь в поддержку. |
| 503 | image_configuration_unavailable | Настройки или цены маршрута недоступны; обратитесь в поддержку. |
| 503 | image_catalog_unavailable | Ошибка серверной части каталога. |
Ограничения нескольких маршрутов не объединяются в выдуманные допустимые комбинации. Не повторяйте платный POST автоматически после тайм-аута или неоднозначной ошибки. Проверьте статус операции и сохраните исходный ключ идемпотентности. Подробные внутренние ошибки конфигурации и учётных данных клиенту не возвращаются.