spicyapiドキュメント
エージェントと CLI
本文

コマンドラインツール(CLI)

spicyapi コマンドを使えば、コードを書かずにターミナルからモデルの閲覧、価格の確認、画像や動画の生成、結果のダウンロードができます。

CLI とは

spicyapi は、ターミナルで動かす小さなプログラムです。ターミナルとは、ボタンをクリックする代わりにコマンドを入力して操作するウィンドウのことです。1 つのコマンドが 1 つの仕事をします。アカウントで使えるモデルを一覧する、生成にいくらかかるかを教える、画像や動画の生成を開始する、完了を待って結果をダウンロードするためのリンクを渡す、といった仕事です。

コードは一切書きません。コマンドを入力して Enter キーを押し、返ってきた答えを読むだけです。

次のような場面に向いています。

  • 誰かが組み込みのコードを書く前に、モデルを試して価格を比べたい
  • 自分のパソコンから画像や動画を生成して、ファイルを保存したい
  • 同じ種類の生成を、毎回ページをクリックして回らずに繰り返したい
  • 何かを組み立てる前に、モデルの正確な設定項目を確かめたい

CLI が扱うのは画像と動画の生成です。テキストモデルやチャットモデルは、テキストとストリーミングで説明しているチャット互換のエンドポイントから呼び出します。

公式ツールはほかに 3 つあります。コマンドを自分で入力したいなら、CLI を選んでください。

ツール選ぶ場面
SDKSpicyAPI を呼び出す JavaScript や TypeScript のプログラムを書いている
MCP サーバーAI コーディングアシスタントに、同じ手順を代わりに実行してもらいたい
Agent SkillAI エージェントに、SpicyAPI の安全な使い方を教えたい

ほかの言語で書いているなら、Python、Go、PHP、Java の公式 SDK もあります。

このページの操作で、うっかりお金がかかることはありません

お金がかかる可能性があるコマンドは、tasks create と tasks retry の 2 つだけです。どちらも、課金が発生する前にいったん止まって確認を求めます。それ以外のコマンドは、何度実行しても無料です。

できること

やりたいことコマンドお金がかかる?API キーが必要?
SpicyAPI に接続できるか確認するspicyapi statusいいえいいえ
このドキュメントを検索するspicyapi docs search <words>いいえいいえ
使えるモデルとその価格を見るspicyapi models listいいえはい
1 つのモデルが受け付ける設定を見るspicyapi models get <model>いいえはい
残高を確認するspicyapi balanceいいえはい
キーがいくら使ったかを見るspicyapi usageいいえはい
生成を開始せずに、正確な価格を知るspicyapi tasks quoteいいえはい
画像や動画の生成を開始するspicyapi tasks createはい(事前に確認あり)はい
生成が終わるのを待つspicyapi tasks wait <task-id>いいえはい
1 件の生成と、その結果のリンクを見る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>いいえはい
コールバックが本当に SpicyAPI から来たものか確認するspicyapi webhooks verifyいいえいいえ(Webhook 署名キーを使います)

上のコマンドで <task-id> のように山かっこで囲んだ語は、「ここに自分の値を入れる」という意味です。山かっこは付けずに入力してください。

始める前に

必要なものは 4 つです。ターミナル、Node.js、API キー、そして CLI を実行する方法です。初めてなら 10 分ほどかかります。

ターミナルを開く

ターミナルは、コマンドを実行するための文字だけのウィンドウです。このページのコマンドはすべて、ターミナルに入力するか貼り付けてから、Enter キーで実行します。

Cmd + Space を押して 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 と表示された場合は、次の手順を行います。

  1. nodejs.org を開いてダウンロードページに進み、使っているシステム用の LTS 版を選びます。
  2. インストーラーを実行し、既定のオプションのまま進めます。
  3. ターミナルを閉じて新しく開き直し、もう一度 node -v を実行します。

Node.js には npm と npx が付属しています。最後のステップで使う 2 つの補助ツールです。

API キーを作成する

API キーは、リクエストがあなたのアカウントから来たものだと SpicyAPI が判断するためのものです。

  1. spicyapi.ai/register でアカウントを作成します。アカウントは段階的に開放されることがあります。まだ登録を受け付けていない場合は、ウェイトリストに登録してください。
  2. コンソールの請求でチャージします。生成の料金は、米ドル建ての残高から支払われます。
  3. API キーを開き、キーを作成をクリックします。my laptop のように、あとで見分けがつく名前を付けてください。必須なのは名前だけです。
  4. すぐにキーをコピーしてください。キーは sk-spicy- で始まり、一度しか表示されません。ファイルとして保存を使うこともできます。

