データ保持
生成されたメディアとリクエスト記録の保存期間を制御する — リクエストごとに、2 つの独立したヘッダーで
概要
非同期生成では、次の 2 つが別々に作成されます:
- 生成されたメディア — Atlas Cloud がホストし、出力 URL として返す画像・動画・音声ファイル。
- リクエスト記録 — タスクのメタデータ。モデル、プロンプトとパラメーター、ステータス、タイムスタンプ、出力 URL などです。タスクをポーリングするときに 予測 エンドポイントが読み取るのがこの記録です。
それぞれの保存期間は、2 つのヘッダーで リクエストごとに 設定できます:
| ヘッダー | 範囲 | 制御対象 |
|---|---|---|
X-AtlasCloud-Object-Expiration-Hours | 1〜336 | 生成されたメディアファイル を保存する期間。 |
X-AtlasCloud-Request-Retention-Hours | 0〜336 | リクエスト記録 を保持する期間。 |
どちらも任意で、時間単位の整数で指定します。336 時間は 14 日です。
2 つの設定は互いに独立しています
記録を削除してもメディアは削除され ません。またメディアを削除しても記録は削除され ません。どちらか一方だけ、両方、あるいはどちらも設定しないことができ、それぞれが独自の時計に従います。
クイックスタート
通常の送信リクエストにヘッダーを付けて送ります:
curl -X POST https://api.atlascloud.ai/api/v1/model/generateImage \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-H "X-AtlasCloud-Object-Expiration-Hours: 24" \
-H "X-AtlasCloud-Request-Retention-Hours: 0" \
-d '{
"model": "bytedance/seedream-v5.0-pro/text-to-image",
"prompt": "A calico kitten chasing a butterfly in a garden"
}'import requests
response = requests.post(
"https://api.atlascloud.ai/api/v1/model/generateImage",
headers={
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json",
# 生成された画像を 24 時間後に削除する
"X-AtlasCloud-Object-Expiration-Hours": "24",
# タスクが完了したらすぐにリクエスト記録を破棄する
"X-AtlasCloud-Request-Retention-Hours": "0",
},
json={
"model": "bytedance/seedream-v5.0-pro/text-to-image",
"prompt": "A calico kitten chasing a butterfly in a garden",
},
)
print(response.json()["data"]["id"]) # タスク ID(session_id)const res = await fetch("https://api.atlascloud.ai/api/v1/model/generateImage", {
method: "POST",
headers: {
Authorization: "Bearer your-api-key",
"Content-Type": "application/json",
// 生成された画像を 24 時間後に削除する
"X-AtlasCloud-Object-Expiration-Hours": "24",
// タスクが完了したらすぐにリクエスト記録を破棄する
"X-AtlasCloud-Request-Retention-Hours": "0",
},
body: JSON.stringify({
model: "bytedance/seedream-v5.0-pro/text-to-image",
prompt: "A calico kitten chasing a butterfly in a garden",
}),
});
const { data } = await res.json();
console.log(data.id); // タスク ID(session_id)送信レスポンスは変わりません — タスクの id がすぐに返され、生成も通常どおり実行されます。保持設定が決めるのは、タスクが完了した 後 に何が起きるかだけです。
どちらのヘッダーも、3 つの非同期送信エンドポイントすべてで機能します:
POST /api/v1/model/generateImagePOST /api/v1/model/generateVideoPOST /api/v1/model/generateAudio
X-AtlasCloud-Object-Expiration-Hours
このリクエストが生成したメディアファイル を Atlas Cloud が保存する期間を、タスクの送信時点から数えて設定します。
- 範囲:
1〜336時間(1 時間〜14 日)。 - 省略時のデフォルト: 14 日。
- 最大値がデフォルトと同じであるため、このヘッダーでできるのはメディアの有効期限を 早める ことだけです。14 日を超えて保存期間を延ばすことはできません。
メディアの有効期限が切れると、その出力 URL は機能しなくなります(アクセスすると 404 が返ります)。保持しておきたいものは、それまでにダウンロードまたはコピーしてください。
このヘッダーが対象とするのは、リクエストの 生成された出力 です。入力として お客様が アップロードしたファイル(参照画像、元動画、音声クリップなど)の保持期間は変わりません — それらは標準の ファイルアップロード の保持期間に従います。
X-AtlasCloud-Request-Retention-Hours
リクエスト記録 — 予測 エンドポイントの背後にあるメタデータ行 — を Atlas Cloud が保持する期間を設定します。
- 範囲:
0〜336時間(最長 14 日)。 - 省略時のデフォルト: プラットフォームの標準的な保持ポリシーに従って記録が保持されます。
0は「生成が完了したらすぐに削除する」という意味です — タスクが終了状態(completed、failed、timeout)に達した直後に記録が削除されます。
実行中の記録が削除されることはありません
記録が削除されるのは、タスクが実際に完了し、かつ 課金と Webhook の配信が完了した後だけです。保持期間 0 を指定しても、実行中の生成が中断されたり、コールバックが失われたりすることはありません。
記録が削除されると、GET /api/v1/model/prediction/{id} でそのタスクをポーリングしても結果のペイロードは返らなくなります — 出力、パラメーター、エラーの詳細は失われます。必要なものは記録の期限が切れる前に取得する(または Webhook を利用する)ようにしてください。
記録を削除してもメディアは削除されません。X-AtlasCloud-Request-Retention-Hours: 0 を指定してオブジェクト側のヘッダーを指定しない場合、生成されたファイルは出力 URL 上でフルの 14 日間存在し続けます — ただし Atlas Cloud 側にその記録は残らないため、その URL は自分で保管しておく必要があります。
値の選び方
| 目的 | ヘッダー |
|---|---|
| 何も 1 日を超えて残さない | X-AtlasCloud-Object-Expiration-Hours: 24 + X-AtlasCloud-Request-Retention-Hours: 24 |
| 保存されるメタデータを最小化しつつファイルは残す | X-AtlasCloud-Request-Retention-Hours: 0(出力 URL は自分で保存します) |
| プレビュー用の短命なメディア、履歴は通常どおり | X-AtlasCloud-Object-Expiration-Hours: 1 |
| プラットフォームのデフォルト | どちらのヘッダーも送らない |
検証
どちらのヘッダーも、何かが起きる前に 検証されます — リクエストが課金される前、ファイルが保存される前、そしてモデルプロバイダーが呼び出される前です。値が不正な場合、リクエストは HTTP 400 で拒否され、タスクは作成されず、課金も発生しません。
| ルール | 詳細 |
|---|---|
| 形式 | 時間単位の整数。小数(1.5)、期間表記(24h)、その他のテキストは拒否されます。 |
X-AtlasCloud-Object-Expiration-Hours の範囲 | 1〜336。0 は拒否されます — 最短の保持期間には 1 を使用してください。 |
X-AtlasCloud-Request-Retention-Hours の範囲 | 0〜336。0 は有効で、「完了したら削除する」という意味です。 |
| 省略または空 | 「未設定」として扱われ、デフォルトが適用されます。 |
拒否時の例:
{
"code": 400,
"msg": "invalid X-AtlasCloud-Object-Expiration-Hours header: 500 is out of range [1, 336]"
}ブラウザから API を呼び出す場合、どちらのヘッダー名も CORS ポリシーで許可されているため、クロスオリジンのリクエストでも送信できます。
費用
カスタムの保持設定は 無料 です。保持期間を短くしても、デフォルトのままにしても、生成にかかる費用は変わりません。
ベストプラクティス
- 保持したいものはダウンロードする。 Atlas Cloud のストレージはアーカイブではなく配信バッファと考えてください — 特にオブジェクトの有効期限を短くしている場合はなおさらです。
- Webhook を
X-AtlasCloud-Request-Retention-Hours: 0と組み合わせて使う。 タスクが完了した瞬間にコールバックが結果を届けるため、その後に記録が必要になることはありません。 - 記録の保持期間を短くしつつメディアは残す場合は、出力 URL を自分側で保存する。
- 対象にしたい すべてのリクエストにヘッダーを送る。ヘッダーはリクエスト単位であり、アカウント全体のデフォルト設定はありません。
- 削除された記録の URL に依存しない。 メディアの有効期限が切れるとその URL は
404を返します — 切れたリンクを再試行するのではなく、生成し直してください。
トラブルシューティング
| 症状 | 考えられる原因 / 対処 |
|---|---|
400 ... is not a whole number of hours | 値が単純な整数ではありません。24h や 1.5 ではなく 24 を送ってください。 |
400 ... is out of range [1, 336] | オブジェクトの有効期限は最低 1 時間、最長 14 日である必要があります。 |
400 ... is out of range [0, 336] | リクエスト記録の保持期間は 0 から 14 日の間である必要があります。 |
出力 URL が想定より早く 404 を返す | 設定したオブジェクトの有効期限が経過しています。メディアは削除済みなので、まだ必要なら生成し直してください。 |
| 完了したタスクをポーリングしても出力が返らない | 保持設定によってリクエスト記録が削除されました。Webhook を使うか、保持期間を延ばしてください。 |
| 記録が消えた後もメディアが残っている | 想定どおりです — 2 つの設定は独立しています。ファイルは自身の有効期限まで存在します。 |
リファレンス
- エンドポイント:
POST /api/v1/model/generateImage、POST /api/v1/model/generateVideo、POST /api/v1/model/generateAudio。 X-AtlasCloud-Object-Expiration-Hours: 整数1〜336。生成されたメディアのみが対象。デフォルトは 14 日で、短縮のみ可能。X-AtlasCloud-Request-Retention-Hours: 整数0〜336。リクエスト記録のみが対象。0= 終了して処理が確定したら削除。- 不正な値:
HTTP 400。タスクは作成されず、課金もありません。 - 関連: 予測 · Webhook · ファイルアップロード · データ削除ポリシー