保持と破棄
プラットフォームの保持上限、設定できる短縮期間、既存データへの影響、タスク内容の破棄方法と、保証できない範囲を説明します。
保持には 2 つの層があります。プラットフォームの上限は公開の約束で、内部の調整項目ではありません。その上限の範囲内で、自分でより短い期間を設定できます。また、個別タスクの内容はいつでも破棄を依頼できます。
両者の関係は明確です。短くすることだけができ、どの設定でも上限は延びません。
保持期間(プラットフォームの上限)
| データ | プラットフォーム上限 | 期限後の処理 |
|---|---|---|
| 生成ファイル(画像・動画・音声) | 約 14 日 | オブジェクトストレージから削除 |
| 短編映画のメディア(Spicy Studio の短編映画プロジェクトで作るシーン画像・動画・音声と、書き出した映画) | 約 60 日 | オブジェクトストレージから削除 |
| アップロードした参照画像 | 1 日 | 確定レスポンスの expiresAt で spicy:// URI が期限切れになり、その後オブジェクトを削除 |
タスク内容(input 内のプロンプト・パラメーター、output 内の生成ファイル参照) | 30 日 | 両フィールドを消去。タスクの行自体は保持 |
| アセットライブラリ(ご自身で保存したファイル) | 削除するまで | アセットを削除するか、オーナーがアカウントを閉鎖すると削除されます。チームライブラリはチームとともに削除されます。メディアを参照 |
| タスク記録(タスク ID、モデル、状態、金額、日時。内容は一切含まない) | 無期限 | 削除しない。課金紛争の証拠となる記録 |
| タスクのログ・イベント(状態遷移、Webhook 配信記録) | 最低 60 日(月単位のパーティションのため実際は 2~3 か月) | 削除 |
| 残高・台帳記録 | 10 年 | アカウント履歴、照合、紛争対応のため保持。詳細は後述 |
| 監査記録 | 2 年 | 整合性の検証後、ポリシーに従って削除 |
| セキュリティ記録内の平文 IP / UA | 90 日 | バージョン付き HMAC の仮名識別子に置き換える。匿名化ではない |
| データベースのバックアップ | 35 日 | 順次更新。アプリでの消去によりバックアップが即時消えるわけではない |
最初の 4 行は、以下の 4 つの保持設定で短縮できます。対象は生成結果(メディアと結果ペイロード)、短編映画のメディア、プロンプトのテキスト、アップロードファイルです。
短編映画のメディアは、Spicy Studio の映画制作に数日から数週間かかり、最初の週に作ったシーンも全編の書き出し時に必要なため、長めに保持します。これは Studio の短編映画プロジェクト内で開始したタスクだけに適用します。同じモデルを API、SDK、Playground から呼び出した場合は 14 日上限のままで、プロンプトのテキストはどちらも 30 日上限です。残りはプラットフォームの義務や法定期間であり、ユーザー設定では変わりません。
期間はサーバー設定であり、固定の定数ではありません
表は現在有効な上限で、同時にデフォルトです。何も設定しなければ従来どおりの動作になります。地域ごとの要件などに応じて運用側が変更することはありますが、コンプライアンス上の変更として扱い、このページと実際の削除動作を一致させます。
契約で別の保持期間が必要な場合は、このページから推測せず、契約前に相談してください。
アップロード URI の期限とオブジェクト削除の完了は別です
確定時に返る spicy:// URI は、レスポンスの expiresAt までしか使用できません。デフォルトは確定成功から 1 日です。その時点で新しいタスクには直ちに使えなくなります。実体のオブジェクトは清掃処理で削除し、最後の保護処理には最大 24 時間の遅れがあり得ますが、URI の使用期限は延びません。
「正確に 14 日」ではなく「約 14 日」とする理由
期限管理の最外層はオブジェクトストレージのライフサイクル規則で、公式の動作では期限後 24 時間以内に削除します。実際には 14 日から最大さらに 1 日かかるのに整数の日数を断定するのは不正確なため、「約」としています。
自分で設定する短い期間も同じです。 1 時間に設定すれば清掃は通常数分以内に完了しますが、正確な時刻を断定せず「約 1 時間」「遅くとも」と表記します。
残したいものはダウンロードしてください。 期間終了後はダウンロードリンクを発行できません。ただし、タスク記録の照会と課金履歴での残高変動の確認は引き続き可能です。
個別に設定する 4 つの保持期間
同じ対象に 4 段階の期間を選ぶのではなく、4 種類の対象を別々に設定します。以下の名前はコンソールに表示されるものです。
| 設定 | 対象 | デフォルト(プラットフォーム上限) | 選択肢 |
|---|---|---|---|
| 生成結果 | 生成画像・動画・音声と結果ペイロード | 約 14 日 | 1 時間 / 6 時間 / 24 時間 / 7 日 / 14 日 |
| 短編映画のメディア | Spicy Studio の短編映画プロジェクトで作るメディアと書き出した映画 | 約 60 日 | 1 時間 / 24 時間 / 7 日 / 14 日 / 30 日 / 60 日 |
| プロンプトのテキスト | リクエストのテキスト:プロンプトと input 内のテキストフィールド | 30 日 | 結果と同じ / 1 時間 / 24 時間 / 7 日 / 30 日 |
| アップロードファイル | 参照素材としてアップロードするファイル | 1 日 | タスク終了時に削除 / 1 時間 / 24 時間 |
コンソールの データ保護ページの 保存期間 で設定します。タスクを受理すると、これらの設定と以下のヘッダーから結果・プロンプトの期限が決まり、recordInfo の retention で確認できます。
「タスク終了時に削除」は、そのファイルを使うすべてのタスクが最終状態(succeeded / failed / canceled / expired)に達した後、通常 1 分以内に削除する設定です。再試行で必要なため、タスク作成時には削除しません。影響を理解してから選んでください。同じ画像をもう一度使うには再アップロードが必要で、再試行は失敗します。
設定変更が既存データに与える影響
保持期間の変更は単純な「今後だけ」の切り替えではありません。実行済みタスクにも影響する変更と、影響しない変更があります。現在の動作は次のとおりです。
| 変更 | 既存タスク・ファイルへの影響 |
|---|---|
| プロンプトのテキストを 1 時間または 24 時間にする | 次の清掃処理(通常数分以内)で、完了から 1 日を超えた全タスクのプロンプトのテキストと生成結果・ファイルを削除します。生成結果が 14 日設定のままでも同じです。その後も、より早く削除される場合を除き、各タスクが完了から 1 日になると同じ処理をします。 |
| プロンプトのテキストを 7 日にする | 上と同じですが、1 日の代わりに 7 日です。 |
| プロンプトのテキストが結果と同じのとき、生成結果を短くする | プロンプトのテキストを同じ期間にした場合と同じです。7 日なら 7 日前まで遡り、1 時間・6 時間・24 時間なら 1 日前まで遡って適用します。 |
| プロンプトのテキストが個別の期間のとき、生成結果を短くする | 実行済みタスクは変わらず、受理時の結果期限を保持します。新しいタスクに短い期間を使います。 |
| アップロードファイルをタスク終了時に削除にする | 保存時に存在するファイルに適用します。完了済みタスクだけで使うファイルは約 1 分以内、その他は利用中タスクの終了後に削除します。保存後にアップロードしたファイルは、現在は確定レスポンスの標準期限を維持します。 |
| アップロードファイルを 1 時間または 24 時間にする | 現在は変更されません。すべてのアップロードファイルは確定レスポンスの expiresAt まで使用できます。 |
| いずれかの期間を長くする | 削除済みデータは戻らず、既存タスクは元の期限を維持します。 |
一部の変更が遡って適用されるのは、受理時に個別の期限を固定する処理とは別に、日単位の清掃処理があるためです。この処理はプロンプトのテキスト設定を 1・7・30 日へ切り上げ、アカウント内の全完了済みタスクに適用します。タスクを消去する際はプロンプトと結果を一緒に消去します。
同じページの 2 枚目のカード ジョブ内容の保存期間 は、この日単位の処理を直接設定します。
- 1 日または 7 日を選ぶと、その期間より前に完了した全タスクのプロンプト、結果、生成ファイルを削除します。その後も各タスクがその経過期間に達すると削除します。
- 完了後すぐに内容を消去をオンにすると、有効化前のタスクも含め、すべての完了済みタスクの内容をそれぞれ完了から約 1 時間後に消去します。
- 2 枚のカードは設定を共有し、一方を保存するともう一方の表示も変わります。
期間を短くする前に残したい結果を保存してください
短い設定は、実行済みタスクの結果・プロンプトを削除することがあり、削除後は復元できません。保存前にコンソールが影響対象の推定件数を示しますが、正確な削除リストではなく注意喚起として扱ってください。
必要な結果をすべて先にダウンロードしてから短縮します。延長は今後にしか影響せず、削除済みのものも戻らないため、この注意は不要です。
リクエストごとの指定:X-Spicy-Retention
アカウント設定を変えずに、その生成だけを早く消したい場合は、タスク作成時にヘッダーを送信します。値は秒単位の整数で、そのタスクの生成ファイルとプロンプトに適用します。
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-H "X-Spicy-Retention: 3600" \
--data "$TASK_PAYLOAD"- 短縮のみです。 有効値は
min(header, account setting, platform cap)です。管理者がアカウントを 1 時間にした後、個別リクエストで 14 日へ戻すことはできません。それができれば設定ではなく提案になってしまいます。 0も有効で、「タスクが最終状態になったらすぐ生成ファイルを削除する」を意味します。- 不正な値でもリクエストは失敗しません。 負の値は
0、上限を超える値は上限に収めます。十進整数でない値は無視し、アカウント設定を使います。実際に適用した値は常にrecordInfoのretentionで返します。保持をより控えめにするためだけのヘッダーで、生成を壊さない設計です。 - 読み取るエンドポイント。
jobs/createTaskとjobs/streamはどちらも読み取ります。jobs/retryは元タスクの有効値を継承し、ヘッダーを無視します。再試行は同じ処理への 2 回目の試みで、別期間を選べると同じタスク系列に 2 種類の期限ができるためです。jobs/quoteはタスクを作らないため読み取りません。
recordInfo は各タスクの retention を返します。createTask レスポンス自体には含まれないため、作成後に確認してください。
{
"retention": {
"outputsExpireAt": "2026-09-13T12:00:00Z",
"promptsExpireAt": "2026-09-13T12:00:00Z",
"source": "header"
}
}source は、決定した層を示します。header はこのリクエスト、account はアカウント設定、platform は上限です。ヘッダーを送っても account が返る場合は、アカウント設定が指定よりすでに短かったことを意味します。
タスク完了前の outputsExpireAt は受理時刻から計算します。最終状態になると、同じ期間を完了時刻から計算し直します。そのため、期限は後ろに動くことはあっても前には動きません。自分で再計算せず、レスポンスの日時を使ってください。3 層の最小値は想定どおりとは限りません。自分で破棄する場合を除き、この時刻より前に削除し得るのは、上記の遡及するアカウント設定だけです。
任意のタイミングで破棄:POST /jobs/purge
期限まで待ちたくない場合は、次の操作を使います。
- コンソールでは ログでタスクを開き、生成結果を破棄 を選びます。以下のエンドポイントと同じ操作です。
- 同じタスクの 履歴から削除 もプロンプトと結果を消去し、メディア削除を予約します。さらにログからタスクを非表示にします。タスクが終了し、課金が精算済みになってから利用できます。
どちらも請求額を変えず、タスクをキャンセルする操作でもありません。コードからは次を使います。
curl -X POST https://api.spicyapi.ai/api/v1/jobs/purge \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
--data '{"taskId": "job_01k..."}'| 削除するもの | 保持するもの |
|---|---|
| 生成ファイルのオブジェクト自体 | 台帳記録と金額 |
結果ペイロード(output) | タスク状態と日時 |
プロンプトと input 内のテキスト | モデル識別子と request_id |
レスポンス:
{
"taskId": "job_01k...",
"contentState": "purged",
"purgedAt": "2026-09-13T12:00:00Z",
"contentRemovedBy": "user",
"billingRetained": true,
"mediaDeletionPending": true
}次の規則があります。
- 最終状態のタスクのみ(
succeeded/failed/canceled/expired)。実行中は終了まで待ちます。生成ファイルがまだ揃っておらず、一部だけ削除する方が問題を生むためです。生成タスクは受理後にキャンセルできないため、「先にキャンセルしてから破棄」の手順はありません。 - 冪等で、
Idempotency-Keyは不要です。taskId単位で冪等なため、破棄済みタスクへの再呼び出しも 200 を返します。purgedAtはこの呼び出しではなく最初の破棄の時刻です。タイムアウト後も安全に再試行できます。 - レスポンスは「予約済み」であり「削除完了」ではありません。
mediaDeletionPendingが true の間は、contentStateはすでにpurgedでも、バックグラウンド処理がまだオブジェクトを削除していません。通常は 1 分以内に完了します。同期削除では 1 つの削除しにくいオブジェクトがリクエスト全体を止めてしまうため、明確な応答が必要なこの操作では避けています。 - まだ
presentのレスポンスは、今回何も削除しなかったことを意味します。例えばタスクに保存措置が適用されている場合です。後で再試行できますが、具体的な理由は意図的に公開しません。 billingRetainedは常にtrueです。 冗長に見えても、呼び出し側が誤解しやすい点なので明示しています。詳細は以下です。
破棄はキャンセルでも返金でもありません
purge は内容だけを対象とし、課金は一切変えません。
- 精算済みの請求はそのままです。生成ファイルを破棄しても料金は戻りません。
- 失敗・期限切れによってすでに解放された仮押さえはそのままで、破棄によってもう一度解放することはありません。
- 課金ページには引き続き、金額、日時、モデルを伴う請求が表示されます。
これは意図的な設計です。 台帳は双方の取引証拠として 10 年保持します。内容はユーザーのもので、依頼により削除できます。同じものの両側ではなく、異なる種類のデータです。
破棄するのは内容であり、支出の記録ではありません。
contentState:内容の有無と削除した主体
タスク詳細の contentState には 3 つの値があります。
| 値 | 意味 | 表示される場合 |
|---|---|---|
present | 内容が残っている | 通常の状態。このフィールド導入前の古いタスクもこう扱う |
expired | 期限切れで自動削除した | 有効な保持期間が過ぎ、清掃処理が実行された |
purged | ユーザーが破棄した | jobs/purge を呼んだ、または 生成結果を破棄 を選んだ |
後の 2 つには、purgedAt(内容がなくなった時刻)と contentRemovedBy(清掃処理は system、ユーザーは user)も付きます。
`expired` は 2 か所で異なる意味を持ちます
- タスク状態の
expired:生成がタイムアウトし、何も生成しなかった。 contentStateのexpired:生成したものが、後で保持設定に従って削除された。
英語の単語は同じですが、自分の画面で 1 つの「期限切れ」ラベルにすると、無関係な 2 状況を混同します。前者は再試行が必要で、後者は何度再試行してもその結果は戻りません。
purged を「期限切れ」と表示するのも逆の意味で不正確です。一方はユーザーが押したボタン、もう一方は予定どおりのポリシー実行です。逆に説明すると、プラットフォームがファイルを紛失したと受け取られてしまいます。
期限切れで消すのはフィールドであり、行ではありません
文の前半だけでは誤解を招きます
保持期限が終わると内容は消去します。内容を含まない課金・状態の記録は無期限に保持します。
前半だけでも事実ですが、なくなるのは input と output の中身であってタスク記録ではないため、それだけでは誤解を残します。
清掃の対象は input、output、コールバック URL、関連イベント・コールバック内容です。タスクの行自体は無期限に保持します。課金紛争の唯一の証拠であり、消すと会計記録が成立しなくなるためです。内容の削除後は、タスク ID、モデル、状態、金額、日時、作成元キーといった数百バイトのメタデータになります。任意の破棄も同じ規則で、違うのは時期だけです。
内容がなくなった後も、次の違いがあります。
- 「今月いくら請求されたか、どのタスクが失敗したか、どのキーが送信したか」は確認できます。
- 「どんなプロンプトを送ったか、生成ファイルのオブジェクトキーは何か」は確認できません。その時点から
recordInfoはinputとoutputを返しません。
より長くプロンプトを残す場合は、自分のコピーを保存してください。有効な保存措置がある間は該当データの削除を停止し、任意の破棄もブロックします。どちらも物理削除済みの出力を復元することはできません。
残高履歴とタスク内容は別です
期限切れでも任意の破棄でも、タスクの input と output の消去は、入金、仮押さえ、精算、仮押さえの返却、手動調整を変えません。コンソールの課金ページで引き続き照合できます。課金台帳は 10 年の保持ポリシーに従い、タスク内容の期限切れ・破棄に合わせて削除しません。
アクセス・削除請求の対象に、紛争、セキュリティ調査、適用法により保持が必要なデータが含まれる場合は、回答で範囲と理由を説明します。
できないことが 2 つあります
1. リクエストを実行するモデルには、必ず平文のプロンプトが渡ります
選択したモデルが生成を行うため、プロンプトは平文でそのモデルに届く必要があります。これは構造上の制約で設定ではなく、保持を 1 時間にしても変わりません。そのため、保持期間で約束できるのはSpicyAPI 自体が保持する期間だけです。
モデルへ届いた後のプロンプトの扱いは、SpicyAPI の保持設定では制御できません。用途上これが重要な場合は、機密素材を送信する前に相談してください。
2. 「即座に削除」は保証できません
最終保護となるライフサイクル規則には最大 24 時間の実行枠があり、データベースのバックアップは 35 日で更新します。世界中から即座に消えるという説明は正しくありません。約束できるのは完了までにかかる時間であり、瞬時の完了ではありません。そのため、破棄エンドポイントも「削除済み」ではなく「予約済み」と返します。
例外:法的な保存措置
紛争、フォレンジック調査の要請、法定報告義務に関係するタスクには保存措置を適用し、解除するまで保持期間の進行を停止します。有効な間は任意の破棄も実行しません。
これは上記のすべての期間と設定に優先します。密かに留保した抜け道ではありません。この仕組みがなければ、最初の法的要請だけで保持の約束を破る必要が生じ、文書に 14 日と書いた理由を説明しなければなりません。必要な条件なのでここに明記しています。
ユーザーが選べること
- それぞれを実際に必要な期間に設定します。 別々の設定なので、プロンプトを短くしたいだけでアップロードを「タスク終了時に削除」にしないでください。
- 短縮前にダウンロードします。 短い設定は実行済みタスクにも遡って影響し得ます。設定変更の影響を参照してください。
- 機密性の高い単発リクエストには
X-Spicy-Retentionを使います。 1 回の生成のためにアカウント全体を変更する必要はありません。 - 不要な情報を送信しません。 参照画像とプロンプトは特に機密性が高く、内容をユーザーが選ぶ 2 つの項目です。
- 生成ファイルは自分で保管します。 最長でも約 14 日、短編映画のメディアは約 60 日で、設定を短縮すればさらに短くなります。
- アカウントデータをコピーします。 データ保護ページの 自分のデータをダウンロード は、プロフィール、チームのロール、API キーの詳細(秘密キーは含まない)、保持中のタスクデータ、課金記録を JSON で取得できます。メディアファイルは含まれないため、必要な結果は別途ダウンロードしてください。
- ダウンロード URL をデータベースへ保存しません。 20 分で期限切れになり、発行後は取り消せません。必要な時に署名を発行します。メディアを参照してください。
- コールバック URL は HTTPS にします。 ペイロードにはタスク状態と生成ファイルの参照があり、平文 HTTP では通信経路上の第三者に渡ってしまいます。
ユーザーの内容を学習には使いません
プロンプト、参照画像、生成ファイルは学習データに入りません。
この文の範囲はSpicyAPI 自身です。各モデルのポリシーは SpicyAPI が決めるものではありません。上記の最初の点を参照してください。