新しいキーには、設定しない限り利用上限は付きません。日次上限を設定しておけば、操作を誤ったりキーが漏えいしたりしても高額な請求にはならず、上限はあとから同じページで変更できます。

キーはパスワードと同じように扱う

キーを持っている人は誰でも、あなたの残高を使えます。チャットやメールで送らないでください。スクリーンショットやサポートへの問い合わせに写さないでください。Git や GitHub に入るプロジェクトフォルダーには、絶対に保存しないでください。漏えいした場合は、API キーページで失効させ、新しいキーを作成してください。

キーを SPICY_API_KEY に保存する

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 の実行方法を選ぶ

方法は 2 つあり、どちらでもコマンドは同じです。

npx は、必要なときに CLI をダウンロードして実行します。

npx @spicyapi/cli status

初回は、npm が Need to install the following packages: @spicyapi/cli@… Ok to proceed? (y) と尋ねてきます。y を押してから Enter を押してください。

この方法を使う場合は、このページで spicyapi と書いてあるところを、すべて npx @spicyapi/cli に置き換えてください。たとえば spicyapi models list は npx @spicyapi/cli models list になります。

最初の結果を得る

ここでは画像を 1 枚生成して、ダウンロードするまでを順に進めます。各ステップで、コマンド、表示されるおおよその内容、そこで何が起きたかを示します。数値、ID、時刻は、実際に試したときとは異なります。

MODEL_ID_FROM_CATALOG を実際のモデル ID に置き換える

MODEL_ID_FROM_CATALOG は仮の値で、モデルではありません。ステップ 3 で、ライブカタログ(spicyapi models list。GET /api/v1/models と同じ一覧です)から実際の ID を選ぶ方法を説明します。このページで仮の値が書かれている場所には、すべて自分で選んだ ID を貼り付けてください。仮の値をそのまま送っても、「見つからない」というエラーが返るだけです。

接続を確認する

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 はその 2 つの合計です。残高を前払いの資金とキャンペーンの付与残高に分けた 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 あたりの米ドル建ての価格です。unit は per_image、動画の per_second、per_request、per_1k_tokens のいずれかです。
  • pricing に複数の項目がある場合は、解像度などの設定によって価格が変わるという意味です。
  • 名前でモデルを探すには、--search と名前の一部を付け加えます。

--json を付けると、一覧がインデント付きの読みやすい JSON で表示されます。付けないと、一覧全体が 1 本の長い行に詰め込まれます。

そのモデルが受け付ける設定を見る

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 は、そのモデルが受け付ける設定の一覧です。このページでは以降、これらの設定を入力と呼びます。

  • required は、必ず送らなければならない設定の一覧です。ここでは prompt だけです。
  • properties は、モデルが受け付けるすべての設定の一覧で、それ以外は使えません。未知の名前やつづりを間違えた名前が 1 つでもあると、リクエスト全体が拒否されます。
  • enum は、その設定に使える値の一覧で、それ以外の値は使えません。

設定はモデルごとに異なるので、必ず自分が選んだモデルの設定を読んでください。サーバーの検証を通過済みの、すぐに使える入力例がほしい場合は、spicyapi models list --search <name> --include-examples --json を実行して examples を見てください。

入力をファイルに書く

入力は、ターミナルがいま開いているフォルダーに input.json という名前のファイルで置きます。ファイルにしておくと、特に Windows で起こりがちな引用符の問題を避けられます。

3 行をまとめて貼り付けます。

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 を押します。それ以外の入力ではキャンセルされ、何も課金されません。見積もりの有効期限が切れる前に、5 分以内に答えてください。

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" と、output の中にある "url" を探してください。settled が true になっていれば、cost が確定した請求額です。結果を複数行に分けて読みやすく表示したい場合は、コマンドに --json を付けてください。

ウィンドウを閉じてもタスクはキャンセルされません

受理されたタスクは必ず最後まで実行され、通常どおり課金されます。Ctrl + C を押したりターミナルを閉じたりしても、止まるのは待機だけです。タスク ID を控えておき、spicyapi tasks wait <task-id> で再開してください。待機が中断されたタスクを再開するを参照してください。

