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) vers différents formats. Cette section fournit des détails sur l’utilisation de l’API de Remaillage.


POST/openapi/v1/remesh

Créer une tâche de Remaillage

Ce point de terminaison crée une nouvelle tâche de Remaillage.

Paramètres

  • 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 tâches suivantes : Aperçu Texte en 3D, Affinage Texte en 3D, 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 à Meshy pour le Remaillage via une URL accessible publiquement ou une Data URI. Formats pris en charge : .glb, .gltf, .obj, .fbx, .stl.

    Pour les Data URI, utilisez le MIME type : application/octet-stream.

  • Name
    target_formats
    Type
    string[]
    défaut ["glb"]
    Description

    Une liste des formats cibles pour le modèle remaillé. En cas d’omission, seul GLB est généré.

    Valeurs disponibles : glb, fbx, obj, usdz, blend, stl, 3mf.

  • Name
    topology
    Type
    string
    défaut triangle
    Description

    Spécifiez la topology du modèle généré.

    Valeurs disponibles :

    • quad : Générer un maillage à dominante quadrilatérale.
    • triangle : Générer un maillage triangulaire décimé.
  • Name
    target_polycount
    Type
    integer
    défaut 30,000
    Description

    Spécifiez le nombre cible de polygones dans le modèle généré. Le nombre réel de polygones peut s’écarter de la cible selon 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

    Activez la décimation adaptative en définissant un niveau de nombre de polygones. Lorsqu’il est défini, target_polycount est ignoré.

    Valeurs disponibles :

    • 1 : Adaptatif — nombre de polygones ultra élevé.
    • 2 : Adaptatif — nombre de polygones élevé.
    • 3 : Adaptatif — nombre de polygones moyen.
    • 4 : Adaptatif — faible nombre de polygones.
  • Name
    resize_height
    Type
    number
    obsolète
    défaut 0
    Description

    Redimensionner le modèle à une certaine hauteur mesurée en mètres. Nous recommandons d’utiliser plutôt l’API Redimensionner dédiée.

  • Name
    resize_longest_side
    Type
    number
    obsolète
    défaut 0
    Description

    Redimensionner le modèle afin que la plus longue dimension de la boîte englobante soit égale à la valeur spécifiée en mètres. Nous recommandons d’utiliser plutôt l’API Redimensionner dédiée.

  • 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 plutôt l’API Redimensionner dédiée.

S'applique uniquement quand auto_size = true
  • Name
    origin_at
    Type
    string
    obsolète
    défaut bottom
    Description

    Position de l’origine. Nous recommandons d’utiliser plutôt l’API Redimensionner dédiée.

    Valeurs disponibles : bottom, center.

  • Name
    convert_format_only
    Type
    boolean
    obsolète
    Description

    Si true, le service changera uniquement le format du fichier de modèle d’entrée, en ignorant les autres entrées comme topology, resize_height et target_polycount. Nous recommandons d’utiliser plutôt l’API Convertir dédiée.

  • Name
    alpha_thumbnail
    Type
    boolean
    défaut false
    Description

    Lorsqu’il est défini sur true, la tâche rend en plus une version avec arrière-plan transparent (RGBA) de l’aperçu et la renvoie sous forme de alpha_thumbnail_url dans la réponse GET. Le champ thumbnail_url existant reste inchangé.

Retours

La propriété result de la réponse contient l’id de la tâche de Remaillage nouvellement créée.

Modes de défaillance

  • Name
    400 - Bad Request
    Description

    La requête était inacceptable. Causes courantes :

    • Paramètre manquant : model_url ou input_task_id doit être fourni.
    • Tâche d’entrée invalide : input_task_id doit faire référence à une tâche réussie issue d’un modèle pris en charge.
    • Format de modèle invalide : model_url pointe vers un fichier avec une extension non prise en charge.
    • URL inaccessible : model_url n’a pas pu être téléchargée.
    • Topology invalide : Le paramètre topology est invalide.
    • Paramètres mutuellement exclusifs : auto_size et resize_height ne peuvent pas être définis tous les deux.
  • 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

POST
/openapi/v1/remesh
# 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"
}

GET/openapi/v1/remesh/:id

Récupérer une tâche de Remaillage

Ce point de terminaison récupère une tâche de remaillage par 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

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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,
}

DELETE/openapi/v1/remesh/:id

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.

Retours

Retourne 200 OK en cas de réussite.

Request

DELETE
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// Returns 200 Ok on success.

GET/openapi/v1/remesh

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 50 éléments.

  • Name
    sort_by
    Type
    string
    Description

    Champ selon lequel trier.

    Valeurs disponibles :

    • +created_at: Trier par date de création dans l’ordre croissant.
    • -created_at: Trier par date de création dans l’ordre décroissant.

Retours

Retourne une liste paginée des objets de tâche de Remaillage.

Request

GET
/openapi/v1/remesh
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
  }
]

GET/openapi/v1/remesh/:id/stream

Diffuser une tâche de Remaillage

Ce point de terminaison diffuse des mises à jour en temps réel pour une tâche de Remaillage à l’aide de Server-Sent Events (SSE).

Paramètres

  • Name
    id
    Type
    path
    Description

    Identifiant unique de la tâche de Remaillage à diffuser.

Retours

Retourne 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

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
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 de tâche de Remaillage

L’objet de tâche de Remaillage représente une unité de travail que Meshy utilise pour remailler et exporter un modèle 3D existant dans différents 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 clé k pour les identifiants de tâche comme détail d’implémentation, vous ne devez pas faire d’hypothèses sur le format de l’id.

  • Name
    type
    Type
    string
    Description

    Type de la tâche de Remaillage. 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é correspondant à un format sera omise si le format n’est pas généré, au lieu 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 3mf a été demandé via target_formats.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL téléchargeable vers une image d’aperçu rendue à partir du modèle remaillé.

  • Name
    alpha_thumbnail_url
    Type
    string
    Description

    URL téléchargeable vers une version à arrière-plan transparent (RGBA) de thumbnail_url. Présent uniquement lorsque la tâche a été créée avec alpha_thumbnail: true et que l’aperçu transparent a été rendu 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 démarré, cette propriété sera 0. Une fois la tâche réussie, elle deviendra 100.

  • Name
    status
    Type
    string
    Description

    Statut de la tâche. Les valeurs possibles sont l’une de PENDING, IN_PROGRESS, SUCCEEDED, FAILED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Le nombre de tâches précédentes.

  • 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. Consultez 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_PROGRESS ou SUCCEEDED. Renvoie 0 pour les tâches FAILED (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
}