# ファイル

画像、動画、音声を受け付けるモデルは、3つの形式のいずれでも入力できます。各モデルページには、ファイルの
パラメータ（例: `image`、`images`、`videos`、`audios`）が記載されています。

## 1. 公開URL

モデルがダウンロードできる任意の `https://`（または `http://`）URL:

```json
{ "image": "https://example.com/photos/product.jpg" }
```

ファイルにはCookieやログインなしでアクセスでき、リクエストが開始されるまでアクセス可能な状態を維持する必要があります。各モデル
ページには、ファイルのパラメータのサイズおよび寸法の制限が記載されています。

## 2. data URI

小さなファイルは、最大10 MBの `data:` URIとしてインラインで指定できます:

```json
{ "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }
```

Base64を使用すると本文がファイルより約3分の1大きくなるため、大きなファイルにはアップロードを使用してください。

## 3. アップロード

ローカルのファイルの場合は、アップロードURLを取得し、そこにバイト列を `PUT` して、返された `file_url` をモデルに渡します。
アップロードURLの作成は無料です。

```bash 1 · アップロードURLを取得
curl -X POST "https://api.doitong.com/v1/files" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "product.jpg", "content_type": "image/jpeg", "size": 482113}'
```

```json 201 Created · アップロード
{
  "object": "upload",
  "upload_url": "https://…signed upload URL…",
  "file_url": "https://content.doitong.com/…/product.jpg",
  "method": "PUT",
  "headers": { "Content-Type": "image/jpeg" },
  "content_type": "image/jpeg",
  "expires_in": 3600,
  "max_bytes": 15728640
}
```

```bash 2 · 返されたヘッダーをそのまま使ってバイト列をアップロード
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · file_url をモデルの入力として使用
curl -X POST "https://api.doitong.com/v1/run/{model_id}?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image": "https://content.doitong.com/…/product.jpg", "prompt": "..."}'
```

- 対応するアップロード: `.jpg`、`.jpeg`、`.png`、`.webp`（最大15 MB）、`.mp4`、`.mov`、`.webm`（最大200 MB）。
  拡張子によって種類が設定されるため、`content_type` は拡張子と一致している必要があります。
- アップロードURLの有効期限は1時間です。`file_url` は有効なままです。
- 音声には、公開URLまたはdata URIを使用してください。

## 出力ファイル

> [!TIP]
> 生成されたファイルは当社のストレージにコピーされ、`outputs[].url` に `content.doitong.com` 上のリンクとして返されます。これらをそのまま別のモデルに
> 渡すことができます。たとえば、テキストから画像を生成するモデルの画像を、画像から動画を生成するモデルに渡せます。

出力ファイルを保持する期間を選択できます:

- **永久**（`permanent`、デフォルト）: 削除するまで、1 GBあたり月 100 APIクレジット
  （$0.10）。料金はAPIの残高から1日1回請求されます（1 GB = 1024³ bytes）。
- **7日間**（`temporary`）: 無料。その後、当社のストレージから削除されます。

[ダッシュボード](https://doitong.com/developers/dashboard#balance)の「ファイルを永久保存」スイッチまたは
`PATCH /account/storage` でデフォルトを設定し、`?storage=temporary`（または `permanent`）で実行ごとに上書きできます:

```bash
curl -X PATCH "https://api.doitong.com/v1/account/storage" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode": "temporary"}'
```

各リクエストには、そのリクエスト固有の `storage`（`mode`、`bytes`、`expires_at`、`expired`）が表示されます。この設定は新しいリクエストに適用されます。
すでに永久に保持しているファイルは、`DELETE /requests/{id}/files` で削除するまで保持されます（[リクエスト](https://doitong.com/developers/docs/requests#delete-files)を参照）。APIの残高でストレージ料金を支払えない場合は、メールが届き、保持中のファイルが一時的なものになる前に 30日間チャージする猶予があります。
