lowpoly sera retiré le 30 oct. 2026. Changez de modèle avant ces dates pour éviter les erreurs de requête. Voir toutes les dépréciations

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.


POST/openapi/v1/relief

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

POST
/openapi/v1/relief
# 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 null ou "" revient à l'omettre. Toute autre valeur renvoie 400.

  • Name
    should_generate_model
    Type
    boolean
    défaut true
    Description

    Indique s'il faut construire le modèle de relief. Définissez-le sur false pour 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 à 250 millimètres. Avec remove_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 à 60 millimètres. Avec remove_base défini sur true, 0 laisse 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_threshold définit ce qui compte comme arrière-plan. Meshy vérifie removal_threshold dans tous les cas.

S'applique uniquement quand 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 de 0 à 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 à 10 millimètres. Lorsque remove_base est true, omettez-le ou envoyez 0.

  • 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_axis et bend_angle faç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.
S'applique uniquement quand 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 à 360 degrés. En dessous de 1, 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éfaut 1024, 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_url n'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, variant n'est pas high ou low, ou mesh_resolution n'est pas un entier compris entre 512 et 2048.
    • Épaisseur de base : base_thickness_mm n'est pas 0 alors que remove_base est défini sur true, ou est inférieur à 0.1 sans cela.
    • URL inaccessible : Meshy ne peut pas télécharger l'image image_url, par exemple parce que l'URL renvoie 404 ou 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.

  • 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.


GET/openapi/v1/relief/:id

Récupérer une tâche Relief

Renvoie une tâche Relief à partir de son ID.

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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

L'objet tâche Relief.


DELETE/openapi/v1/relief/:id

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

DELETE
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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.


GET/openapi/v1/relief

Lister les tâches Relief

Renvoie une liste de vos tâches Relief.

Request

GET
/openapi/v1/relief
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 est 10. Meshy traite une valeur comprise entre 101 et 255 comme 100, et une valeur supérieure renvoie 400.

  • 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.


GET/openapi/v1/relief/:id/stream

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

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/stream
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_resolution liste 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 0 jusqu'à ce que la tâche démarre et 100 quand elle réussit.

  • Name
    status
    Type
    string
    Description

    Le statut de la tâche, l'un de PENDING, IN_PROGRESS, SUCCEEDED ou FAILED.

  • 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 0 jusqu'à 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 0 jusqu'à 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 0 jusqu'à 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, ou 0 pour une tâche FAILED, que Meshy rembourse.