API Remaillage
Reconstruisez le maillage d'un modèle 3D avec une nouvelle topology et un nouveau nombre de faces, et exportez-le dans les formats de votre choix. Le modèle peut provenir d'une autre tâche Meshy, telle que Image en 3D ou Texte en 3D, ou d'un fichier de modèle.
Créer une tâche de Remaillage
Crée une tâche de Remaillage. La tâche s'exécute en arrière-plan. Pour connaître la durée habituelle d'une tâche, consultez Temps de traitement.
Pour convertir le format d'un modèle ou le redimensionner, utilisez l'API Convert ou l'API Resize. Les paramètres obsolètes de cette page fonctionnent encore, mais les nouvelles intégrations devraient utiliser ces points de terminaison.
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"
}
Paramètres
- Name
- input_task_id
- Type
- string
- Requis
- Description
Requis sauf si vous envoyez
model_url. L'ID de la tâche dont vous souhaitez remailler le modèle, par exemple une tâche Texte en 3D, Image en 3D, Retexturisation ou Remaillage. La tâche doit avoir été créée par vous via l'API et avoir le statutSUCCEEDED.
- Name
- model_url
- Type
- string
- Requis
- Description
Requis sauf si vous envoyez
input_task_id. Le modèle à remailler, sous forme d'URL publique ou de Data URI. Si vous envoyez les deux, Meshy utiliseinput_task_id.Le modèle doit être un fichier GLB, glTF, OBJ, FBX ou STL d'au plus 400 Mo provenant d'une URL
httpouhttps, ou de 100 Mo au maximum en tant que Data URI. Pour un Data URI, utilisez le MIME typeapplication/octet-stream.Un fichier de plus de 100 Mo doit également respecter ces règles :
- Un fichier GLB, glTF, FBX ou OBJ peut avoir au maximum 10 000 000 faces. Meshy compte les faces en triangles, donc un quadrilatère compte pour 2, et un maillage dessiné plusieurs fois compte une fois par copie.
- Un fichier FBX doit être au format binaire FBX 7.1 ou plus récent.
- Un fichier GLB ou glTF ne doit pas utiliser la compression Draco.
- Name
- target_formats
- Type
- string[]
- défaut ["glb"]
- Description
Les formats de fichiers à générer.
Valeurs disponibles :
glbfbxobjusdzblendstl3mf
- Name
- topology
- Type
- string
- défaut triangle
- Description
Le type de face du modèle remaillé.
Valeurs disponibles :
quad: un maillage à dominance de quadrilatèrestriangle: un maillage triangulaire décimé
- Name
- target_polycount
- Type
- integer
- défaut 30000
- Description
Le nombre de faces visé, de
100à300000. Le résultat peut différer de la cible, selon la géométrie du modèle. Une valeur hors de la plage renvoie400.
- Name
- decimation_mode
- Type
- integer
- Description
Nombre de faces adaptatif, par niveau. Lorsque vous le définissez, Meshy ignore
target_polycount.Valeurs disponibles :
1: ultra2: élevé3: moyen4: faible
- Name
- resize_height
- Type
- number
- ⚠ obsolète
- défaut 0
- Description
Utilisez plutôt l'API Resize. La hauteur à laquelle redimensionner le modèle, en mètres. Envoyez au plus un des paramètres
resize_height,resize_longest_sideetauto_size.
- Name
- resize_longest_side
- Type
- number
- ⚠ obsolète
- défaut 0
- Description
Utilisez plutôt l'API Resize. La longueur à laquelle redimensionner le côté le plus long de la boîte englobante du modèle, en mètres. Envoyez au plus un des paramètres
resize_height,resize_longest_sideetauto_size.
- Name
- auto_size
- Type
- boolean
- ⚠ obsolète
- défaut false
- Description
Utilisez plutôt l'API Resize. Indique s'il faut estimer la hauteur réelle de l'objet avec la vision par IA et redimensionner le modèle en conséquence. Envoyez au plus un des paramètres
resize_height,resize_longest_sideetauto_size.
- Name
- origin_at
- Type
- string
- ⚠ obsolète
- défaut bottom
- Description
Utilisez plutôt l'API Resize. L'emplacement de l'origine du modèle,
bottomoucenter. La valeur par défaut s'applique lorsque vous envoyezresize_height,resize_longest_sideouauto_size. Sans l'un d'eux, Meshy ne déplace l'origine que si vous envoyezorigin_at.
- Name
- convert_format_only
- Type
- boolean
- ⚠ obsolète
- Description
Utilisez plutôt l'API Convert. Indique s'il faut seulement convertir le modèle vers
target_formats. Lorsque la valeur esttrue, Meshy ignoretopology,target_polycount,decimation_mode,resize_height,resize_longest_sideetauto_size, mais vérifie quand même leurs valeurs, donc une valeur invalide renvoie400. Avecconvert_format_only: true, untarget_formatsvide ounullrenvoie400.
- Name
- alpha_thumbnail
- Type
- boolean
- défaut false
- Description
Indique s'il faut également générer un aperçu avec un arrière-plan transparent (RGBA), renvoyé dans
alpha_thumbnail_urllorsque vous récupérez la tâche.thumbnail_urlne change pas.
Retours
Le champ result de la réponse contient l'ID de la nouvelle tâche de Remaillage.
Modes d'échec
- Name
400 - Bad Request- Description
La requête ne peut pas s'exécuter. Le message d'erreur indique le problème rencontré. Par exemple :
- Paramètre manquant : Ni
model_urlniinput_task_idn'ont été envoyés. - Tâche d'entrée invalide :
input_task_idne correspond pas à une tâche API réussie, ou son modèle d'IA ne prend pas en charge le remaillage. - Format de modèle invalide : Le fichier
model_urla une extension non prise en charge. - URL inaccessible : Meshy ne peut pas télécharger le fichier
model_url. - Fichier modèle trop volumineux : Le fichier
model_urldépasse 400 Mo depuis une URLhttpouhttps, ou dépasse 100 Mo en tant que Data URI. - Trop de faces : Le fichier
model_urldépasse 100 Mo et a plus de 10 000 000 faces. Réduisez le nombre de faces, puis renvoyez le fichier. - FBX ASCII de plus de 100 Mo : Le fichier
model_urlest un FBX ASCII de plus de 100 Mo. Envoyez-le en FBX binaire ou en GLB. - Fichier modèle illisible : Le fichier
model_urldépasse 100 Mo, et Meshy ne peut pas lire son en-tête. Par exemple, il s'agit d'un GLB ou glTF compressé avec Draco, ou d'un FBX binaire antérieur à 7.1. - En-tête de modèle trop complexe : Le fichier
model_urldépasse 100 Mo, et son en-tête contient trop de maillages, nœuds ou enregistrements à vérifier. Réduisez le nombre d'objets dans le fichier, puis renvoyez-le. - Topologie invalide :
topologyn'est niquadnitriangle. - Paramètres mutuellement exclusifs : La requête contient plus d'un des paramètres
auto_size,resize_heightetresize_longest_side. N'en envoyez qu'un seul.
Corrigez la requête, puis renvoyez-la. Voir Erreurs.
- Paramètre manquant : Ni
- Name
401 - Unauthorized- Description
La clé API est manquante ou invalide. Vérifiez l'en-tête
Authorization.
- Name
402 - Payment Required- Description
Par exemple :
- Crédits insuffisants : Le compte n'a pas assez de crédits pour cette tâche, ou le compte a atteint une limite de crédits. Vérifiez votre solde de crédits, puis réessayez.
- Plan gratuit : La création d'une tâche nécessite un plan payant. Mettez à niveau votre plan dans vos paramètres d'abonnement, puis réessayez.
- Name
403 - Forbidden- Description
input_task_idcorrespond à un modèle en bas-relief, que ce point de terminaison ne peut pas remailler. Le message estThis model type does not support this operation. Envoyez un autre modèle.
- Name
404 - Not Found- Description
input_task_idne correspond à aucune de vos tâches. Vérifiez l'ID de la tâche, puis renvoyez la requête.
- Name
429 - Too Many Requests- Description
Vous avez dépassé votre limite de débit. Attendez, puis réessayez. Voir Limites de débit.
Récupérer une tâche de Remaillage
Renvoie une tâche de Remaillage à partir de son ID.
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,
}
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche provenant de la réponse de création.
Retours
Supprimer une tâche de remaillage
Supprime définitivement une tâche de remaillage, y compris ses modèles et ses données. Vous ne pouvez pas annuler une suppression.
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 keeps 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."
}
Paramètres de chemin
- Name
- id
- Type
- path
- Description
L'ID de la tâche à supprimer.
Statut de la tâche
La suppression d'une tâche PENDING rembourse les crédits utilisés lors de sa création.
Une tâche IN_PROGRESS ne peut pas être supprimée. La requête renvoie 409 Conflict,
et la tâche continue de s'exécuter. Meshy ne rembourse pas une tâche qui a démarré,
donc la supprimer vous coûterait à la fois les crédits et le résultat. Attendez
qu'elle atteigne le statut SUCCEEDED, FAILED ou CANCELED, puis supprimez-la.
La suppression d'une tâche dans un statut final (SUCCEEDED, FAILED ou CANCELED)
ne rembourse pas ses crédits.
Retours
200 OK lorsque la tâche est supprimée, ou 409 Conflict lorsque la tâche est
IN_PROGRESS.
Lister les tâches de Remaillage
Renvoie une liste de vos tâches 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
}
]
Paramètres
- Name
- page_num
- Type
- integer
- défaut 1
- Description
Le numéro de page à renvoyer.
- Name
- page_size
- Type
- integer
- défaut 10
- Description
Le nombre de tâches par page, jusqu'à
100.
- Name
- sort_by
- Type
- string
- Description
L'ordre de tri.
Valeurs disponibles :
+created_at: du plus ancien au plus récent-created_at: du plus récent au plus ancien
Renvoie
Une liste paginée d'objets de tâche de Remaillage.
Diffuser en continu une tâche de Remaillage
Diffuse les mises à jour d'une tâche de Remaillage sous forme de Server-Sent Events (SSE).
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.
// These examples are shortened. Each event holds the full task object.
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,
}
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche provenant de la réponse de création.
Retours
Un flux d'objets de tâche de Remaillage sous forme de Server-Sent Events.
Chaque événement contient l'objet de tâche complet, selon le même format que celui retourné par le point de terminaison Get. Tant que la tâche est PENDING ou IN_PROGRESS, ses champs de résultat n'ont pas encore de valeurs.
L'objet tâche Remaillage
Un objet tâche Remaillage décrit un remaillage d'un modèle 3D. Il contient le statut, la progression et les fichiers du modèle lorsque la tâche réussit.
Propriétés
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
}
- Name
- id
- Type
- string
- Description
L'ID de la tâche. Traitez-le comme une chaîne opaque et ne vous fiez pas à son format.
- Name
- type
- Type
- string
- Description
Le type de tâche, toujours
remesh.
- Name
- model_urls
- Type
- object
- Description
URLs de téléchargement pour le modèle remaillé, une par format de fichier. Un format que la tâche n'a pas généré n'a pas de clé, plutôt qu'une chaîne vide.
- Name
glb- Type
- string
- Description
Le fichier GLB.
- Name
fbx- Type
- string
- Description
Le fichier FBX.
- Name
obj- Type
- string
- Description
Le fichier OBJ.
- Name
usdz- Type
- string
- Description
Le fichier USDZ.
- Name
blend- Type
- string
- Description
Le fichier Blender.
- Name
stl- Type
- string
- Description
Le fichier STL.
- Name
3mf- Type
- string
- Description
Le fichier 3MF. Présent uniquement lorsque
target_formatsinclut3mf.
- Name
- thumbnail_url
- Type
- string
- Description
URL de téléchargement pour une image d'aperçu du modèle remaillé.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL de téléchargement pour une version de
thumbnail_urlavec un fond transparent (RGBA). Présent uniquement lorsque vous avez créé la tâche avecalpha_thumbnail: trueet que Meshy a rendu l'aperçu transparent.
- Name
- progress
- Type
- integer
- Description
La part de la tâche déjà effectuée, en pourcentage. C'est
0jusqu'à ce que la tâche démarre et100lorsqu'elle réussit.
- Name
- status
- Type
- string
- Description
Le statut de la tâche, l'un de
PENDING,IN_PROGRESS,SUCCEEDEDouFAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Le nombre de tâches qui précèdent celle-ci dans la file d'attente. La valeur n'est pertinente que tant que la tâche est
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Horodatage de création de la tâche, en millisecondes Unix.
- Name
- started_at
- Type
- timestamp
- Description
Horodatage de démarrage de la tâche, en millisecondes Unix. C'est
0jusqu'à ce que la tâche démarre.
- Name
- finished_at
- Type
- timestamp
- Description
Horodatage de fin de la tâche, en millisecondes Unix. C'est
0jusqu'à ce que la tâche se termine.
- Name
- task_error
- Type
- object
- Description
Les détails de l'erreur lorsque la tâche échoue. Voir Erreurs.
- Name
- consumed_credits
- Type
- integer
- Description
Le nombre de crédits que la tâche a utilisés. Présent lorsque le statut est
PENDING,IN_PROGRESSouSUCCEEDED. C'est0pour une tâcheFAILED, car Meshy rembourse les crédits lorsqu'une tâche échoue.