結果をダウンロードする

url は、約 20 分有効な直接ダウンロード用のリンクで、キーは要りません。ブラウザーに貼り付けてファイルを保存するか、ターミナルからダウンロードします(リンクには & が含まれるので、引用符は消さないでください)。

curl -L -o result.png "PASTE_THE_URL_HERE"

ファイルの拡張子は mime に合わせます。image/png なら .png、image/jpeg なら .jpg、video/mp4 なら .mp4 です。

リンクの期限が切れていたら、spicyapi files download-url <task-id> で新しいリンクを取得するか、新しいリンクを返す spicyapi tasks get <task-id> を実行してください。

ここで起きたこと: 結果を自分のパソコンにコピーしました。早めに行ってください: SpicyAPI が生成したファイルを保存するのは最長で約 14 日(アカウントでそれより短く設定していればその期間)で、そのあとは完全に削除されます。データ保存と破棄を参照してください。

出力の読み方

  • 通常の出力は、1 行に 1 つずつ name: value の形で表示されます。output や retention のように複数の要素を含む値は、1 行の 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 を付けた場合、エラーは error、type、status、code、requestId を含む 1 行の JSON オブジェクトになり、Next: 行はありません。キーが設定されていないときの type は MissingApiKeyError です。サポートに問い合わせるときは、req_… の値を伝えてください。
  • 金額は、$ 記号の付かないプレーンテキストの米ドル金額です(例:0.03)。
  • 時刻は UTC です。2026-09-17T08:05:00Z の末尾の Z は UTC を表します。
  • 終了ステータスは、コマンドが成功すると 0、失敗すると 0 以外になります。スクリプトでこれを確認できます。

コマンドリファレンス

どのコマンドにもヘルプが組み込まれています。spicyapi tasks create --help のように --help を付けてください。

共通オプションと環境変数

次のオプションは、どのコマンドでも使えます。

オプション内容既定値必須
--json完全な結果を JSON で表示しますオフいいえ
--timeout-ms <milliseconds>SpicyAPI からの 1 回の応答を、あきらめるまでにどれだけ待つか。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、--versionCLI のバージョンを表示します—いいえ
-h、--helpコマンドのヘルプを表示します—いいえ
環境変数用途
SPICY_API_KEYAPI キーです。status、docs search、webhooks verify 以外のすべてのコマンドで必要です
SPICY_WEBHOOK_SECRETWebhook 署名キーです。webhooks verify が読み取ります
SPICY_API_BASE_URL、SPICY_SERVICE_BASE_URL上の 2 つのアドレス用オプションと同じです。アドレスは https:// で始まる必要があります

status

内容: SpicyAPI が稼働していて、自分のパソコンから接続できるかを確認します。

spicyapi status

オプションはありません。キーは不要で、無料です。

出力: 1 文です。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 など、1 種類の作業だけに絞りますすべていいえ
--provider <name>1 つの開発元(モデルを作った企業や研究機関)のモデルだけに絞ります。provider の値と完全に一致する必要がありますすべていいえ
--search <text>ID か表示名にこの文字列を含むモデルだけに絞ります。大文字と小文字は区別しませんなしいいえ
--include-schema各モデルの設定の全体(inputSchema)を付け加えます。出力がかなり大きくなりますオフいいえ
--include-examplesサーバーの検証を通過済みの、すぐに使える入力例(examples)を付け加えますオフいいえ
spicyapi models list --modality video --task image-to-video --json

出力: total と items です。--json を付けないとすべての項目が 1 行に表示されるので、付けて実行してください。各項目で特に役立つフィールドは次のとおりです。

フィールド意味
modelほかのコマンドで使うモデル ID
displayName、provider、modality、tasks名前、開発元、出力の種類、作業の種類
enabled、availableどちらも true のモデルを使ってください
pricing価格の段階ごとに 1 項目ずつ並びます。variant(解像度など)、unit、米ドル建ての price に加え、割引が適用される場合は regularPrice と offerLabel が付きます
taskTimeoutSeconds生成が expired で終わるまでに実行できる時間
maxOutputDurationSecondsこのモデルで作れる動画の最大の長さ(上限があるモデルのみ)

無料です。モデル一覧の取得もアカウントのリクエストレートに数えられるので、生成のたびに実行する必要はありません。

models get

内容: 1 つのモデルの情報を、受け付ける設定も含めてすべて表示します。

