spicyapiДокументация
Агенты и CLI
Основное содержимое

Инструмент командной строки (CLI)

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

Что такое CLI

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

Писать код не нужно. Вы вводите команду, нажимаете Enter и читаете ответ.

CLI подойдёт, если вы хотите:

  • попробовать модели и сравнить цены, прежде чем кто-то возьмётся за интеграцию;
  • генерировать изображения или видео на своём компьютере и сохранять файлы;
  • повторять однотипные генерации, не прокликивая каждый раз страницу;
  • уточнить точные настройки модели, прежде чем что-то на ней строить.

CLI работает с генерацией изображений и видео. Текстовые и чат-модели вызываются через эндпоинты, совместимые с форматом чата, — они описаны на странице Текст и потоковые ответы.

Есть ещё три официальных инструмента. Выбирайте CLI, если хотите вводить команды сами:

ИнструментКогда его выбрать
SDKВы пишете программу на JavaScript или TypeScript, которая вызывает SpicyAPI
MCP-серверВы хотите, чтобы ИИ-ассистент для программирования выполнял эти же шаги за вас
Agent SkillВы хотите научить ИИ-агента безопасно работать со SpicyAPI

Пишете на другом языке? Официальные SDK есть и для Python, Go, PHP и Java.

На этой странице ничто не потратит деньги случайно

Деньги могут стоить только две команды: tasks create и tasks retry. Обе останавливаются и спрашивают вас, прежде чем что-либо списать. Все остальные команды бесплатны, запускайте их сколько угодно.

Что можно делать

Я хочу…КомандаСтоит денег?Нужен API-ключ?
Проверить, доступен ли SpicyAPIspicyapi statusНетНет
Поискать по этой документацииspicyapi docs search <words>НетНет
Узнать, какими моделями я могу пользоваться и сколько они стоятspicyapi models listНетДа
Узнать, какие настройки принимает одна модельspicyapi models get <model>НетДа
Проверить балансspicyapi balanceНетДа
Узнать, сколько потратил ключspicyapi usageНетДа
Узнать точную цену генерации, не запуская еёspicyapi tasks quoteНетДа
Запустить генерацию изображения или видеоspicyapi tasks createДа, после вашего подтвержденияДа
Дождаться завершения генерацииspicyapi tasks wait <task-id>НетДа
Посмотреть одну генерацию и ссылки на её результатspicyapi tasks get <task-id>НетДа
Вывести список последних генерацийspicyapi tasks listНетДа
Ещё раз запустить генерацию, завершившуюся ошибкойspicyapi tasks retry <task-id>Да, после вашего подтвержденияДа
Безвозвратно удалить файлы и промпт генерацииspicyapi tasks purge <task-id>Нет, и деньги не возвращаютсяДа
Загрузить изображение, видео или аудиофайл, чтобы использовать его во входных данныхspicyapi files upload <path>НетДа
Получить свежую ссылку для скачивания результатаspicyapi files download-url <task-id>НетДа
Проверить, что обратный вызов действительно пришёл от SpicyAPIspicyapi webhooks verifyНетНет, используется ключ подписи вебхука

В командах выше слово в угловых скобках, например <task-id>, означает «подставьте сюда своё значение» — без самих скобок.

Перед началом

Вам понадобятся четыре вещи: терминал, Node.js, API-ключ и способ запускать CLI. В первый раз на это уходит около десяти минут.

Откройте терминал

Терминал — это текстовое окно для запуска команд. Всё, что есть на этой странице, вводится или вставляется туда и запускается клавишей Enter.

Нажмите Cmd + Пробел, наберите Terminal и нажмите Enter. Откроется окно со строкой, которая заканчивается на % или $: здесь и вводят команды. Вставка — Cmd + V.

Установите Node.js 22.13 или новее

CLI работает на Node.js — это бесплатная программа. Проверьте, не установлена ли она уже:

node -v

Если команда выводит v22.13.0 или номер больше, например v22.14.0 или v24.4.1, всё готово. Если номер меньше или появляется сообщение command not found или is not recognized (в русской Windows — «не распознано как имя командлета»):

  1. Зайдите на nodejs.org, откройте страницу загрузки и выберите версию LTS для своей системы.
  2. Запустите установщик и оставьте параметры по умолчанию.
  3. Закройте терминал и откройте новый, затем снова выполните node -v.

Вместе с Node.js устанавливаются npm и npx — две вспомогательные программы, которые понадобятся на последнем шаге.

Создайте API-ключ

По API-ключу SpicyAPI понимает, что запрос пришёл от вашего аккаунта.

  1. Создайте аккаунт на spicyapi.ai/register. Аккаунты могут открываться партиями; если регистрация для вас ещё не открыта, запишитесь в лист ожидания.
  2. Пополните баланс в разделе Биллинг консоли. Генерации оплачиваются с баланса, в долларах США.
  3. Откройте страницу Ключи API и нажмите Создать ключ. Дайте ключу название, по которому вы потом его узнаете, например my laptop. Обязательно указать только название.
  4. Сразу скопируйте ключ. Он начинается с sk-spicy- и показывается только один раз. Можно также нажать Сохранить в файл.

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

Обращайтесь с ключом как с паролем

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

Сохраните ключ в SPICY_API_KEY

У CLI нет команды входа, и ключ никогда не передаётся ему как параметр команды. CLI читает переменную окружения SPICY_API_KEY — именованное значение, которое терминал передаёт запускаемым из него программам.

Только для текущего окна (значение пропадёт, когда вы закроете окно):

export SPICY_API_KEY="sk-spicy-paste-your-key-here"

Навсегда: добавьте ту же строку export в конец файла запуска вашей оболочки — он выполняется при каждом открытии терминала. В macOS это файл ~/.zshrc, в большинстве систем Linux — ~/.bashrc.

nano ~/.zshrc

Вставьте строку export в самый конец, нажмите Ctrl + O, затем Enter, чтобы сохранить файл, и Ctrl + X, чтобы выйти. В Linux вместо этого выполните nano ~/.bashrc. Чтобы изменение вступило в силу, откройте новое окно терминала.

Проверьте, что переменная задана, не выводя ключ целиком:

echo "${SPICY_API_KEY:0:9}"

Должно вывести sk-spicy-.

Где ключ хранить можно, а где нельзя

Файл запуска оболочки и настройки вашей учётной записи Windows остаются на этом компьютере — для личного использования это нормально. Никогда не кладите ключ в файл внутри проекта, никогда не коммитьте его и никогда не вставляйте в общий документ. Кроме того, терминал запоминает введённые команды, поэтому на общем компьютере лучше пользоваться файлом запуска или окном настроек Windows, а не вводить ключ прямо в команде.

