# ファイル管理

## ファイルをアップロードする

> **POST** `/v3/files`

ファイルを Tripo プラットフォームにアップロードし、後続の API 呼び出し用に file_token を取得します。

### リクエストパラメータ

#### リクエストヘッダー

| パラメータ | 種類 | 必須 | デフォルト | 説明 |
| :-: | :-: | :-: | :-: | :-: |
| Content-Type | 文字列 | はい | — | `multipart/form-data` |
| Authorization | 文字列 | はい | — | `Bearer {api_key}` |

#### リクエストボディ (multipart/form-data)

| パラメータ | 種類 | 必須 | デフォルト | 説明 |
| :-: | :-: | :-: | :-: | :-: |
| file | バイナリ | はい | — | ファイルデータ。画像は JPEGXXQPH1QXZ、最大 20 個の MB をサポートします。モデルは GLBZZQPH4QXZ、最大 150 MB をサポートします |

#### リクエスト例

##### curl

```bash
curl -X POST https://openapi.tripo3d.ai/v3/files \
  -H "Authorization: Bearer {api_key}" \
  -F "file=@/path/to/model.glb"
```

##### Python

```python
import requests

url = "https://openapi.tripo3d.ai/v3/files"
headers = {
    "Authorization": "Bearer {api_key}"
}
files = {
    "file": open("/path/to/model.glb", "rb")
}

response = requests.post(url, headers=headers, files=files)
print(response.json())
```

##### JavaScript

```javascript
const url = "https://openapi.tripo3d.ai/v3/files";

const formData = new FormData();
formData.append("file", fileBlob, "model.glb");

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Authorization": "Bearer {api_key}"
  },
  body: formData
});

const data = await response.json();
console.log(data);
```

### 応答

#### 成功した応答

```json
{
  "code": 0,
  "data": {
    "file_token": "file_abc123"
  }
}
```

#### 応答フィールド

| パラメータ | 種類 | 説明 |
| :-: | :-: | :-: |
| code | 整数 | ステータスコード。 `0` は成功を示します |
| data.file_token | 文字列 | 後続の API 呼び出しに使用される一意のファイル識別子 |

---

## アップロード認証情報の取得

> **POST** `/v3/files/upload-credentials`

大きなファイルをクライアントからクラウド ストレージに直接アップロードするための直接アップロード認証情報 (STS) を取得します。

### リクエストパラメータ

#### リクエストヘッダー

| パラメータ | 種類 | 必須 | デフォルト | 説明 |
| :-: | :-: | :-: | :-: | :-: |
| Content-Type | 文字列 | はい | — | `application/json` |
| Authorization | 文字列 | はい | — | `Bearer {api_key}` |

#### リクエスト例

##### curl

```bash
curl -X POST https://openapi.tripo3d.ai/v3/files/upload-credentials \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {api_key}"
```

##### Python

```python
import requests

url = "https://openapi.tripo3d.ai/v3/files/upload-credentials"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
}

response = requests.post(url, headers=headers)
print(response.json())
```

##### JavaScript

```javascript
const url = "https://openapi.tripo3d.ai/v3/files/upload-credentials";

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
  }
});

const data = await response.json();
console.log(data);
```

### 応答

#### 成功した応答

```json
{
  "code": 0,
  "data": {
    "file_token": "file_abc123",
    "upload_url": "https://storage.example.com/upload/...",
    "expires_at": "2025-01-01T01:00:00Z"
  }
}
```

#### 応答フィールド

| パラメータ | 種類 | 説明 |
| :-: | :-: | :-: |
| code | 整数 | ステータスコード。 `0` は成功を示します |
| data.file_token | 文字列 | 一意のファイル識別子 |
| data.upload_url | 文字列 | 署名付きアップロード URL。クライアントは PUT を使用してファイルを直接アップロードします。 |
| data.expires_at | 文字列 | 資格情報の有効期限 (ISO 8601) |