spicyapi models get <model>
引数内容既定値必須
model正確なモデル ID。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>集計に含める最初の日。UTC の YYYY-MM-DD 形式今日を含む直近 7 日間いいえ
--to <date>集計に含める最後の日の翌日。UTC の YYYY-MM-DD 形式。期間は最長 92 日です今日を含む直近 7 日間いいえ
spicyapi usage --from 2026-09-01 --to 2026-10-01

これで 9 月がまるごと対象になります。--to は、集計に含まれない最初の日です。両方のオプションを省略すると、今日を含む直近 7 日間が表示されます。

出力: from、to、currency、totalCalls、totalSpend に続いて、days(日ごとの calls、succeeded、failed、spend)と models(同じ数値をモデルごとにまとめたもの)が表示されます。totalSpend に数えられるのは確定した請求額だけです。days と models は同じタスクを 2 通りに集計したものなので、足し合わせないでください。1 つのキーではなくアカウント全体の数値は、コンソールの利用量ページで確認してください。

無料です。1 分あたり 30 回までに制限されているので、合計の確認に使い、ループの中では呼び出さないでください。

tasks quote

内容: 1 回の生成にかかる正確な金額を、生成を開始することも、お金を仮押さえすることもなく教えてくれます。

spicyapi tasks quote --model <model> --input-file <path>
オプション内容既定値必須
--model <model>正確なモデル ID—はい
--input-file <path>入力を JSON ファイルから読み取ります。- を指定すると、パイプでコマンドに渡された内容から読み取ります—これか --input-json のどちらか
--input-json <json>入力を JSON テキストとして直接渡します。引用符の扱いは --input-file のほうが簡単です—これか --input-file のどちらか
--callback-url <url>使う予定のコールバックアドレス。価格を計算するリクエストの一部になるためですなしいいえ

出力: quoteId、model、estimatedCost、maxCharge、currency、quantity(課金対象の秒数など)、unit、expiresAt です。見積もりの有効期間は 5 分です。

無料で、確認も求められません。モデルや設定を比べるときに使ってください。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>「この 1 回の生成」に付ける名前です。24 時間以内に同じキーでコマンドをもう一度実行すると、新しいタスクではなく同じタスクが返ります。128 文字まで実行のたびに新しいランダムなキーいいえ
--retention <duration>このタスクの生成メディア、結果ペイロード、プロンプト、その他の入力テキストを、通常より早く削除します。30m、1h、7d、または秒数で指定します。短くすることしかできません。0 ならタスクが終わった時点で削除します。課金の記録は常に残りますアカウントの設定いいえ
--callback-url <url>タスクが終わったときに SpicyAPI が呼び出す、https:// で始まる公開アドレス。http://、localhost、プライベートネットワークのアドレスは拒否されます。自分でサーバーを運用している場合にだけ役立ちます。Webhook を参照してくださいなしいいえ
--poll-interval-ms <milliseconds>--wait と一緒に使います。この間隔(ミリ秒)で状態を確認します。100〜600002 秒から始まり、10 秒まで徐々に間隔が延びますいいえ
--wait-timeout-ms <milliseconds>--wait と一緒に使います。この時間(ミリ秒)が過ぎたら待つのをやめます。1〜86400000。タスクは実行を続けます600000(10 分)いいえ

実行の流れ:

  1. CLI が入力を読み取り、JSON オブジェクトであることを確認します。入力が指定されていなければ、ここで止まります。
  2. スクリプトの中など、質問に答える人がいない状況で --yes が指定されていなければ、ここで止まります。
  3. 見積もりを取り、見積額、最大請求額、見積もりの有効期限、冪等キーを表示します。
  4. Continue? [y/N] と尋ねます。先に進むのは y か yes と答えた場合だけです。既定の答えはいいえです。
  5. 見積もりどおりの価格でタスクを作成します。見積額が残高から仮押さえされ、その金額がタスクにかかりうる最大額にもなります。
  6. --wait がなければ、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 によって途中で終わることがあります。タスク自体は実行を続け、通常どおり課金されます。最初に表示された Accepted: の行にタスク ID があるので、spicyapi tasks wait <task-id> で続きを待ってください。--idempotency-key を付けずに同じ作成コマンドをそのまま実行し直さないでください。2 件目の生成が始まり、その分も課金されます。

