API de Remaillage
L'API de Remaillage vous permet de remailler et d'exporter des modèles 3D existants générés par d'autres API Meshy (comme Image en 3D ou Texte en 3D) dans divers formats. Cette section fournit des détails sur l'utilisation de l'API de Remaillage.
Créer une tâche de remaillage
Ce point de terminaison crée une nouvelle tâche de remaillage.
La tâche s'exécute en arrière-plan. Pour connaître la durée habituelle, consultez Durées de traitement.
Pour la conversion de format et le redimensionnement, utilisez les API dédiées Convert API et Resize API. Les paramètres obsolètes ci-dessous continueront de fonctionner, mais nous recommandons d'utiliser les nouveaux points de terminaison pour les nouvelles intégrations.
Paramètres
Seul l'un des deux paramètres input_task_id ou model_url est requis. Si les deux sont fournis, input_task_id a la priorité.
- Name
- input_task_id
- Type
- string
- Requis
- Description
L'ID de la tâche Image en 3D ou Texte en 3D terminée que vous souhaitez remailler. Cette tâche doit être l'une des suivantes : Texte en 3D Preview, Texte en 3D Refine, Image en 3D ou Retexturisation. De plus, elle doit avoir le statut
SUCCEEDED.
- Name
- model_url
- Type
- string
- Requis
- Description
Veuillez fournir un modèle 3D que Meshy pourra remailler via une URL accessible publiquement ou un Data URI. Formats pris en charge :
.glb,.gltf,.obj,.fbx,.stl.Pour les Data URI, utilisez le MIME type :
application/octet-stream.Taille de fichier maximale : 100 Mo.
- Name
- target_formats
- Type
- string[]
- défaut ["glb"]
- Description
Une liste des formats cibles pour le modèle remaillé. Si omis, seul le GLB est généré.
Valeurs disponibles :
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- défaut triangle
- Description
Spécifie la topology du modèle généré.
Valeurs disponibles :
quad: génère un maillage à dominante de quadrilatères.triangle: génère un maillage de triangles décimé.
- Name
- target_polycount
- Type
- integer
- défaut 30,000
- Description
Spécifie le nombre cible de polygones dans le modèle généré. Le nombre réel de polygones peut s'écarter de la cible en fonction de la complexité de la géométrie.
La plage de valeurs valide varie selon le niveau utilisateur :
- 100 à 300 000 (inclus)
- Name
- decimation_mode
- Type
- integer
- Description
Active la décimation adaptative en définissant un niveau de nombre de polygones. Lorsqu'il est défini,
target_polycountest ignoré.Valeurs disponibles :
1: Adaptatif — nombre de polygones ultra.2: Adaptatif — nombre de polygones élevé.3: Adaptatif — nombre de polygones moyen.4: Adaptatif — nombre de polygones faible.
- Name
- resize_height
- Type
- number
- ⚠ obsolète
- défaut 0
- Description
Redimensionne le modèle à une certaine hauteur mesurée en mètres. Nous recommandons d'utiliser l'API dédiée Resize API à la place.
auto_size,resize_heightetresize_longest_sides'excluent mutuellement.
- Name
- resize_longest_side
- Type
- number
- ⚠ obsolète
- défaut 0
- Description
Redimensionne le modèle de sorte que la plus grande dimension de la boîte englobante soit égale à la valeur spécifiée en mètres. Nous recommandons d'utiliser l'API dédiée Resize API à la place.
auto_size,resize_heightetresize_longest_sides'excluent mutuellement.
- Name
- auto_size
- Type
- boolean
- ⚠ obsolète
- défaut false
- Description
Lorsqu'il est défini sur
true, le service utilise la vision par IA pour estimer automatiquement la hauteur réelle de l'objet et redimensionner le modèle en conséquence. Nous recommandons d'utiliser l'API dédiée Resize API à la place.auto_size,resize_heightetresize_longest_sides'excluent mutuellement.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ obsolète
- défaut bottom
- Description
Position de l'origine. Nous recommandons d'utiliser l'API dédiée Resize API à la place.
Valeurs disponibles :
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ obsolète
- Description
Si
true, le service ne fera que changer le format du fichier modèle d'entrée, en ignorant les autres entrées commetopology,resize_heightettarget_polycount. Nous recommandons d'utiliser l'API dédiée Convert API à la place.target_formatsdoit être fourni siconvert_format_onlyest défini surtrue.
- Name
- alpha_thumbnail
- Type
- boolean
- défaut false
- Description
Lorsqu'il est défini sur
true, la tâche génère en plus une version avec arrière-plan transparent (RGBA) de l'aperçu et la renvoie en tant quealpha_thumbnail_urldans la réponse GET. Le champ existantthumbnail_urlreste inchangé.
Retours
La propriété result de la réponse contient l'id de la tâche de remaillage nouvellement créée.
Modes d'échec
- Name
400 - Bad Request- Description
La requête était inacceptable. Causes courantes :
- Paramètre manquant : soit
model_url, soitinput_task_iddoit être fourni. - Tâche d'entrée invalide :
input_task_iddoit faire référence à une tâche réussie provenant d'un modèle pris en charge. - Format de modèle invalide :
model_urlpointe vers un fichier avec une extension non prise en charge. - URL inaccessible :
model_urln'a pas pu être téléchargé. - Fichier modèle trop volumineux : le fichier
model_urldépasse 100 Mo. - Topology invalide : le paramètre
topologyest invalide. - Paramètres mutuellement exclusifs :
auto_sizeetresize_heightne peuvent pas être définis tous les deux.
- Paramètre manquant : soit
- Name
401 - Unauthorized- Description
L'authentification a échoué. Veuillez vérifier votre clé API.
- Name
402 - Payment Required- Description
Crédits insuffisants pour effectuer cette tâche.
- Name
429 - Too Many Requests- Description
Vous avez dépassé votre limite de débit.
Request
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"resize_height": 1.0,
"origin_at": "bottom"
}'
# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"auto_size": true
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Récupérer une tâche de remaillage
Ce point de terminaison récupère une tâche de remaillage à partir de son ID.
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche de remaillage à récupérer.
Retours
L'objet Tâche de remaillage.
Request
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Supprimer une tâche de remaillage
Ce point de terminaison supprime définitivement une tâche de remaillage, y compris tous les modèles et données associés. Cette action est irréversible.
Paramètres de chemin
- Name
- id
- Type
- path
- Description
L'ID de la tâche de remaillage à supprimer.
État de la tâche
Une tâche encore PENDING est supprimée et les crédits consommés au
moment de la création sont remboursés.
Une tâche déjà IN_PROGRESS ne peut pas être supprimée : la requête est
rejetée avec 409 Conflict et la tâche continue de s'exécuter. Les crédits d'une tâche
que le worker a déjà commencée ne sont pas remboursables, donc la supprimer en cours
d'exécution vous ferait perdre à la fois les crédits et le résultat. Attendez qu'elle atteigne
l'état SUCCEEDED, FAILED ou CANCELED, puis supprimez-la.
Une tâche dans un état final (SUCCEEDED, FAILED ou CANCELED) est supprimée
sans remboursement.
Retours
Renvoie 200 OK en cas de succès, ou 409 Conflict lorsque la tâche est
IN_PROGRESS.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS — the task is left running:
{
"message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}
Lister les tâches de remaillage
Ce point de terminaison vous permet de récupérer une liste de tâches de remaillage.
Paramètres
- Name
- page_num
- Type
- integer
- défaut 1
- Description
Numéro de page pour la pagination.
- Name
- page_size
- Type
- integer
- défaut 10
- Description
Limite de taille de page. Le maximum autorisé est de
100éléments.
- Name
- sort_by
- Type
- string
- Description
Champ selon lequel trier.
Valeurs disponibles :
+created_at: Trier par heure de création dans l'ordre croissant.-created_at: Trier par heure de création dans l'ordre décroissant.
Retours
Retourne une liste paginée des Objets de tâche de remaillage.
Request
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
]
Stream a Remesh Task
Ce point de terminaison diffuse en temps réel les mises à jour d'une tâche de Remaillage à l'aide des Server-Sent Events (SSE).
Paramètres
- Name
- id
- Type
- path
- Description
Identifiant unique de la tâche de Remaillage à diffuser.
Retours
Renvoie un flux d'objets de tâche de Remaillage sous forme de Server-Sent Events.
Pour les tâches PENDING ou IN_PROGRESS, le flux de réponse n'inclura que les champs progress et status nécessaires.
Request
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
L'objet Remesh Task
L'objet Remesh Task représente une unité de travail que Meshy utilise pour remailler et exporter un modèle 3D existant dans divers formats. L'objet possède les propriétés suivantes :
Propriétés
- Name
- id
- Type
- string
- Description
Identifiant unique de la tâche. Bien que nous utilisions un UUID triable par ordre k (k-sortable) comme détail d'implémentation pour les identifiants de tâche, vous ne devez pas faire d'hypothèses sur le format de l'identifiant.
- Name
- type
- Type
- string
- Description
Type de la tâche Remesh. La valeur est
remesh.
- Name
- model_urls
- Type
- object
- Description
URL téléchargeable vers le fichier de modèle 3D texturé généré par Meshy. La propriété d'un format sera omise si le format n'est pas généré, plutôt que de renvoyer une chaîne vide.
- Name
glb- Type
- string
- Description
URL téléchargeable vers le fichier GLB.
- Name
fbx- Type
- string
- Description
URL téléchargeable vers le fichier FBX.
- Name
obj- Type
- string
- Description
URL téléchargeable vers le fichier OBJ.
- Name
usdz- Type
- string
- Description
URL téléchargeable vers le fichier USDZ.
- Name
blend- Type
- string
- Description
URL téléchargeable vers le fichier Blender.
- Name
stl- Type
- string
- Description
URL téléchargeable vers le fichier STL.
- Name
3mf- Type
- string
- Description
URL téléchargeable vers le fichier 3MF. Présent uniquement lorsque
3mfa été demandé viatarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
URL téléchargeable vers une image d'aperçu générée à partir du modèle remaillé.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL téléchargeable vers une version à fond transparent (RGBA) de
thumbnail_url. Présent uniquement lorsque la tâche a été créée avecalpha_thumbnail: trueet que l'aperçu transparent a été généré avec succès ; sinon, ce champ est omis.
- Name
- progress
- Type
- integer
- Description
Progression de la tâche. Si la tâche n'a pas encore commencé, cette propriété sera
0. Une fois la tâche réussie, elle deviendra100.
- Name
- status
- Type
- string
- Description
Statut de la tâche. Les valeurs possibles sont
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Le nombre de tâches précédentes.
La valeur de ce champ n'a de sens que si le statut de la tâche est
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Horodatage de la création de la tâche, en millisecondes.
- Name
- started_at
- Type
- timestamp
- Description
Horodatage du démarrage de la tâche, en millisecondes. Si la tâche n'a pas encore démarré, cette propriété sera
0.
- Name
- finished_at
- Type
- timestamp
- Description
Horodatage de la fin de la tâche, en millisecondes. Si la tâche n'est pas encore terminée, cette propriété sera
0.
- Name
- task_error
- Type
- object
- Description
Détails de l'erreur pour les tâches échouées. Voir Erreurs pour la référence complète de l'objet
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Le nombre de crédits consommés par cette tâche. Présent lorsque le statut de la tâche est
PENDING,IN_PROGRESSouSUCCEEDED. Retourne0pour les tâchesFAILED(les crédits sont remboursés en cas d'échec).
Example Remesh Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}