# ファイルの用途 (purpose)

Source: https://aiand-docs-staging.pages.dev/ja/api/file-purposes/

アップロードされた各ファイルには `purpose` (用途) が付与されます。これはファイルがどのように使われるか、参照に必要なモデル capability は何かを表すラベルです。

## サポートする purpose

| Purpose | MIME | シングルショット上限 | 使えるモデル |
|---------|------|----------------------|--------------|
| `vision` | `image/png`、`image/jpeg`、`image/webp`、`image/gif` | 100 MiB | ビジョン対応モデル — [ビジョン](/ja/capabilities/vision/) |
| `video` | `video/mp4`、`video/webm`、`video/quicktime` | [Uploads API](/ja/api/uploads/) を利用 (8 GiB) | 動画対応モデル — [動画理解](/ja/capabilities/video/) |

動画生成は GIF を受け付けません。[`/v1/videos`](/ja/api/videos/) のフレームと参照画像は PNG、JPEG、WebP のいずれかである必要があります（`vision` はチャット用に `image/gif` も受け付けます）。

## MIME からの推論

アップロード時、`purpose` フィールドは **省略可能** です。省略するとファイルの MIME から ai& が自動推論します。これにより purpose フィールドを持たない公式 `anthropic` SDK でもそのまま動作します。

```bash
curl https://api.aiand.com/v1/files \
  -H "Authorization: Bearer sk-..." \
  -F "file=@cat.png"
# 推論結果の purpose: "vision"
```

## リクエスト時の capability ゲート

チャットメッセージ中で `file_id` を参照する場合、ファイルの purpose は対象モデルが宣言する capability と一致する必要があります:

- `purpose: "vision"` → モデルに `vision` capability が必要。
- `purpose: "video"` → モデルに `video` capability が必要。

一致しないリクエストは、モデルを呼び出すことなく `400 invalid_request_error` を返します。

<Aside type="note">
  将来的に追加の purpose (例: `audio`、`assistants`、`batch`) が追加される可能性があります。未サポートの purpose を渡すと、アップロードエンドポイントは明確なエラーメッセージとともに 400 を返します。
</Aside>
