# メッシュパーツの完成

> **POST** `/v3/mesh/complete`

セグメント化されたメッシュ パーツを完成させ、欠落している領域を修復します。

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

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

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

### リクエストボディ

| パラメータ | 種類 | 必須 | デフォルト | 説明 |
| :-: | :-: | :-: | :-: | :-: |
| input | 文字列 | はい | — | `task_` で始まる `mesh/segment` タスクの task_id |
| model | 文字列 | いいえ | `v1.0-20250506` | 完成モデルバージョン（現在の唯一のバージョン） |
| part_names | 文字列[] | いいえ | すべての部品 | 完成させるパーツ名のリスト。省略した場合はすべての部分が完了します |
| completion_mode | 文字列 | いいえ | `ai_completion` | 完成モード：`ai_completion`（AI 拡散ベースの完成、デフォルト）または `quick_cap`（AI 生成なしの迅速な穴埋め） |

## リクエスト例

### AI 完成（デフォルト）

#### curl

```bash
curl -X POST https://openapi.tripo3d.ai/v3/mesh/complete \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {api_key}" \
  -d '{
    "input": "task_abc123",
    "part_names": ["head", "body"]
  }'
```

### Python

```python
import requests

url = "https://openapi.tripo3d.ai/v3/mesh/complete"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
}
payload = {
    "input": "task_abc123",
    "part_names": ["head", "body"]
}

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

### JavaScript

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

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
  },
  body: JSON.stringify({
    input: "task_abc123",
    part_names: ["head", "body"]
  })
});

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

### クイックキャップ

#### curl

```bash
curl -X POST https://openapi.tripo3d.ai/v3/mesh/complete \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {api_key}" \
  -d '{
    "input": "task_abc123",
    "completion_mode": "quick_cap"
  }'
```

#### Python

```python
payload = {
    "input": "task_abc123",
    "completion_mode": "quick_cap"
}
```

#### JavaScript

```javascript
body: JSON.stringify({
  input: "task_abc123",
  completion_mode: "quick_cap"
})
```

## 応答

### 成功した応答

```json
{
  "code": 0,
  "data": {
    "task_id": "task_def456"
  }
}
```

### 応答フィールド

| パラメータ | 種類 | 説明 |
| :-: | :-: | :-: |
| code | 整数 | ステータスコード。 `0` は成功を示します |
| data.task_id | 文字列 | 完了の進行状況と結果をポーリングするために使用される一意のタスク識別子 |

## エラーコード

| HTTP ステータスコード | エラーコード | 説明 | おすすめ |
| :-: | :-: | :-: | :-: |
| 429 | 2000 | 世代制限を超えました | リクエスト率を下げて後で再試行してください |
| 400 | 2002 | サポートされていないリクエストパラメータです | リクエストボディのパラメータ名と値の範囲を確認してください |
| 400 | 2006 | 入力ソースのタスクタイプが無効です | task_id が `mesh/segment` タスクに対応していることを確認します |
| 400 | 2007 | ソースタスクのステータスが成功ではありません | ソースタスクが完了するまで待ってから完了を開始します |
| 403 | 2010 | クレジットが不十分です | クレジットをリチャージして再試行してください |