(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-idタスク ID(例:job_01k3m8x9q2z4v7n5p6r8s0t1w3)—はい
--poll-interval-ms <milliseconds>この間隔(ミリ秒)で状態を確認します。100〜600002 秒から始まり、10 秒まで徐々に間隔が延びますいいえ
--wait-timeout-ms <milliseconds>この時間(ミリ秒)が過ぎたら待つのをやめます。1〜86400000600000(10 分)いいえ
spicyapi tasks wait job_01k3m8x9q2z4v7n5p6r8s0t1w3 --wait-timeout-ms 1800000

出力: 状態が succeeded、failed、expired のいずれかになると、完了したタスクを tasks get と同じフィールドで表示します。タスクが成功していてもファイルのコピーがまだ終わっていない場合は、もう少し待ち続けます。

時間切れになると、Error: task … did not reach a terminal state within 600000ms と表示されます。これは失敗ではなく、タスクはまだ実行中です。必要なら --wait-timeout-ms を長くして、もう一度待ってください。待機をやめても、タスクがキャンセルされることはありません。無料です。

tasks get

内容: 1 件のタスクの現在の様子を表示します。状態、費用、結果のリンク、内容が削除される時期です。

spicyapi tasks get <task-id>
引数内容既定値必須
task-idタスク ID—はい

タスクを作成したのと同じ API キーを使ってください。ほかのキーでは「見つからない」という結果になります。

出力のフィールド:

フィールド意味
statequeued(開始待ち)、running、succeeded、failed、expired(時間切れ)のいずれかです。古いタスクでは canceled が表示されることもあります
output.assets結果です。それぞれに url(約 20 分有効なダウンロードリンク)、expiresAt(そのリンクが使えなくなる時刻)、mime(ファイルの種類)、サイズの情報、key があります。pending: true はファイルをまだコピー中という意味なので、数秒後にもう一度試してください。unavailable: true は復元できないという意味です
errorCode、errorMessageタスクが失敗した理由です。エラーを参照してください
cost、settled米ドル建ての請求額です。settled が true になると確定します
input送った設定です。プロンプトの保存期間が過ぎると削除されます
createdAt、completedAt、deadlineAt作成された時刻、完了した時刻、完了できる最も遅い時刻
contentStatepresent(内容がまだ保存されている)、expired(保存期間のルールで削除された)、purged(自分で削除した)のいずれか
retentionoutputsExpireAt(結果ファイルが削除される時刻)、promptsExpireAt(プロンプトの本文が消去される時刻)、source(どの設定で決まったか)
sourceTaskIdこのタスクが別のタスクの再試行である場合に付きます

通常の出力の最後には、Outputs expire: … や Content: Destroyed — you removed the outputs … のような、わかりやすい言葉でのまとめが付きます。呼び出すたびに新しいダウンロードリンクが返ります。無料です。

tasks list

内容: いま使っている API キーで作成したタスクを、1 ページずつ一覧します。

spicyapi tasks list [options]
オプション内容既定値必須
--from <date>含める最初の日。UTC の YYYY-MM-DD 形式今日で終わる 7 日間いいえ
--to <date>含める最後の日の翌日。UTC の YYYY-MM-DD 形式。期間は最長 92 日です上と同じいいえ
--state <state>1 つの状態のタスクだけに絞ります:queued、running、succeeded、failed、canceled、expiredすべていいえ
--model <model>1 つの正確なモデル ID のタスクだけに絞りますすべていいえ
--limit <count>1 ページあたりのタスク数。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 を使ってください。
  • 再試行では、元のタスクの保存期間の設定が引き継がれます。
  • タスク ID が表示される前に tasks create の接続が切れた場合、それは失敗したタスクではありません。代わりに待機が中断されたタスクを再開するの復旧手順に従ってください。

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 に続いて、何を破棄したかと、保存されているメディアが 1 分ほどで削除されることを伝える 1 行が表示されます。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拡張子から判定いいえ

対応しているのは、10 MiB までの画像(.jpg、.jpeg、.png、.webp、.gif)と、90 MiB かつ 600 秒までの動画(.mp4、.webm)と音声(.mp3、.wav)です。モデルによっては、さらに低い上限を独自に設けています。

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 まで、通常は 1 日です。それを過ぎたら、もう一度アップロードしてください。アップロードは無料です。

files download-url

内容: 終了したタスクの結果について、新しいダウンロードリンクを作ります。リンクを表示するだけで、ファイルは保存しません。

spicyapi files download-url <task-id> [--key <key>]
引数・オプション内容既定値必須
task-id成功したタスク—はい
--key <key>タスクが複数の結果を作った場合に、どの結果のリンクにするか。tasks get の output.assets にある key の値を使います最初の結果いいえ

出力: key、url、expiresAt です。リンクは約 20 分有効で、ブラウザーで開くか curl でダウンロードします。まだ成功していないタスクでは「見つからない」という結果になります。ファイルをまだコピー中の場合は競合エラーになるので、数秒待ってからもう一度試してください。タスクのファイルが削除されたあとは、新しいリンクは作れません。無料です。

webhooks verify

内容: SpicyAPI のコールバックを受け取るサーバーを運用している場合(--callback-url を参照)、保存しておいたコールバック 1 件が本物で、改ざんされていないことを確認します。処理はすべて自分のパソコン上で行われ、API キーは要りません。

spicyapi webhooks verify --body-file <path> --timestamp <seconds> --signature <base64> --payload-version <version>
オプション内容既定値必須
--body-file <path>受け取ったコールバックの本文を、1 バイトも変えずに保存したファイル—はい
--timestamp <seconds>X-Webhook-Timestamp ヘッダーの値—はい
--signature <base64>X-Webhook-Signature ヘッダーの値—はい
--payload-version <version>X-Webhook-Payload-Version ヘッダーの値:1 か 2—はい
--secret-env <name>Webhook 署名キーが入っている環境変数の名前。署名キーそのものをコマンドラインに入力することはありませんSPICY_WEBHOOK_SECRETいいえ
--tolerance-seconds <seconds>タイムスタンプとパソコンの時計とのずれとして許容する秒数300いいえ

出力: 成功すると、payload(コールバックの内容)、payloadVersion、taskId、deliveryId(バージョン 2)、timestamp を表示します。一致しないものがあればエラーを表示し、0 以外の終了ステータスで終わります。無料です。

署名キーは登録時に自動で作成されますが、その値は一度も表示されません。コピーできるキーを得るには、コンソールで Webhook を開き、発行するをクリックします(すでに設定されている場合は再発行をクリックします)。新しいキーは一度しか表示されません。再発行はただちに反映され、新旧のキーを併用できる期間はありません。古いキーは、その時点で署名に使われなくなります。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

1 つ目のコマンドで ID を選び、2 つ目のコマンドで表示された設定をもとに input.json を作り、3 つ目を実行して 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

spicy:// で始まる uri の値をコピーします。

入力を書く

最初の結果を得ると同じ方法で、モデルの設定名と自分の uri を使って input.json を作ります。

{
  "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

動画はたいてい秒単位で課金されるので、選んだ長さによって価格が変わります。動画は数分かかることがあるため、この例では既定の 10 分ではなく、最長 30 分待つようにしています。最初の結果を得ると同じように、url から .mp4 をダウンロードしてください。

アップロードした画像は 1 日使えます。それを過ぎたら、もう一度アップロードしてください。

待機が中断されたタスクを再開する

ターミナルが閉じても、ネットワークが切れても、パソコンがスリープしても、待機が時間切れになっても、タスクは実行を続けます。タスクに戻る方法は、何が表示されていたかによって変わります。

  • 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 は 2 件目を開始して課金するのではなく、その同じタスクを返します。これは同じ API キーで 24 時間有効です。最初の試行が届いていなかった場合は、このときにタスクが 1 回だけ作成されます。

  • どちらも表示されていなかった場合。 最近のタスクを一覧して、時刻とモデルから探します。

    spicyapi --json tasks list --limit 10

失敗したタスクを再試行する

まず、失敗した理由を調べます。

spicyapi tasks get job_01k3m8x9q2z4v7n5p6r8s0t1w3

次に errorCode を読みます。失敗・期限切れのタスクでは通常、仮押さえ額が全額解放されます。ただし、モデルページに明記された一部のコンテンツ拒否は、受理時の見積額で課金されます。最終請求額は settled と cost で確認してください。tasks retry は同じ入力をもう一度送るので、役立つのは原因が一時的だった場合だけです。

errorCodeすること
rate_limited、upstream_unavailable、timeout、upstream_failed少し待ってから 1 回だけ再試行します。また失敗したら、再試行はやめてください。timeout の場合は、tasks create で長さを短くするか解像度を下げて試してください
generation_failed再試行しないでください。プロンプトや画像を変えてから tasks create を使います。同じ入力は、たいてい同じように失敗します
invalid_asset再試行は古いファイルを使い回すので、再試行しないでください。ファイルをもう一度アップロードし、新しい uri で tasks create を使います
invalid_request、unsupported_combinationそのまま再試行しないでください。設定を変えてから tasks create を使います
content_rejectedそのまま再試行しないでください。モデルがこのリクエストを断りました。プロンプトを変えるか別のモデルを選んでから、tasks create を使います

一覧はすべてエラーにあります。

再試行する意味がある場合は、実行します。新しいタスクが作成され、その分が課金されます。

spicyapi tasks retry job_01k3m8x9q2z4v7n5p6r8s0t1w3 --wait

利用状況を書き出す

いま使っているキーの 1 か月分の利用状況を、ファイルに保存します。

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 を同じ方法で保存し、hasMore が true のあいだは nextCursor をたどって続きを取得します。アカウント全体の数値と請求書は、コンソールにあります。

スクリプトから CLI を実行する

スクリプトの中では誰も Continue? [y/N] に答えられないので、課金が発生するコマンドは --yes を付けない限り実行を拒否します。--yes を付けるときは、次の点を守ってください。

  • 先に見積もりを取り、スクリプトの中で価格を確認する。
  • poster-2026-09-17-v1 のように、生成ごとに固定の --idempotency-key を付けて、スクリプトを 2 回実行しても二重に課金されないようにする。
  • --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 はあなたの代わりに答えるので、価格がわかっている場合にだけ使ってください。スクリプトの中やパイプで入力を渡したときなど、質問できない環境で --yes がなければ、CLI は「はい」とみなさずに実行を拒否します。削除は元に戻せないので、tasks purge も同じように確認を求めます。tasks retry も確認を求めますが、先に価格は表示しません。

冪等キーをわかりやすく言うと。 注文番号のように、1 回の生成に付けるラベルです。tasks create と tasks retry は、実行のたびにこれを表示します。インターネット接続が切れて生成が始まったかどうかわからない場合は、同じコマンドに --idempotency-key と表示された値を付けてもう一度実行してください。元のタスクが返ってきて、二重に課金されることはありません。このラベルは、同じ API キーで 24 時間有効です。別の生成には使い回さないでください。同じキーで別の入力を送ると拒否されます。

キャンセルはできません。 受理されたタスクはキャンセルできません。Ctrl + C を押しても、ターミナルを閉じても、キーを失効させても、止まるのは待機だけです。タスクは最後まで実行され、通常どおり課金されます。

失敗・期限切れのタスクでは通常、仮押さえ額が全額解放されます。ただし、モデルページに明記された一部のコンテンツ拒否は、受理時の見積額で課金されます。最終請求額は settled と cost で確認してください。

残したいものはダウンロードする。 結果ファイルが保存されるのは最長で約 14 日(アカウントの設定や --retention でそれより短くしていればその期間)で、そのあとは完全に削除されます。ダウンロードリンクの有効期間は約 20 分ですが、ファイルが残っている間はいつでも新しいリンクを取得できます。アップロードしたファイルは 1 日使えます。プロンプトの本文は、既定では 30 日後に消去されます。課金の記録は残ります。データ保存と破棄を参照してください。

利用上限。 キーごとに、日次・月次・累計の上限を API キーページで設定できます。新しいキーには、設定するまで上限が付きません。上限を超えることになるタスクは、開始前に拒否されます。

キーの扱い。 CLI はキーを SPICY_API_KEY からしか読み取らず、表示することもありません。エラーのヒントに出すのも、先頭の 9 文字(sk-spicy-)までです。

詳しくは、課金、冪等性、タスク確定と再試行を参照してください。

トラブルシューティング

表示されたメッセージを探してください。SpicyAPI からのエラーは (request req_…) で終わります。サポートに問い合わせるときはこの値を伝えてください。ただし、キーは絶対に送らないでください。

すべてのエラーコードの説明はエラーに、復旧の手順はトラブルシューティングと復旧にあります。

ソースコード

このパッケージは MIT ライセンスで、github.com/spicyapi-ai/spicy-cli で公開のまま開発しています。このページで説明したコマンドの実装を読む、書かれている動作と食い違う点を報告する、変更を提案する——いずれもそこからどうぞ。

次のステップ

このページの内容