API Relief
Transformez une photo en un modèle 3D en bas-relief et une carte de profondeur 16 bits, pour l'impression 3D, la gravure laser et l'usinage CNC.
Créer une tâche Relief
Crée une tâche Relief. La tâche transforme une photo en modèle de bas-relief. Lorsqu'elle réussit, la tâche produit le modèle sous forme de fichier GLB et de fichier STL, une carte de profondeur en niveaux de gris 16 bits, et une image d'aperçu. Pour obtenir uniquement la carte de profondeur, définissez should_generate_model sur false.
La tâche s'exécute en arrière-plan.
Une tâche Relief ne peut pas servir d'entrée pour un autre point de terminaison, comme Remaillage, Convertir ou Auto Split. Ces requêtes renvoient 403.
Request
# Simple request: a low relief, 60 mm on its longer side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"image_url": "<your publicly accessible image url or base64-encoded data URI>"
}'
# Advanced request: a deep 120 mm relief with a thicker base, curved from side to side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"image_url": "<your publicly accessible image url or base64-encoded data URI>",
"variant": "high",
"size_mm": 120,
"carving_depth_mm": 10,
"base_thickness_mm": 3,
"bend_mode": "convex",
"bend_angle": 90
}'
Response
{
"result": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20"
}
Paramètres
- Name
- image_url
- Type
- string
- Requis
- Description
La photo à transformer en relief, sous forme d'URL publique ou de Data URI (
data:image/png;base64,...).L'image doit être un fichier JPG, JPEG, PNG ou WebP d'au plus 20 Mo, et d'au moins 32 × 32 pixels. Son côté le plus long peut mesurer au plus environ 16 fois son côté le plus court. Toute autre image renvoie
400. Meshy remplit les zones transparentes en noir avant de construire le relief.
- Name
- variant
- Type
- string
- défaut low
- Description
Le style du relief. Il façonne la carte de profondeur et définit la valeur par défaut de
carving_depth_mm.Valeurs disponibles :
high: gravure plus profonde, pour les pièces imprimées en 3D.low: gravure peu profonde, pour la gravure laser, l'usinage CNC et les plaques fines.
Envoyer
nullou""revient à l'omettre. Toute autre valeur renvoie400.
- Name
- should_generate_model
- Type
- boolean
- défaut true
- Description
Indique s'il faut construire le modèle de relief. Définissez-le sur
falsepour une tâche générant uniquement la carte de profondeur, sans modèle ni image d'aperçu. Meshy vérifie quand même les paramètres de taille, de gravure, de base, de courbure et de résolution, mais ne les utilise pas. Cela ne change pas le coût en crédits.
- Name
- size_mm
- Type
- number
- défaut 60
- Description
La longueur du côté le plus long de la photo sur le modèle, mesurée à plat avant toute courbure, de
20à250millimètres. Avecremove_base, le modèle peut être plus petit.
- Name
- carving_mode
- Type
- string
- défaut emboss
- Description
Indique si le sujet ressort de la plaque ou y est découpé.
Valeurs disponibles :
emboss: les parties les plus proches de la photo ressortent.engrave: la profondeur est inversée, de sorte que les parties les plus proches sont découpées en creux.
La carte de profondeur est identique dans les deux modes.
- Name
- carving_depth_mm
- Type
- number
- défaut 6 (high), 3 (low)
- Description
La profondeur de gravure du relief, de
0à60millimètres. Avecremove_basedéfini surtrue,0laisse un modèle vide. La tâche réussit quand même et coûte 20 crédits, et ses fichiers GLB et STL n'ont pas de géométrie.
- Name
- remove_base
- Type
- boolean
- défaut false
- Description
Indique s'il faut découper l'arrière-plan et ne construire aucune plaque de base. Lorsqu'il est
true,removal_thresholddéfinit ce qui compte comme arrière-plan. Meshy vérifieremoval_thresholddans tous les cas.
remove_base = true- Name
- removal_threshold
- Type
- number
- défaut 0.01
- Description
Le seuil de profondeur en dessous duquel Meshy découpe l'arrière-plan, de
0.01à1, la carte de profondeur allant de0à1. Une valeur élevée peut découper tout le relief et laisser un modèle vide, ce qui réussit quand même et est facturé.
- Name
- base_thickness_mm
- Type
- number
- défaut 1, or 0 with remove_base
- Description
L'épaisseur de la plaque de base, de
0.1à10millimètres. Lorsqueremove_baseesttrue, omettez-le ou envoyez0.
- Name
- bend_mode
- Type
- string
- défaut off
- Description
Indique s'il faut courber le relief, et dans quel sens. Lorsqu'il n'est pas
off,bend_axisetbend_anglefaçonnent la courbure. Meshy les vérifie dans tous les cas.Valeurs disponibles :
off: un relief plat.convex: l'avant se bombe vers l'extérieur.concave: l'avant se courbe vers l'intérieur.
bend_mode = convex or concave- Name
- bend_axis
- Type
- string
- défaut xz
- Description
Quels bords la courbure enroule.
Valeurs disponibles :
xz: les bords gauche et droit.yz: les bords haut et bas.
- Name
- bend_angle
- Type
- number
- défaut 60
- Description
L'arc couvert par la courbure, de
0à360degrés. En dessous de1, le relief reste plat.
- Name
- mesh_resolution
- Type
- integer
- défaut 1024
- Description
Le nombre de points de maillage le long du côté le plus long de la photo, de
512à2048. Une valeur plus élevée conserve des détails plus fins et génère des fichiers plus volumineux. Avec la valeur par défaut1024, le fichier GLB fait environ 40 à 50 Mo et le fichier STL environ 80 à 105 Mo. Une photo carrée donne les tailles les plus grandes. À2048, elles sont d'environ 150 Mo et 300 Mo. Une courbure les rend plus volumineux : le fichier STL peut atteindre environ 800 Mo à2048.
Retours
202 Accepted, avec l'ID de la nouvelle tâche Relief dans result.
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 :
image_urln'a pas été envoyé. - Paramètre invalide : Un paramètre a un type incorrect, est hors de sa plage, ou n'est pas l'une de ses valeurs disponibles. Par exemple,
variantn'est pashighoulow, oumesh_resolutionn'est pas un entier compris entre512et2048. - Épaisseur de base :
base_thickness_mmn'est pas0alors queremove_baseest défini surtrue, ou est inférieur à0.1sans cela. - URL inaccessible : Meshy ne peut pas télécharger l'image
image_url, par exemple parce que l'URL renvoie404ou expire. - Image invalide : L'image n'est pas un fichier JPG, JPEG, PNG ou WebP, dépasse 20 Mo, est plus petite que 32 × 32 pixels, contient trop de pixels, ou ne peut pas être lue.
- Rapport d'aspect extrême : Le côté le plus long de l'image mesure plus d'environ 16 fois son côté le plus court.
Corrigez la requête, puis renvoyez-la. Meshy ne la facture pas. Voir Erreurs.
- Paramètre manquant :
- 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.
- Formule gratuite : La création d'une tâche nécessite une formule payante. Mettez à niveau votre formule dans les paramètres d'abonnement, puis réessayez.
- Name
403 - Forbidden- Description
La modération de contenu a bloqué l'image. Meshy ne facture pas la requête. Envoyez une image différente.
- Name
429 - Too Many Requests- Description
L'une de ces limites a été atteinte :
- Vous avez envoyé trop de requêtes. Attendez, puis réessayez. Voir Limites de débit.
- Trop de vos tâches sont en file d'attente ou en cours d'exécution. Attendez que certaines se terminent, puis réessayez.
- Sur une formule illimitée sans crédits restants, vous avez atteint le nombre de tâches pouvant s'exécuter sans crédits. Attendez qu'une tâche se termine, ou ajoutez des crédits.
Si un contrôle de sécurité refuse l'image pendant l'exécution de la tâche, la tâche échoue avec task_error.type défini sur invalid_input et task_error.code défini sur provider_content_refused. Meshy rembourse les crédits de la tâche. Envoyez une image différente. Voir Erreurs.
Récupérer une tâche Relief
Renvoie une tâche Relief à partir de son ID.
Request
curl https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Paramètres
- Name
- id
- Type
- path
- Description
L'ID de la tâche provenant de la réponse de création.
Retourne
Supprimer une tâche Relief
Supprime définitivement une tâche Relief, y compris son modèle, sa carte de profondeur et ses données. Vous ne pouvez pas annuler une suppression.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-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
Supprimer 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 ou FAILED, puis supprimez-la.
Supprimer une tâche SUCCEEDED ne rembourse pas ses crédits. Une tâche FAILED a déjà été remboursée lors de son échec.
Retours
200 OK lorsque la tâche est supprimée, ou 409 Conflict lorsque la tâche est
IN_PROGRESS.
Lister les tâches Relief
Renvoie une liste de vos tâches Relief.
Request
curl https://api.meshy.ai/openapi/v1/relief?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
]
Paramètres
- Name
- page_num
- Type
- integer
- Description
Le numéro de page à renvoyer. Commence à
1, qui est également la valeur par défaut.
- Name
- page_size
- Type
- integer
- Description
Le nombre de tâches par page, jusqu'à
100. La valeur par défaut est10. Meshy traite une valeur comprise entre101et255comme100, et une valeur supérieure renvoie400.
- 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
Retourne
Une liste paginée d'objets de tâche Relief.
Diffuser les mises à jour d'une tâche Relief en flux
Diffuse les mises à jour d'une tâche Relief sous forme d'événements envoyés par le serveur (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/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 (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
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 Relief sous forme d'événements envoyés par le serveur.
Chaque événement message contient l'objet de tâche complet, le même que celui renvoyé par Récupérer une tâche Relief. Tant que la tâche est PENDING ou IN_PROGRESS, les champs qui changent entre les événements sont progress, status, started_at, et preceding_tasks (présent uniquement tant que des tâches précèdent celle-ci). model_urls, depth_map_url, et thumbnail_url reçoivent leurs valeurs lorsque la tâche atteint SUCCEEDED. Une tâche de carte de profondeur uniquement conserve model_urls à {} et un thumbnail_url vide.
Un événement error ne contient que status_code et message, vérifiez donc le nom de l'événement avant de lire status.
L'objet de tâche Relief
Un objet de tâche Relief décrit un relief créé à partir d'une photo. model_urls, depth_map_url et thumbnail_url sont toujours présents, et vides jusqu'à ce que la tâche réussisse.
The Relief Task Object
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Depth map only
{
"id": "0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31",
"type": "relief",
"model_urls": {},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31/output/depth.png?Expires=***",
"thumbnail_url": "",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1700259230000,
"task_error": null,
"consumed_credits": 20
}
- 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
relief.
- Name
- model_urls
- Type
- object
- Description
URLs de téléchargement pour le modèle de relief. Les fichiers peuvent être volumineux ;
mesh_resolutionliste les tailles habituelles.- Name
glb- Type
- string
- Description
Le fichier GLB, sans texture. Ses unités sont en mètres. Absent pour une tâche limitée à la carte de profondeur.
- Name
stl- Type
- string
- Description
Le même modèle sous forme de fichier STL binaire. Ses unités sont en millimètres, il s'ouvre donc à la taille réelle du relief, avec Z vers le haut. Absent pour une tâche limitée à la carte de profondeur.
- Name
- depth_map_url
- Type
- string
- Description
URL de téléchargement pour la carte de profondeur en niveaux de gris 16 bits à partir de laquelle le relief est construit. Les pixels plus clairs sont plus élevés. Les valeurs sont des hauteurs relatives, pas des millimètres. Les logiciels de gravure laser et de CNC peuvent l'utiliser comme carte de hauteur. Le fichier fait environ 1 à 2 Mo. Vide s'il n'y en a pas.
- Name
- thumbnail_url
- Type
- string
- Description
URL de téléchargement pour une image d'aperçu du modèle de relief. Vide si aucune n'a été rendue, y compris pour une tâche limitée à la carte de profondeur.
- Name
- progress
- Type
- integer
- Description
La part de la tâche réalisée, en pourcentage. C'est
0jusqu'à ce que la tâche démarre et100quand 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 devant celle-ci dans la file d'attente. Le champ est omis lorsque la valeur est
0, et n'apparaît donc que tant que des tâches précèdent celle-ci.
- Name
- created_at
- Type
- timestamp
- Description
Horodatage de la création de la tâche, en millisecondes Unix.
- Name
- started_at
- Type
- timestamp
- Description
Horodatage du 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 la fin de la tâche, en millisecondes Unix. C'est
0jusqu'à ce que la tâche se termine.
- Name
- expires_at
- Type
- timestamp
- Description
Horodatage de l'expiration du résultat 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 utilisés par la tâche :
20, ou0pour une tâcheFAILED, que Meshy rembourse.