Выберите, как запускать CLI

Способов два, команды в обоих одинаковые.

npx скачивает CLI, когда он нужен, и запускает его:

npx @spicyapi/cli status

В первый раз npm спросит Need to install the following packages: @spicyapi/cli@… Ok to proceed? (y). Нажмите y и Enter.

При этом способе пишите npx @spicyapi/cli везде, где на этой странице написано spicyapi. Например, spicyapi models list превращается в npx @spicyapi/cli models list.

Ваш первый результат

В этом пошаговом примере вы сгенерируете одно изображение и скачаете его. На каждом шаге показаны команда, примерно то, что вы увидите, и что только что произошло. Ваши числа, ID и время будут другими.

Замените MODEL_ID_FROM_CATALOG настоящим ID модели

MODEL_ID_FROM_CATALOG — это заполнитель, а не модель. На шаге 3 показано, как выбрать настоящий ID из актуального каталога (live catalog): это spicyapi models list, тот же список, что и GET /api/v1/models. Подставляйте свой ID везде, где на этой странице стоит заполнитель. Если отправить сам заполнитель, вернётся только ошибка «not found».

Проверьте подключение

spicyapi status
SpicyAPI is reachable — api.spicyapi.ai answered in 523 ms.

Что произошло: CLI спросил у SpicyAPI, работает ли сервис. Ключ для этого не нужен, и это ничего не стоит. Если вы видите «could not be reached», проверьте подключение к интернету или прокси; см. Устранение неполадок.

Проверьте баланс

spicyapi balance
available: 12.34
held: 0.06
total: 12.40

Что произошло: это первая команда, которая использует ваш ключ. Суммы указаны в долларах США. available — сколько можно потратить сейчас, held — сколько зарезервировано под генерации, которые ещё выполняются, а total — сумма этих двух значений. Может появиться и строка funding с разбивкой баланса на предоплаченные средства и промоначисления.

Если вы видите Error: SPICY_API_KEY is required for authenticated API operations, в этом окне терминала ключ не задан. Строка Next: под сообщением подсказывает, как его задать; см. также Перед началом.

Выберите модель

spicyapi models list --modality image --json
{
  "total": 1,
  "items": [
    {
      "model": "MODEL_ID_FROM_CATALOG",
      "displayName": "Example image model",
      "modality": "image",
      "tasks": ["text-to-image"],
      "enabled": true,
      "available": true,
      "pricing": [
        { "variant": "", "unit": "per_image", "price": "0.03", "currency": "USD" }
      ]
    }
  ]
}

Пример сокращён: в настоящем списке больше моделей и больше полей.

Что произошло: CLI получил модели, которые ваш аккаунт может вызывать сегодня, с вашими ценами. Выберите модель, у которой и enabled, и available равны true, и скопируйте её значение model, например выделив его мышью. Это значение и есть ID модели. ID выглядят как maker/model/task.

  • price указан в долларах США за unit: per_image (за изображение), per_second (за секунду видео), per_request (за запрос) или per_1k_tokens (за 1000 токенов).
  • Несколько записей в pricing означают, что цена зависит от ваших настроек, например от разрешения.
  • Чтобы найти модель по названию, добавьте --search и часть её названия.

--json выводит список в виде читаемого JSON с отступами. Без этого флага весь список втиснут в одну длинную строку.

Посмотрите, какие настройки принимает модель

spicyapi models get MODEL_ID_FROM_CATALOG --json
{
  "model": "MODEL_ID_FROM_CATALOG",
  "enabled": true,
  "available": true,
  "inputSchema": {
    "type": "object",
    "required": ["prompt"],
    "properties": {
      "prompt": { "type": "string" },
      "aspect_ratio": { "type": "string", "enum": ["1:1", "16:9", "9:16"] }
    },
    "additionalProperties": false
  }
}

Что произошло: inputSchema — это список настроек модели. То, что вы в этих настройках отправляете, дальше на этой странице называется входными данными (input).

  • required перечисляет настройки, которые нужно отправить обязательно. Здесь это только prompt.
  • properties перечисляет все настройки, которые принимает модель, и ничего другого передавать нельзя: из-за одного неизвестного или написанного с ошибкой имени отклоняется весь запрос.
  • enum перечисляет единственные допустимые значения настройки.

У каждой модели свои настройки, поэтому всегда смотрите их у той модели, которую выбрали. Готовые входные данные, которые сервер уже проверил, можно получить командой spicyapi models list --search <name> --include-examples --json: смотрите поле examples.

Запишите входные данные в файл

Сохраните входные данные в файл input.json в той папке, где сейчас находится терминал. Файл избавляет от проблем с кавычками, особенно в Windows.

Вставьте все три строки сразу:

cat > input.json <<'EOF'
{"prompt": "A paper lantern glowing on a rainy street at night, cinematic light"}
EOF

