---
title: "Dry-run cost estimate incl. affordability (spends 0 RUB). Requires a token because it reflects your balance and daily limit."
method: POST
path: "/generate/estimate"
tags: ["Account"]
---

# Dry-run cost estimate incl. affordability (spends 0 RUB). Requires a token because it reflects your balance and daily limit.

`POST /generate/estimate`

## Request

- Base URL: `https://vibemarketolog.ru/api/agent`
- URL: `https://vibemarketolog.ru/api/agent/generate/estimate`
- Auth: HTTP bearer

## Request body

- GenerateRequest: Параметры модели передаются ПЛОСКО, на верхнем уровне тела — вложенного объекта params нет. Набор параметров у каждой модели свой: GET /capabilities отдаёт для неё required, optional, limits и enums. Неизвестные параметры при strict=true отклоняются до списания.
  - `type` 'video' | 'image' | 'voice' | 'music' | 'text', required: Тип содержимого.
  - `model` string, required: Идентификатор модели. Допустимые значения — из GET /capabilities.
  - `prompt` string: Описание желаемого результата.
  - `callback_url` string, uri: Куда сообщить о готовности. Тело подписывается заголовком X-Vibe-Signature. Для длинной озвучки не поддерживается.
  - `idempotency_key` string: Ключ повторной отправки. Повтор с тем же ключом и тем же телом возвращает прежний результат без нового списания; тот же ключ с другим телом — ошибка 409. Запись живёт 24 часа.
  - `strict` boolean: Отклонять неизвестные и несовместимые параметры ДО списания. Без него они возвращаются в ignored_params, а деньги списываются.

## Response `200`

Estimate

- EstimateResponse: Бесплатная оценка запроса: ничего не списывается. ВАЖНО: существование модели оценка не проверяет — на незнакомое имя она отвечает valid=true, ценой 0 и предупреждением в warnings. Проверяйте имя модели по GET /capabilities.
  - `valid` boolean
  - `dry_run` true
  - `model` string
  - `type` string
  - `estimated_cost_rub` number
  - `balance` object
    - `current` number
    - `after` number
  - `daily_spend` object
    - `limit` number, nullable
    - `today` number
    - `within_limit` boolean
  - `validation` object
    - `media` object[]: Результат проверки переданных ссылок на медиа.
    - `required_missing` string[]: Незаполненные обязательные параметры модели.
  - `rejected` string[]: Параметры, которые модель не принимает.
  - `valid_params` string[], nullable: Полный список принимаемых параметров; null для модели вне каталога.
  - `warnings` string[]

## Other responses

- `401`: Ключ не передан, недействителен, отозван или истёк (missing_token / invalid_token)
- `403`: У ключа нет нужного права либо адрес запроса не в списке разрешённых (insufficient_scope / ip_not_allowed)
- `422`: Поля запроса не прошли проверку; разбор — в details (validation_failed)
- `429`: Превышена частота запросов или суточный лимит траты ключа (rate_limit_exceeded / daily_spend_limit_exceeded)
- `500`: Внутренняя ошибка сервиса; повторите позже и сообщите request_id (internal_error)

---

[API](https://skmtc.dev/vibemarketolog/apis/agent-api.md) · [All operations](https://skmtc.dev/vibemarketolog/apis/agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vibemarketolog/apis/agent-api/revisions/6a74f8ad5d58?raw)
