Démarrage rapide
Commencez par créer votre clé API
Chaque requête de ce guide en nécessite une. Créer une clé ne prend que quelques secondes.
Créer votre clé APIQuatre étapes pour obtenir votre premier modèle 3D, en utilisant l'API REST de Meshy.
Vous utilisez un assistant de codage IA ? Consultez notre page Intégration IA — installez le MCP server Meshy pour un accès par appel d'outils depuis Claude Code, Cursor, Windsurf et d'autres outils compatibles MCP, ou pointez un agent de chat simple vers llms.txt.
1Obtenez votre clé API
Créez une clé API depuis la page API Keys dans la Developer Platform — vous ne pourrez plus la consulter après cet écran, alors conservez-la en lieu sûr. Chaque requête s'authentifie avec un jeton Bearer dans l'en-tête Authorization — voir Authentification.
La création et la gestion des clés API nécessitent un abonnement payant. Les comptes gratuits disposent d'une clé intégrée dédiée pour tester dans le Playground, mais ne peuvent pas créer ou gérer leurs propres clés.

Conseil de sécurité : évitez de coller votre clé directement dans des scripts — stockez-la plutôt en tant que variable d'environnement : export MESHY_API_KEY="msy_...".
2Effectuez votre première requête Image en 3D
Exportez votre clé, puis créez votre première tâche avec Image en 3D. Vous travaillez à partir d'un prompt textuel ou de plusieurs photos à la place ? Consultez Texte en 3D ou Multi-image en 3D.
Export your key
export MESHY_API_KEY="<your-api-key>"
Exécutez ceci dans votre terminal (Terminal sur macOS, Command Prompt ou PowerShell sur Windows) — pas dans un navigateur.
Chaque exemple ci-dessous utilise cette photo — remplacez-la par votre propre image_url pour essayer autre chose.

Request
curl https://api.meshy.ai/openapi/v1/image-to-3d \
-X POST \
-H "Authorization: Bearer ${MESHY_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://docs.meshy.ai/images/api/quick-start/source-photo.webp"
}'
3Vérifiez le statut de la tâche
Les requêtes renvoient immédiatement un ID de tâche. Interrogez le même point de terminaison jusqu'à ce que status soit SUCCEEDED — remplacez <task_id> ci-dessous par l'ID renvoyé à l'étape 2.
Request
curl https://api.meshy.ai/openapi/v1/image-to-3d/<task_id> \
-H "Authorization: Bearer ${MESHY_API_KEY}"
Response — SUCCEEDED
{
"id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"status": "SUCCEEDED",
"progress": 100,
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.fbx?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/preview.png?Expires=***",
"task_error": {
"message": ""
}
}
Le polling n'est pas votre style préféré ? Utilisez le streaming SSE ou un webhook pour être notifié dès qu'une tâche se termine.
4Téléchargez votre modèle
Récupérez le modèle depuis model_urls dans la réponse ci-dessus. Chaque format (GLB, FBX, OBJ, USDZ, STL) est une URL signée et à durée limitée — ou passez-vous de la ligne de commande et collez directement l'URL dans la barre d'adresse de votre navigateur pour le télécharger.
Download
curl -L "<model_urls.glb from the response above>" -o model.glb

Les fichiers sont conservés pendant 3 jours sur les abonnements non-Entreprise — voir Conservation des ressources.
Tout rassembler
Vous préférez un seul script qui fait tout : créer, interroger, télécharger ?
Full script
import axios from 'axios';
import fs from 'fs';
const headers = { Authorization: `Bearer ${process.env.MESHY_API_KEY}` };
const imageUrl = 'https://docs.meshy.ai/images/api/quick-start/source-photo.webp';
// 1. Create the task
const { data: created } = await axios.post(
'https://api.meshy.ai/openapi/v1/image-to-3d',
{ image_url: imageUrl },
{ headers },
);
const taskId = created.result;
// 2. Poll until it finishes
let task;
while (true) {
const { data, headers: resHeaders } = await axios.get(`https://api.meshy.ai/openapi/v1/image-to-3d/${taskId}`, { headers });
task = data;
if (task.status === 'SUCCEEDED' || task.status === 'FAILED') break;
const waitSeconds = Number(resHeaders['retry-after']) || 5;
await new Promise((resolve) => setTimeout(resolve, waitSeconds * 1000));
}
// 3. Download the result (only if the task succeeded)
if (task.status !== 'SUCCEEDED') {
throw new Error(`Task ${task.status}: ${task.task_error?.message || 'unknown error'}`);
}
const { data: model } = await axios.get(task.model_urls.glb, { responseType: 'arraybuffer' });
fs.writeFileSync('model.glb', model);
console.log('Saved model.glb');
Explorer les workflows courants
Personnage prêt pour le jeu
Riggez un maillage humanoïde avec un squelette afin qu'il soit prêt à être animé dans Unity ou Unreal.
Learn more →Ressource lowpoly
Définissez model_type sur smart-topology dans Image en 3D pour obtenir un maillage propre, prêt pour le jeu.
Modèle pour impression 3D
Convertissez un modèle terminé en fichier 3MF multicolore, prêt à être tranché et imprimé.
Learn more →Étapes suivantes
- Vous préférez une interface utilisateur ? Ouvrez la Developer Platform — exécutez des requêtes dans le Playground, suivez l'utilisation et les journaux de requêtes, et gérez vos webhooks.
- Parcourez la référence API complète pour chaque point de terminaison.
- Consultez Tarification, Limites de débit et Erreurs avant de passer en production.
- Suivez le journal des modifications pour les mises à jour et corrections de bugs.
- Vous avez des retours ou rencontrez des problèmes ? Rejoignez notre communauté Discord — nous serions ravis d'avoir de vos nouvelles !