Что произошло: вы описали, что нужно сгенерировать, используя имена настроек из предыдущего шага. Кавычки должны быть обычными прямыми ("), а не типографскими.

Проверьте цену

spicyapi tasks quote --model MODEL_ID_FROM_CATALOG --input-file input.json
quoteId: eyJ2IjoxLCJtIjoi…
model: MODEL_ID_FROM_CATALOG
estimatedCost: 0.03
maxCharge: 0.03
currency: USD
quantity: 1
unit: per_image
expiresAt: 2026-09-17T08:05:00Z

Что произошло: SpicyAPI рассчитал стоимость именно этого запроса. Ничего не запущено и ничего не списано. estimatedCost — ориентировочная стоимость, а maxCharge — максимальная сумма списания. Этот шаг необязателен: следующая команда снова получит цену и покажет её вам, прежде чем что-либо потратить.

Запустите генерацию и дождитесь её

spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --wait

CLI сначала показывает цену и просит подтвердить запуск:

Estimated charge: USD 0.03; maximum charge: USD 0.03. Quote expires: 2026-09-17T08:05:00Z.
Idempotency-Key: 4f6755a5-0d72-4420-9f6b-9faf0e2b0241
Create a billable task with model MODEL_ID_FROM_CATALOG? Estimated charge: USD 0.03; maximum charge: USD 0.03. Quote expires: 2026-09-17T08:05:00Z. Idempotency-Key: 4f6755a5-0d72-4420-9f6b-9faf0e2b0241. Continue? [y/N]

Введите y и нажмите Enter. Любой другой ответ отменяет запуск, и ничего не списывается. Ответьте в течение пяти минут, пока не истёк срок расчёта стоимости.

Как только SpicyAPI примет работу, CLI выведет её ID задачи:

Accepted: job_01k3m8x9q2z4v7n5p6r8s0t1w3
If waiting is interrupted: spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3

Изображения обычно готовы за секунды, видео — за минуты. Когда генерация завершится, появится результат:

idempotencyKey: 4f6755a5-0d72-4420-9f6b-9faf0e2b0241
accepted: {"taskId":"job_01k3m8x9q2z4v7n5p6r8s0t1w3","state":"queued","estimatedCost":"0.03","deadlineAt":"2026-09-17T08:30:00Z"}
task: {"taskId":"job_01k3m8x9q2z4v7n5p6r8s0t1w3","model":"MODEL_ID_FROM_CATALOG","state":"succeeded","output":{"assets":[{"key":"tasks/…/result.png","url":"https://…","expiresAt":"2026-09-17T08:20:00Z","mime":"image/png","width":1024,"height":1024}]},"cost":"0.03","settled":true,…}

Что произошло: после вашего y SpicyAPI принял генерацию — с этого момента она называется задачей — и зарезервировал ориентировочную стоимость на вашем балансе. Затем CLI каждые несколько секунд проверял задачу, пока она не завершилась. В последней строке найдите "state":"succeeded" и "url" внутри output. cost — окончательное списание, когда settled равно true. Если удобнее, чтобы результат был разбит на несколько читаемых строк, добавьте к команде --json.

Закрытие окна не отменяет задачу

Принятая задача всегда выполняется до конца и оплачивается как обычно. Ctrl + C или закрытие терминала останавливает только ожидание. Сохраните ID задачи и вернитесь к ней командой spicyapi tasks wait <task-id>; см. Как вернуться к задаче после прерванного ожидания.

Скачайте результат

url — прямая ссылка для скачивания, которая действует около 20 минут и не требует ключа. Вставьте её в браузер и сохраните файл или скачайте его из терминала (кавычки оставьте: в ссылке есть символы &):

curl -L -o result.png "PASTE_THE_URL_HERE"

Выберите расширение файла по значению mime: .png для image/png, .jpg для image/jpeg, .mp4 для video/mp4.

Если срок действия ссылки истёк, получите новую командой spicyapi files download-url <task-id> или выполните spicyapi tasks get <task-id> — эта команда возвращает свежие ссылки.

Что произошло: вы скопировали результат на свой компьютер. Не откладывайте: SpicyAPI хранит сгенерированные файлы не дольше примерно 14 дней (меньше, если в вашем аккаунте задан более короткий срок), а затем удаляет их навсегда. См. Хранение и удаление данных.

Как читать вывод

  • Обычный вывод — по одной паре name: value на строку. Значения из нескольких частей, например output или retention, выводятся как JSON в одну строку.
  • --json выводит полный ответ в виде JSON с отступами. Флаг работает с любой командой, до или после её имени: spicyapi --json balance и spicyapi balance --json — одно и то же.
  • Результаты идут в обычный вывод, а сообщения — в поток ошибок. Цены, ключ идемпотентности, строки Accepted: и ошибки — это сообщения. Поэтому spicyapi --json tasks get <task-id> > task.json сохранит в task.json только результат, а сообщения по-прежнему появятся на экране.
  • Ошибки выглядят как Error: <what went wrong> (request req_…), и обычно за ними следует строка Next: с подсказкой, что делать. С --json ошибка — это однострочный объект JSON с полями error, type, status, code и requestId, без строки Next:. Если ключ не задан, type равен MissingApiKeyError. Если обращаетесь в поддержку, укажите значение req_….
  • Деньги — сумма в долларах США, записанная обычным текстом без знака $, например 0.03.
  • Время указано в UTC. Z в конце 2026-09-17T08:05:00Z означает UTC.
  • Код завершения равен 0, если команда выполнена успешно, и не равен 0, если она завершилась ошибкой; скрипты могут это проверять.

Справочник команд

У каждой команды есть встроенная справка: добавьте --help, например spicyapi tasks create --help.

Глобальные параметры и переменные окружения

Эти параметры работают с любой командой.

ПараметрЧто делаетПо умолчаниюОбязателен
--jsonВыводит полный результат в виде JSONВыключенНет
--timeout-ms <milliseconds>Сколько ждать одного ответа от SpicyAPI, прежде чем сдаться, от 1 до 12000030000 (30 секунд)Нет
--max-retries <count>Сколько раз автоматически повторить запрос после сетевой ошибки, 429 или ошибки сервера — только для запросов, которые безопасно повторять; от 0 до 52Нет
--api-base-url <url>Отправлять запросы к API на другой адрес. Обычно это никогда не нужноhttps://api.spicyapi.ai/api/v1Нет
--service-base-url <url>Адрес, который проверяет status. Обычно это никогда не нужноhttps://api.spicyapi.aiНет
-V, --versionВыводит версию CLI—Нет
-h, --helpПоказывает справку по команде—Нет
Переменная окруженияДля чего она
SPICY_API_KEYВаш API-ключ. Нужен всем командам, кроме status, docs search и webhooks verify
SPICY_WEBHOOK_SECRETВаш ключ подписи вебхука; его читает webhooks verify
SPICY_API_BASE_URL, SPICY_SERVICE_BASE_URLТо же, что два параметра адреса выше. Адреса должны начинаться с https://

status

Что делает: проверяет, работает ли SpicyAPI и доступен ли он с вашего компьютера.

spicyapi status

Параметров нет. Ключ не нужен. Бесплатно.

Вывод: одно предложение. SpicyAPI is reachable — … answered in … ms. означает, что всё в порядке. could not be reached означает, что ваш компьютер не получил ответа: проверьте сеть или прокси. is not healthy или reports it is not ready означает проблему на нашей стороне; текущие инциденты публикуются на status.spicyapi.ai.

С --json вы увидите исходные результаты проверок. Главное — operational: true; запись readiness со статусом 404 на публичном адресе — это нормально.

Что делает: находит страницу документации по теме. Поиск идёт по небольшому индексу, встроенному в CLI, поэтому работает без ключа и без обращения к SpicyAPI. Каждый результат ведёт на страницу этого сайта документации, docs.spicyapi.ai.

spicyapi docs search [words] [--limit <count>]
Аргумент или параметрЧто делаетПо умолчаниюОбязателен
wordsСлова для поиска. Если не указать, выводится список страницПустоНет
--limit <count>Максимальное число результатов, от 1 до 2510Нет
spicyapi docs search retention
slug: retention
title: Retention and destruction
summary: What the platform caps are, how far down you can dial them, how to destroy a task's content, and what we cannot promise.
keywords: ["privacy","delete","storage","retention","per-request retention","purge","destroy"]
url: https://docs.spicyapi.ai/docs/retention

Если результатов несколько, они выводятся друг за другом, и каждый начинается с slug:. Если ничего не найдено, команда так и сообщает и всё равно завершается с кодом 0:

No documentation matched "refnd". Try fewer or different words, or run `spicyapi docs search` without words to browse pages.

С --json при отсутствии совпадений выводится пустой список, []. Бесплатно.

models list

Что делает: выводит модели, которые ваш аккаунт может вызывать сегодня, с ценами для вашего аккаунта.

spicyapi models list [options]
ПараметрЧто делаетПо умолчаниюОбязателен
--modality <type>Только модели image, video или text. Параметр принимает и audio, но аудиомоделей сейчас нетВсеНет
--task <task>Только один вид работы, например text-to-image, edit, image-to-video, text-to-video или reference-to-videoВсеНет
--provider <name>Только модели одного создателя — компании или лаборатории, которая сделала модель. Должно в точности совпадать со значением providerВсеНет
--search <text>Только модели, у которых ID или отображаемое название содержит этот текст, без учёта регистраНе заданоНет
--include-schemaДобавить полные настройки каждой модели (inputSchema). Вывод становится намного большеВыключенНет
--include-examplesДобавить готовые примеры входных данных, которые сервер уже проверил (examples)ВыключенНет
spicyapi models list --modality video --task image-to-video --json

Вывод: total и items. Используйте --json, потому что без него все элементы выводятся в одну строку. Самые полезные поля каждого элемента:

ПолеЗначение
modelID модели, который указывается в других командах
displayName, provider, modality, tasksНазвание, создатель модели, тип результата и вид работы
enabled, availableИспользуйте модели, у которых оба значения равны true
pricingПо одной записи на каждый ценовой уровень: variant (например, разрешение), unit, price в USD, а также regularPrice и offerLabel, если действует скидка
taskTimeoutSecondsСколько может длиться генерация, прежде чем завершится с состоянием expired
maxOutputDurationSecondsМаксимальная длина видео, которую допускает модель, если такое ограничение есть

Бесплатно. Запросы списка моделей учитываются в лимите запросов вашего аккаунта, поэтому выполнять команду перед каждой генерацией не нужно.

models get

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

spicyapi models get <model>
АргументЧто делаетПо умолчаниюОбязателен
modelТочный ID модели. Косые черты в нём оставляйте как есть—Да
spicyapi models get MODEL_ID_FROM_CATALOG --json

Вывод: те же поля, что у models list, плюс inputSchema. В inputSchema смотрите required (настройки, которые нужно отправить обязательно), properties (все допустимые настройки и их типы), enum (единственные допустимые значения), minimum и maximum (границы чисел) и default (значение, которое используется, если настройку не указать). Записи с именем x-ui — подсказки для построения форм, их можно не читать. Бесплатно.

balance

Что делает: показывает, сколько денег доступно на вашем аккаунте.

spicyapi balance

Параметров нет. Бесплатно.

Вывод: available (сколько можно потратить сейчас), held (зарезервировано под задачи, которые ещё выполняются) и total — всё в долларах США. Может быть и поле funding, которое разбивает баланс на предоплаченные средства и промоначисления, в том числе с указанием, когда истекают промоначисления и за какие модели ими можно платить. Проверять баланс перед каждой генерацией не нужно: tasks create делает это за вас.

usage

Что делает: показывает, сколько генераций выполнил текущий API-ключ и сколько они стоили, с группировкой по дням и по моделям.

spicyapi usage [--from <date>] [--to <date>]
ПараметрЧто делаетПо умолчаниюОбязателен
--from <date>Первый день, который входит в выборку, в формате YYYY-MM-DD по UTCПоследние семь дней, включая сегодняшнийНет
--to <date>День после последнего дня выборки, в формате YYYY-MM-DD по UTC. Диапазон — не больше 92 днейПоследние семь дней, включая сегодняшнийНет
spicyapi usage --from 2026-09-01 --to 2026-10-01

Эта команда охватывает весь сентябрь: --to — первый день, который не входит в выборку. Чтобы увидеть последние семь дней, включая сегодняшний, не указывайте ни один из параметров.

Вывод: from, to, currency, totalCalls, totalSpend, затем days (по дням: calls, succeeded, failed, spend) и models (те же числа по моделям). totalSpend учитывает только окончательные списания. days и models описывают одни и те же задачи двумя способами, поэтому не складывайте их. Чтобы увидеть данные по всему аккаунту, а не по одному ключу, откройте в консоли страницу Использование.

Бесплатно. Лимит — 30 вызовов в минуту, поэтому пользуйтесь командой для проверки итогов, а не в цикле.

tasks quote

Что делает: сообщает точную стоимость одной генерации, не запуская её и ничего не резервируя.

spicyapi tasks quote --model <model> --input-file <path>
ПараметрЧто делаетПо умолчаниюОбязателен
--model <model>Точный ID модели—Да
--input-file <path>Прочитать входные данные из файла JSON. - означает читать их из того, что передано команде через конвейер (pipe)—Этот параметр или --input-json
--input-json <json>Передать входные данные прямо текстом JSON. С кавычками проще через --input-file—Этот параметр или --input-file
--callback-url <url>Адрес обратного вызова, который вы собираетесь использовать: он входит в запрос, стоимость которого рассчитываетсяНе заданНет

Вывод: quoteId, model, estimatedCost, maxCharge, currency, quantity (например, число оплачиваемых секунд), unit и expiresAt. Расчёт стоимости действует пять минут.

Бесплатно, без подтверждения. Используйте эту команду, чтобы сравнивать модели или настройки. Перед tasks create запускать её не обязательно: та получает собственный расчёт стоимости.

tasks create

Что делает: запускает генерацию изображения или видео. Это стоит денег. CLI всегда сначала показывает цену и спрашивает.

spicyapi tasks create --model <model> --input-file <path> [options]
ПараметрЧто делаетПо умолчаниюОбязателен
--model <model>Точный ID модели—Да
--input-file <path>Прочитать входные данные из файла JSON. - читает их из конвейера, и тогда нужен ещё и --yes—Этот параметр или --input-json
--input-json <json>Передать входные данные прямо текстом JSON—Этот параметр или --input-file
--waitДождаться завершения задачи и вывести результатВыключен: вывести ID задачи и вернутьсяНет
--yesПропустить вопрос о подтверждении. Используйте, только когда уже знаете цену, обычно в скриптахВыключен: спрашиватьНет
--idempotency-key <key>Имя для «этой одной генерации». Если в течение 24 часов снова выполнить команду с тем же ключом, вы получите ту же задачу, а не новую. До 128 символовНовый случайный ключ при каждом запускеНет
--retention <duration>Удалить сгенерированные медиа, данные результата, промпт и прочий текст входных данных этой задачи раньше обычного: 30m, 1h, 7d или число секунд. Срок можно только сократить. 0 удаляет всё это сразу после завершения задачи. Записи биллинга сохраняются всегдаНастройка вашего аккаунтаНет
--callback-url <url>Публичный адрес, начинающийся с https://, на который SpicyAPI отправит запрос, когда задача завершится. Обычный http://, localhost и адреса частных сетей отклоняются. Пригодится, только если у вас есть свой сервер; см. WebhookНе заданНет
--poll-interval-ms <milliseconds>С --wait: проверять каждые столько миллисекунд, от 100 до 60000Сначала 2 секунды, затем постепенно до 10 секундНет
--wait-timeout-ms <milliseconds>С --wait: перестать ждать через столько миллисекунд, от 1 до 86400000. Задача продолжает выполняться600000 (10 минут)Нет

Что происходит по порядку:

  1. CLI читает ваши входные данные и проверяет, что это объект JSON. Если входные данные не указаны, на этом всё останавливается.
  2. Если ответить на вопрос некому, например в скрипте, а --yes не передан, на этом всё останавливается.
  3. CLI получает расчёт стоимости и выводит ориентировочную стоимость, максимальную сумму списания, срок действия расчёта и ключ идемпотентности.
  4. CLI спрашивает Continue? [y/N]. Продолжить можно только ответом y или yes. По умолчанию ответ — нет.
  5. CLI создаёт задачу по рассчитанной цене. Ориентировочная стоимость резервируется на вашем балансе, и это же максимум, который может стоить задача.
  6. Без --wait CLI выводит idempotencyKey, taskId, state (queued), estimatedCost и deadlineAt и возвращается. С --wait он сразу выводит Accepted: <task-id> и команду для восстановления, ждёт, а затем выводит idempotencyKey, accepted и завершённую задачу в task.

deadlineAt — самое позднее время, к которому задача может завершиться, прежде чем закончится с состоянием expired. Это не срок действия ссылки для скачивания и не срок хранения файлов.

spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --wait

В macOS и Linux входные данные можно передать и прямо в команде:

spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-json '{"prompt": "A paper lantern on a rainy street"}'

Если ожидание прервалось, задача всё равно выполняется

Ожидание может закончиться раньше из-за ограничения по времени, проблем с сетью или Ctrl + C. Сама задача продолжает выполняться и оплачивается как обычно. Её ID есть в строке Accepted:, выведенной в самом начале; продолжите командой spicyapi tasks wait <task-id>. Не запускайте ту же команду создания ещё раз без --idempotency-key: так вы запустите вторую генерацию и заплатите и за неё.

Если ожидание завершилось ошибкой (а не Ctrl + C), последние строки повторяют всё нужное, так что прокручивать вывод назад к строке Accepted: не придётся:

Error: task job_01k3m8x9q2z4v7n5p6r8s0t1w3 did not reach a terminal state within 600000ms
Task job_01k3m8x9q2z4v7n5p6r8s0t1w3 was accepted and may still be running; only the wait stopped.
Recover: spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3
To replay the same request without creating a second task, reuse --idempotency-key 4f6755a5-0d72-4420-9f6b-9faf0e2b0241.

Если у ошибки есть известное решение, например при 429 или ошибке сервера, дальше следует строка Next:. С --json те же сведения содержатся в объекте ошибки, в полях taskId, idempotencyKey и recover.

tasks wait

Что делает: ждёт, пока завершится задача, которую вы уже запустили.

spicyapi tasks wait <task-id> [options]
Аргумент или параметрЧто делаетПо умолчаниюОбязателен
task-idID задачи, например job_01k3m8x9q2z4v7n5p6r8s0t1w3—Да
--poll-interval-ms <milliseconds>Проверять каждые столько миллисекунд, от 100 до 60000Сначала 2 секунды, затем постепенно до 10 секундНет
--wait-timeout-ms <milliseconds>Перестать ждать через столько миллисекунд, от 1 до 86400000600000 (10 минут)Нет
spicyapi tasks wait job_01k3m8x9q2z4v7n5p6r8s0t1w3 --wait-timeout-ms 1800000

Вывод: завершённая задача с теми же полями, что у tasks get, когда её состояние становится succeeded, failed или expired. Если задача выполнена успешно, но её файлы ещё копируются, команда подождёт ещё немного.

Если время ожидания истекло, вы увидите Error: task … did not reach a terminal state within 600000ms. Это не ошибка задачи: она всё ещё выполняется. Подождите снова, при необходимости с большим значением --wait-timeout-ms. Остановка ожидания никогда не отменяет задачу. Бесплатно.

tasks get

Что делает: показывает одну задачу в её текущем виде: состояние, стоимость, ссылки на результат и когда будет удалено её содержимое.

spicyapi tasks get <task-id>
АргументЧто делаетПо умолчаниюОбязателен
task-idID задачи—Да

Используйте тот же API-ключ, которым создана задача: с другим ключом вернётся «not found».

Поля вывода:

ПолеЗначение
statequeued (ждёт запуска), running, succeeded, failed или expired (не уложилась во время). У старых задач может встречаться и canceled
output.assetsРезультаты. У каждого есть url (ссылка для скачивания, действует около 20 минут), expiresAt (когда эта ссылка перестанет работать), mime (тип файла), сведения о размере и key. pending: true означает, что файл ещё копируется, — попробуйте снова через несколько секунд. unavailable: true означает, что файл восстановить нельзя
errorCode, errorMessageПочему задача завершилась ошибкой. См. Ошибки и повторы
cost, settledСумма списания в USD. Она окончательна, когда settled равно true
inputНастройки, которые вы отправили. Удаляются, когда истекает срок хранения промптов
createdAt, completedAt, deadlineAtКогда задача создана, когда завершилась и самое позднее время, к которому она могла завершиться
contentStatepresent (содержимое ещё хранится), expired (удалено по правилам хранения) или purged (вы его удалили)
retentionoutputsExpireAt (когда будут удалены файлы результата), promptsExpireAt (когда будет стёрт текст промпта) и source (какая настройка это определила)
sourceTaskIdЕсть, если эта задача — повтор другой задачи

Обычный вывод заканчивается пояснением простыми словами, например Outputs expire: … или Content: Destroyed — you removed the outputs …. Каждый вызов возвращает свежие ссылки для скачивания. Бесплатно.

tasks list

Что делает: выводит задачи, созданные текущим API-ключом, по одной странице за раз.

spicyapi tasks list [options]
ПараметрЧто делаетПо умолчаниюОбязателен
--from <date>Первый день выборки, YYYY-MM-DD по UTCСемидневный период, который заканчивается сегодняНет
--to <date>День после последнего дня выборки, YYYY-MM-DD по UTC. Диапазон — не больше 92 днейСм. вышеНет
--state <state>Только задачи в одном состоянии: queued, running, succeeded, failed, canceled или expiredВсеНет
--model <model>Только задачи модели с точно таким IDВсеНет
--limit <count>Задач на странице, от 1 до 10020Нет
--cursor <cursor>Продолжить с предыдущей страницы, используя её значение nextCursorПервая страницаНет
spicyapi --json tasks list --from 2026-09-01 --to 2026-09-08 --state failed

Вывод: items (у каждого элемента taskId, model, state, cost, settled, createdAt, deadlineAt и completedAt), hasMore и nextCursor. Если hasMore равно true, выполните ту же команду ещё раз с теми же --from и --to, добавив --cursor со значением nextCursor. Ссылок для скачивания в списке нет; для нужной задачи используйте tasks get. Бесплатно.

tasks retry

Что делает: запускает задачу в состоянии failed или expired ещё раз — как новую задачу с новым ID. Это стоит денег.

spicyapi tasks retry <task-id> [options]
Аргумент или параметрЧто делаетПо умолчаниюОбязателен
task-idЗадача, завершившаяся ошибкой или истёкшая, которую нужно запустить ещё раз—Да
--waitДождаться завершения новой задачиВыключенНет
--yesПропустить вопрос о подтвержденииВыключен: спрашиватьНет
--idempotency-key <key>Если повторить команду с тем же ключом, вы получите ту же новую задачу, а не ещё однуНовый случайный ключ при каждом запускеНет
--poll-interval-ms <milliseconds>С --wait: как часто проверятьСначала 2 секунды, затем постепенно до 10 секундНет
--wait-timeout-ms <milliseconds>С --wait: перестать ждать через столько миллисекунд600000 (10 минут)Нет

Команда спрашивает Retry source task … Continue? [y/N]. В отличие от tasks create, она не показывает цену перед вопросом. Новая задача оплачивается по текущей цене модели, поэтому, если цена важна, сначала проверьте её командой spicyapi models get <model>.

Вывод: idempotencyKey, новый taskId, sourceTaskId (исходная задача), state, estimatedCost (зарезервированная сумма) и deadlineAt.

  • Повторить можно только задачи failed и expired, а также старые canceled. Чтобы получить другой вариант успешного результата, используйте tasks create.
  • Исходные входные данные используются без изменений, поэтому повтор помогает, только если сбой был временным. Сначала проверьте errorCode; см. Повтор задачи, завершившейся ошибкой и Ошибки и повторы.
  • Если входные данные ссылались на загруженный файл, срок действия которого уже истёк, повтор завершится ошибкой; загрузите файл заново и используйте tasks create.
  • Повтор сохраняет настройку хранения исходной задачи.
  • Если tasks create потерял соединение до того, как вы увидели ID задачи, это не задача, завершившаяся ошибкой. Вместо повтора действуйте по разделу Как вернуться к задаче после прерванного ожидания.

tasks purge

Что делает: безвозвратно удаляет у завершённой задачи сгенерированные медиа, данные результата (сохранённые данные о результате), промпт и прочий текст входных данных — сразу, не дожидаясь истечения срока хранения.

spicyapi tasks purge <task-id> [--yes]
Аргумент или параметрЧто делаетПо умолчаниюОбязателен
task-idЗавершённая задача: succeeded, failed, expired или canceled—Да
--yesПропустить вопрос о подтвержденииВыключен: спрашиватьНет

Содержимое задачи в состоянии queued или running уничтожить нельзя. Отменить такую задачу тоже нельзя — ни команды, ни API для отмены нет, — поэтому дождитесь её завершения командой spicyapi tasks wait <task-id>, а затем уничтожьте содержимое.

Команда объясняет, что будет удалено, и просит подтверждения, потому что это действие нельзя отменить. Сначала скачайте всё, что хотите сохранить.

Вывод: taskId, contentState (purged), purgedAt, contentRemovedBy (user), billingRetained (всегда true) и mediaDeletionPending, а за ними строка, где перечислено уничтоженное и сказано, что сохранённые медиа будут удалены примерно в течение минуты. Если contentState по-прежнему present, на этот раз ничего не удалено; попробуйте позже.

Бесплатно, и это не возврат денег: запись в журнале операций, списанная сумма, модель, состояние, временные метки и ID запроса остаются в учёте. См. Хранение и удаление данных.

files upload

Что делает: загружает файл с вашего компьютера, например исходное изображение для генерации видео из изображения, и выдаёт адрес spicy://, который нужно указать во входных данных.

spicyapi files upload <path> [--content-type <type>]
Аргумент или параметрЧто делаетПо умолчаниюОбязателен
pathФайл для загрузки—Да
--content-type <type>Тип файла, если его нельзя определить по имени: image/jpeg, image/png, image/webp, image/gif, video/mp4, video/webm, audio/mpeg или audio/wavОпределяется по расширениюНет

Поддерживаются изображения .jpg, .jpeg, .png, .webp и .gif до 10 MiB, видео .mp4 и .webm, а также аудио .mp3 и .wav до 90 MiB и не длиннее 600 секунд. Модель может задать собственные, более низкие ограничения.

spicyapi files upload ./start-frame.jpg
fileId: fil_01k3m8x9q2z4v7n5p6r8s0t1w3
status: ready
bytes: 402118
contentType: image/jpeg
sha256: a91f4c2e5b7d16809e3f2a4c8d0b61e7c4a890e5d2f71b3c609ae8427d15f0c6
uri: spicy://f/fil_01k3m8x9q2z4v7n5p6r8s0t1w3
expiresAt: 2026-09-18T09:12:11Z
width: 1280
height: 720

Вывод: скопируйте значение uri в точности так, как оно выведено, в настройку модели для файла — часто это image_url. Пользоваться адресом можно до expiresAt, обычно один день. После этого загрузите файл снова. Загрузка бесплатна.

files download-url

Что делает: создаёт новую ссылку для скачивания результата завершённой задачи. Команда выводит ссылку, но сам файл не сохраняет.

spicyapi files download-url <task-id> [--key <key>]
Аргумент или параметрЧто делаетПо умолчаниюОбязателен
task-idЗадача, выполненная успешно—Да
--key <key>На какой результат дать ссылку, если задача создала несколько. Используйте значение key из output.assets в выводе tasks getПервый результатНет

Вывод: key, url и expiresAt. Ссылка действует около 20 минут; откройте её в браузере или скачайте файл через curl. Для задачи, которая ещё не выполнена успешно, вернётся «not found». Если файл ещё копируется, вы получите ошибку конфликта; подождите несколько секунд и попробуйте снова. Когда файлы задачи удалены, новую ссылку создать нельзя. Бесплатно.

webhooks verify

Что делает: если у вас есть сервер, который принимает обратные вызовы SpicyAPI (см. --callback-url), команда проверяет, что сохранённый обратный вызов настоящий и не изменён. Она целиком работает на вашем компьютере, и API-ключ ей не нужен.

spicyapi webhooks verify --body-file <path> --timestamp <seconds> --signature <base64> --payload-version <version>
ПараметрЧто делаетПо умолчаниюОбязателен
--body-file <path>Файл с телом обратного вызова в точности в том виде, в каком оно получено, байт в байт—Да
--timestamp <seconds>Значение заголовка X-Webhook-Timestamp—Да
--signature <base64>Значение заголовка X-Webhook-Signature—Да
--payload-version <version>Значение заголовка X-Webhook-Payload-Version: 1 или 2—Да
--secret-env <name>Имя переменной окружения, в которой хранится ваш ключ подписи вебхука. Сам ключ никогда не вводится в командной строкеSPICY_WEBHOOK_SECRETНет
--tolerance-seconds <seconds>Насколько метка времени может расходиться с часами вашего компьютера300Нет

Вывод: при успехе — payload (содержимое обратного вызова), payloadVersion, taskId, deliveryId (в версии 2) и timestamp. Если что-то не совпадает, команда выводит ошибку и завершается с ненулевым кодом. Бесплатно.

Ключ подписи создаётся автоматически при регистрации, но его значение никогда не показывается. Чтобы получить ключ, который можно скопировать, откройте в консоли страницу Вебхуки и нажмите Создать (или Сменить, если ключ уже настроен). Новый ключ показывается только один раз. Смена ключа действует сразу и без переходного периода: старый ключ немедленно перестаёт подписывать. См. Webhook.

Готовые рецепты

Сгенерировать изображение

spicyapi models list --modality image --json
spicyapi models get MODEL_ID_FROM_CATALOG --json
spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --wait

Выберите ID в выводе первой команды, составьте input.json по настройкам, которые показывает вторая, затем запустите третью и подтвердите ответом y. Каждый шаг подробно разобран в разделе Ваш первый результат.

Превратить изображение в видео

Найдите модель для генерации видео из изображения и её настройки

spicyapi models list --modality video --task image-to-video --json
spicyapi models get MODEL_ID_FROM_CATALOG --json

В inputSchema найдите настройку для исходного изображения (обычно image_url), настройку длительности (обычно duration_seconds) и всё, что перечислено в required.

Загрузите изображение

spicyapi files upload ./start-frame.jpg

Скопируйте значение uri — оно начинается с spicy://.

Составьте входные данные

Создайте input.json, как в разделе Ваш первый результат, используя имена настроек модели и свой uri:

{
  "prompt": "Slow push-in, rain running down the window",
  "image_url": "spicy://f/fil_01k3m8x9q2z4v7n5p6r8s0t1w3",
  "duration_seconds": 5
}

Проверьте цену и запустите генерацию

spicyapi tasks quote --model MODEL_ID_FROM_CATALOG --input-file input.json
spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --wait --wait-timeout-ms 1800000

Видео обычно оплачивается посекундно, поэтому выбранная длительность меняет цену. Генерация видео может занять несколько минут, поэтому в этом примере ожидание длится до 30 минут вместо 10 по умолчанию. Скачайте .mp4 по ссылке url, как в разделе Ваш первый результат.

Загруженным изображением можно пользоваться один день. После этого загрузите его снова.

Как вернуться к задаче после прерванного ожидания

Задача продолжает выполняться, даже если терминал закрылся, пропала сеть, компьютер ушёл в сон или истекло время ожидания. Как к ней вернуться, зависит от того, что вы видели:

  • Вы видели Accepted: job_… или строку Recover: под ошибкой. У вас есть ID задачи. Подождите снова или просто посмотрите на неё:

    spicyapi tasks wait job_01k3m8x9q2z4v7n5p6r8s0t1w3 --wait-timeout-ms 1800000
    spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3
  • Вы видели только строку Idempotency-Key: — например, потому что соединение оборвалось во время создания задачи. Выполните ту же команду ещё раз, с той же моделью и теми же входными данными, и добавьте этот ключ:

    spicyapi tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --idempotency-key 4f6755a5-0d72-4420-9f6b-9faf0e2b0241 --wait

    CLI снова покажет цену и спросит подтверждение, но если первая попытка была принята, SpicyAPI вернёт ту же самую задачу, а не запустит и не оплатит вторую. Это работает в течение 24 часов с тем же API-ключом. Если первая попытка так и не дошла, задача будет создана сейчас — один раз.

  • У вас нет ни того, ни другого. Выведите список последних задач и найдите нужную по времени и модели:

    spicyapi --json tasks list --limit 10

Повтор задачи, завершившейся ошибкой

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

spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3

Затем посмотрите errorCode. При ошибке или истечении срока задачи резерв обычно освобождается полностью. Некоторые отказы по содержанию оплачиваются по принятой цене, только если это исключение прямо указано на странице модели. Окончательную сумму проверяйте по settled и cost. tasks retry отправляет те же входные данные ещё раз, поэтому помогает, только если причина была временной:

errorCodeЧто делать
rate_limited, upstream_unavailable, timeout, upstream_failedНемного подождите и повторите один раз. Если снова ошибка, больше не повторяйте: при timeout попробуйте через tasks create меньшую длительность или более низкое разрешение
generation_failedНе повторяйте. Измените промпт или изображение и используйте tasks create: те же входные данные обычно приводят к той же ошибке
invalid_assetНе повторяйте: повтор использует старый файл. Загрузите файл заново и используйте tasks create с новым uri
invalid_request, unsupported_combinationНе повторяйте без изменений. Измените настройки и используйте tasks create
content_rejectedНе повторяйте без изменений. Модель отклонила этот запрос: измените промпт или выберите другую модель, затем используйте tasks create

Полный список — на странице Ошибки и повторы.

Если повтор имеет смысл, запустите его. Он создаёт новую задачу, за которую списываются деньги:

spicyapi tasks retry job_01k3m8x9q2z4v7n5p6r8s0t1w3 --wait

Выгрузка расходов

Сохраните в файл расходы текущего ключа за месяц:

spicyapi --json usage --from 2026-09-01 --to 2026-10-01 > usage-2026-09.json

В файле — итоги по дням и по моделям. Чтобы получить список по отдельным задачам, сохраните так же вывод spicyapi --json tasks list --from 2026-09-01 --to 2026-09-08 --limit 100, переходя по nextCursor, пока hasMore равно true. Данные по всему аккаунту и счета есть в консоли.

Запуск CLI из скрипта

В скрипте некому ответить на Continue? [y/N], поэтому платные команды отказываются выполняться, если не добавить --yes. Если добавляете:

  • сначала получите расчёт стоимости и проверьте цену в самом скрипте;
  • давайте каждой генерации собственный постоянный --idempotency-key, например poster-2026-09-17-v1, чтобы повторный запуск скрипта не привёл к двойному списанию;
  • добавьте --json и читайте state из результата: код завершения 0 ещё не означает, что задача выполнена успешно;
  • задайте для ключа лимиты расходов в консоли.
spicyapi --json tasks create --model MODEL_ID_FROM_CATALOG --input-file input.json --idempotency-key poster-2026-09-17-v1 --yes --wait > result.json

Стоимость, подтверждение и безопасность

Какие команды стоят денег. Только tasks create и tasks retry. Цены указаны в долларах США. Расчёт стоимости, просмотр списков, проверки, загрузка, скачивание и удаление бесплатны.

Цена заранее. tasks quote рассчитывает стоимость запроса, ничего не запуская. tasks create получает собственный расчёт и перед вопросом показывает Estimated charge и maximum charge. Когда задача принята, ориентировочная стоимость резервируется (held), и это же максимум, который с вас могут списать. Если задача выполнена успешно, вы платите за то, что фактически получено, но не больше этой суммы, а остаток возвращается на баланс.

Подтверждение. Continue? [y/N] означает, что ответ — нет, пока вы не введёте y. --yes отвечает за вас, поэтому используйте его, только когда уже знаете цену. Если CLI запущен там, где спросить нельзя, например в скрипте или с входными данными из конвейера, а --yes не указан, он отказывается выполнять команду, а не считает ответ положительным. tasks purge спрашивает так же, потому что удаление нельзя отменить. tasks retry тоже спрашивает, но цену заранее не показывает.

Ключ идемпотентности простыми словами. Это метка для одной генерации, вроде номера заказа. Каждая команда tasks create и tasks retry выводит такую метку. Если интернет пропал и вы не уверены, запустилась ли генерация, выполните ту же команду ещё раз с --idempotency-key и выведенным значением: вы получите исходную задачу, и деньги не будут списаны дважды. Метка действует 24 часа с тем же API-ключом. Не используйте её для другой генерации: тот же ключ с другими входными данными отклоняется.

Отмены нет. Принятую задачу отменить нельзя. Ctrl + C, закрытие терминала или отзыв ключа останавливают только ожидание; задача завершится и будет оплачена как обычно.

При ошибке или истечении срока задачи резерв обычно освобождается полностью. Некоторые отказы по содержанию оплачиваются по принятой цене, только если это исключение прямо указано на странице модели. Окончательную сумму проверяйте по settled и cost.

Скачивайте то, что хотите сохранить. Файлы результатов хранятся не дольше примерно 14 дней (или меньше, если так задано в аккаунте или в --retention), а затем удаляются навсегда. Ссылки для скачивания действуют около 20 минут, но пока файл существует, всегда можно запросить новую. Загруженными файлами можно пользоваться один день. Текст промптов по умолчанию стирается через 30 дней. Записи биллинга сохраняются. См. Хранение и удаление данных.

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

Ваш ключ. CLI читает ключ только из SPICY_API_KEY, никогда его не выводит, а в подсказках к ошибкам показывает не больше первых девяти символов (sk-spicy-).

Подробнее: Оплата, Идемпотентность, Необратимость и повтор.

Устранение неполадок

Найдите сообщение, которое видите. Ошибки от SpicyAPI заканчиваются на (request req_…); если обращаетесь в поддержку, укажите это значение, но никогда не отправляйте свой ключ.

Все коды ошибок объяснены на странице Ошибки и повторы, а шаги восстановления — на странице Диагностика и восстановление.

Исходный код

Пакет распространяется под лицензией MIT и разрабатывается открыто по адресу github.com/spicyapi-ai/spicy-cli. Там же можно прочитать код любой команды с этой страницы, сообщить о поведении, которое расходится с описанным, или предложить изменение.

Что дальше

На этой странице

Что такое CLIЧто можно делатьПеред началомОткройте терминалУстановите Node.js 22.13 или новееСоздайте API-ключСохраните ключ в SPICY_API_KEYВыберите, как запускать CLIВаш первый результатПроверьте подключениеПроверьте балансВыберите модельПосмотрите, какие настройки принимает модельЗапишите входные данные в файлПроверьте ценуЗапустите генерацию и дождитесь еёСкачайте результатКак читать выводСправочник командГлобальные параметры и переменные окруженияstatusdocs searchmodels listmodels getbalanceusagetasks quotetasks createtasks waittasks gettasks listtasks retrytasks purgefiles uploadfiles download-urlwebhooks verifyГотовые рецептыСгенерировать изображениеПревратить изображение в видеоНайдите модель для генерации видео из изображения и её настройкиЗагрузите изображениеСоставьте входные данныеПроверьте цену и запустите генерациюКак вернуться к задаче после прерванного ожиданияПовтор задачи, завершившейся ошибкойВыгрузка расходовЗапуск CLI из скриптаСтоимость, подтверждение и безопасностьУстранение неполадокИсходный кодЧто дальше