Цена задачи и котировка в API

Как узнать цену задачи до запуска запросом POST /v1/quote, от чего она зависит, когда фиксируется и что происходит с TOK, если задача не удалась.

Обновлено: 4 мин чтения

Узнайте цену до запуска

curl https://epicai.ru/v1/quote \
  -H "Authorization: Bearer $EPICAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "kling", "parameters": {"scenario": "t2v", "engine": "v3", "quality": "std", "duration": 5}}'
{
  "object": "quote",
  "model": "kling",
  "price": {"currency": "TOK", "tokens": 75000, "base": 75000, "discount": null},
  "parameters": {"scenario": "t2v", "engine": "v3", "quality": "std", "duration": 5, "aspect_ratio": "16:9", "sound": false, "shots_mode": "off"}
}

Запрос принимает поля POST /v1/tasks, кроме webhook_url, то есть model, prompt, parameters, images, videos и audios. Ничего не запускается, не резервируется и не списывается. Ответ считается по тем же правилам, что и цена задачи при создании.

ПолеЗначение
price.tokensСколько TOK стоит задача. Эту сумму epicai зарезервирует и спишет
price.baseЦена без ценовой акции
price.discountОбъект {"percent": 30}, если на модель действует акция вашего аккаунта, иначе null. Акция уже учтена в tokens
parametersНастройки в том виде, в каком их применит задача, с подставленными значениями по умолчанию

Сочетание параметров без цены запустить нельзя. И котировка, и создание задачи отвечают на него 400 unsupported_parameters, а допустимые сочетания ищите в GET /v1/models/{id}.

Передайте то, от чего зависит цена

ВидОт чего зависит ценаЧто передать
Картинки, музыкаМодель и параметры, помеченные в схеме x-affects-price, например качество и размер кадраmodel, parameters
ДокументыПараметры и число карточек: чем их больше, тем дорожеmodel, parameters
ВидеоСценарий, версия, качество, длительность, звук. У части моделей ещё и длина входных видео и звука, тогда в описании модели стоит pricing.depends_on_inputs: truemodel, parameters, при необходимости videos и audios
ОзвучкаДлина текста в знакахmodel, prompt с самим текстом
РасшифровкаДлина записиmodel, audios

Чтобы узнать цену, не обязательно держать файл под рукой. В videos и audios каждый элемент может быть длительностью в секундах (число от 0 до 36 000 или объект {"duration": 90}) либо настоящим файлом, ссылкой или данными base64. Файл epicai скачает, измерит и сразу сотрёт. В images достаточно числа картинок или списка. Расшифровка записи длиной 90 секунд:

curl https://epicai.ru/v1/quote \
  -H "Authorization: Bearer $EPICAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-transcribe", "audios": [90]}'
{
  "object": "quote",
  "model": "gpt-transcribe",
  "price": {"currency": "TOK", "tokens": 3600, "base": 3600, "discount": null},
  "parameters": {"language": "ru"}
}

Озвучка считается так же, только вместо файла в prompt передаётся текст, и цена пропорциональна числу знаков.

Цена операции над готовым результатом зависит от значения task и параметров вроде качества, но не от источника. В котировке поле source можно не передавать.

Прочитайте цены в описании модели

Описание модели в GET /v1/models/{id} содержит схему параметров и примеры цен. Параметр, который меняет цену, отмечен так.

"quality": {
  "type": "string",
  "enum": ["std", "pro", "4k"],
  "x-enum-titles": {"std": "720p", "pro": "1080p", "4k": "4K"},
  "default": "std",
  "x-affects-price": true
}
Пометка схемыЗначение
x-affects-priceПараметр меняет цену
x-enum-titlesПодписи значений, как на сайте
x-show-ifПараметр действует, только если другие параметры имеют перечисленные значения. В остальных случаях его передавать не нужно, он не попадёт и в ответ
x-options-byДопустимые значения зависят от значения другого параметра, например качество от версии модели. Значение вне такого списка недопустимо

Поле pricing.examples перечисляет сочетания параметров, влияющих на цену, с цифрой tokens. В примерах цена базовая, без акции. Если цена считается не за целую задачу, поле pricing.examples_for называет единицу: «1000 знаков» у озвучки, «1 минута записи» у расшифровки, число карточек у документа. Для точной суммы под ваш запрос используйте POST /v1/quote.

Когда цена фиксируется и списывается

  • При создании задачи epicai считает цену по правилам котировки и записывает её в price.tokens. Поздняя смена каталога или акции эту задачу не затронет.
  • Всю сумму epicai резервирует на балансе до запуска. Резерв виден в balance.reserved ответа GET /v1/account.
  • Если задача завершилась успешно, списывается ровно price.tokens, и то же число лежит в price.charged. Доплат нет, оценки «с запасом», как у текстового чата, нет.
  • Если задача не удалась, резерв снимается, а price.charged остаётся 0. Так бывает при отказе вендора, фильтре безопасности, сбое сохранения результата и при выходе за 100 минут.
  • Если доступных TOK меньше цены, задача не создаётся. Ответ 402 insufficient_funds называет цену и доступный остаток.

Платит тот же баланс, что и в чате. Ключ личного аккаунта тратит общий баланс сайта, ключ организации Business — кошелёк организации, и в balance.source видно, откуда идёт оплата. Сверх баланса действуют лимиты организации (402 organization_limit_reached) и потолки ключа, которые проверяются по цене задачи в момент создания (429 key_day_cap_reached, 429 key_month_cap_reached). Текстовые запросы списываются иначе, по факту (Баланс и списание).

Не нашли ответ?

Посмотрите частые вопросы или напишите в поддержку.

Войти или создать аккаунт

20 000 токенов в подарок новым пользователям. Без карты и без VPN.

или через сервис

Продолжая, вы получаете сервисные письма.

Для защиты от роботов используется Yandex SmartCaptcha. Условия обработки данных.