# Guide de migration de v2 vers v3

Ce document vous aide à migrer le code existant de Tripo API v2 vers v3.

## Passez de V2 à V3 avec le Skill

Vous n'avez pas besoin de comprendre d'abord toutes les différences entre les API. Téléchargez ce Skill, placez le fichier dans le dossier du projet à migrer, puis demandez à votre outil de programmation assistée par IA de l'utiliser. Il vous aidera à repérer les appels V2 dans votre projet et à les migrer vers V3 étape par étape.

### Étape 1 : Téléchargez le Skill

<a class="plugin-download-button" href="/assets/developer/tripo-v2-to-v3-migration/SKILL.md" download="SKILL.md">Télécharger</a>

Vous obtiendrez un fichier nommé `SKILL.md`. Conservez ce nom de fichier sans le modifier.

### Étape 2 : Placez le Skill dans le dossier du projet et utilisez-le

Placez le fichier `SKILL.md` téléchargé dans le dossier du projet à migrer. Ouvrez ensuite ce projet et demandez directement à l'IA d'utiliser ce Skill.

### Étape 3 : Copiez ce message pour commencer la migration

Ouvrez le projet que vous souhaitez migrer. Copiez l'intégralité du message ci-dessous et envoyez-le à votre outil de programmation assistée par IA :

```text
Utilisez le fichier `SKILL.md` présent dans le dossier du projet pour migrer l'intégration de l'API Tripo de ce projet de V2 vers V3. Montrez-moi d'abord ce qui doit changer. Attendez ma confirmation, puis effectuez les modifications. Enfin, suivez la liste de contrôle incluse dans le fichier pour vérifier que rien n'a été oublié.
```

L'outil repérera d'abord les appels V2 et vous présentera un plan, afin que vous n'ayez pas à parcourir vous-même chaque fichier.

## Changements majeurs

### 1. Changement de base URL

```
# v2
https://api.tripo3d.ai/v2/openapi/

# v3
https://openapi.tripo3d.ai/v3/
```

### 2. Point de terminaison universel divisé en points de terminaison dédiés

v2 utilise un seul point de terminaison `POST /v2/openapi/task` et un champ `type` pour distinguer les types de tâches. v3 fournit un point de terminaison dédié pour chaque fonctionnalité, le champ `type` n'est donc plus requis.

```json
// v2
POST /v2/openapi/task
{ "type": "text_to_model", "prompt": "a cat" }

// v3
POST /v3/generation/text-to-model
{ "prompt": "a cat" }
```

### 3. Entrées de fichier unifiées en tant que champ `input`

Dans v2, différents noms de champ sont utilisés en fonction de la source d'entrée, tels que `file`, `file_token`, `url` et `object`. Dans v3, ils sont unifiés sous le champ `input` et le système déduit automatiquement le type d'entrée.

```json
// v2 - different field names are required
{ "type": "refine_model", "draft_model_task_id": "task_abc123" }
{ "type": "convert_model", "original_model_task_id": "task_abc123" }

// v3 - use input consistently
{ "input": "task_abc123" }
{ "input": "https://example.com/model.glb" }
{ "input": "file_token_abc123" }
```

### 4. Noms de champs standardisés

| Champ v2 | Champ v3 |
| :-: | :-: |
| `create_time` | `created_at` |
| `consumed_credit` | `credits_consumed` |

### 5. Fractionnement texte-image et image-image

Dans v2, le texte vers image et l'image vers image partagent le même API. Dans v3, ils sont divisés en points de terminaison dédiés :

- `POST /v3/generation/text-to-image` - Générer une image à partir d'une saisie de texte uniquement
- `POST /v3/generation/image-to-image` - Générer ou modifier une image basée sur une image de référence

## Mappage des points de terminaison

### Génération

| Type v2 Valeur | Point de terminaison v3 |
| :-: | :-: |
| `text_to_model` | `POST /v3/generation/text-to-model` |
| `image_to_model` | `POST /v3/generation/image-to-model` |
| `multiview_to_model` | `POST /v3/generation/multiview-to-model` |
| `text_to_image` | `POST /v3/generation/text-to-image` |
| `generate_image` | `POST /v3/generation/image-to-image` |
| `generate_multiview_image` | `POST /v3/generation/image-to-multiview` |
| `edit_multiview_image` | `POST /v3/generation/edit-multiview` |

### Traitement du modèle

| Type v2 Valeur | Point de terminaison v3 |
| :-: | :-: |
| `refine_model` | `POST /v3/models/refine` |
| `convert_model` | `POST /v3/models/convert` |
| `import_model` | `POST /v3/models/import` |
| `stylize_model` | `POST /v3/models/stylize` |
| `texture_model` | `POST /v3/models/texture` |

### Animations

| Type v2 Valeur | Point de terminaison v3 |
| :-: | :-: |
| `animate_prerigcheck` | `POST /v3/animations/rig-check` |
| `animate_rig` | `POST /v3/animations/rig` |
| `animate_retarget` | `POST /v3/animations/retarget` |

### Édition de maillage

| Type v2 Valeur | Point de terminaison v3 |
| :-: | :-: |
| `mesh_segmentation` | `POST /v3/mesh/segment` |
| `mesh_completion` | `POST /v3/mesh/complete` |
| `highpoly_to_lowpoly` | `POST /v3/mesh/decimate` |

### Tâches et fichiers

| Point de terminaison v2 | Point de terminaison v3 |
| :-: | :-: |
| `GET /v2/openapi/task/{task_id}` | `GET /v3/tasks/{task_id}` |
| `POST /v2/openapi/upload` | `POST /v3/files` |

## Étapes de migration

### Étape 1 : Mettre à jour la base URL

```python
# v2
BASE_URL = "https://api.tripo3d.ai/v2/openapi"

# v3
BASE_URL = "https://openapi.tripo3d.ai/v3"
```

### Étape 2 : Remplacer les points de terminaison à l'aide de la table de mappage

```python
# v2
response = requests.post(f"{BASE_URL}/task", json={
    "type": "text_to_model",
    "prompt": "a cat"
})

# v3
response = requests.post(f"{BASE_URL}/generation/text-to-model", json={
    "prompt": "a cat"
})
```

### Étape 3 : Supprimez le champ `type`

Dans v3, le chemin du point de terminaison implique déjà le type de tâche, le corps de la demande n'a donc plus besoin du champ `type`.

### Étape 4 : Remplacer les champs de saisie par `input`

```python
# v2 - different task types use different field names
payload = {"type": "refine_model", "draft_model_task_id": "task_abc123"}
payload = {"type": "convert_model", "original_model_task_id": "task_abc123"}

# v3 - use input consistently
payload = {"input": "task_abc123"}
```

### Étape 5 : Mettre à jour les noms des champs de réponse

```python
# v2
created = task["create_time"]
cost = task["consumed_credit"]

# v3
created = task["created_at"]
cost = task["credits_consumed"]
```

### Étape 6 : tester et valider

1. Remplacez et testez chaque point de terminaison un par un
2. Vérifiez que la création de tâches et l'interrogation fonctionnent correctement
3. Confirmez que les liens de téléchargement sont disponibles
4. Vérifiez que les requêtes de déduction de crédit et de solde fonctionnent correctement

## Remarques

- v2 et v3 peuvent fonctionner en parallèle. Nous vous recommandons de migrer progressivement plutôt que de tout changer d'un coup.
- Les API Keys sont partagés entre v2 et v3. Vous n'avez pas besoin de créer de nouvelles clés
- Le format de la tâche ID reste inchangé. Les tâches créées dans v2 peuvent être interrogées dans v3
