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 Rigging

Ajoutez un squelette (armature) à un modèle 3D humanoïde et liez le maillage à celui-ci, afin que le personnage soit prêt à être animé. Pour appliquer des animations à un personnage riggé, consultez l'API Animation.

Le rigging fonctionne uniquement avec des personnages humanoïdes standards (bipèdes) possédant une structure corporelle et des membres clairement définis.


POST/openapi/v1/rigging

Créer une tâche de Rigging

Crée une tâche de Rigging pour un modèle 3D. Lorsque la tâche réussit, elle renvoie un personnage riggé dans des formats standard et, en option, des animations de base de marche et de course.

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.

Le rigging ne convient pas à ces modèles :

  • Maillages non texturés
  • Assets non humanoïdes
  • Assets humanoïdes dont la structure des membres et du corps n'est pas claire

Request

POST
/openapi/v1/rigging
# Rig a model from a URL
curl https://api.meshy.ai/openapi/v1/rigging \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "model_url": "YOUR_MODEL_URL_OR_DATA_URI",
    "height_meters": 1.8
  }'

Response

{
  "result": "018b314a-a1b5-716d-c222-2f1776f7f579"
}

Paramètres

  • Name
    input_task_id
    Type
    string
    Requis
    Description

    Obligatoire sauf si vous envoyez model_url. L'ID de la tâche dont vous souhaitez riguer le modèle. Meshy prend en charge les modèles humanoïdes texturés.

    Le modèle peut comporter au maximum 380 000 triangles (un quadrilatère compte pour 2), et un modèle qui en comporte davantage renvoie 400. Pour rester sous cette limite, exécutez d'abord l'API Remesh sur celui-ci avec un target_polycount de 300000 ou moins, ou de 150000 ou moins avec topology: quad.

  • Name
    model_url
    Type
    string
    Requis
    Description

    Obligatoire sauf si vous envoyez input_task_id. Le modèle à riguer, sous forme d'URL publique ou de Data URI. Si vous envoyez les deux, Meshy utilise input_task_id.

    Le modèle doit être un fichier GLB (.glb) d'au plus 400 Mo provenant d'une URL http ou https, ou de 100 Mo en tant que Data URI. Le rigging prend en charge les modèles humanoïdes texturés.

    Le modèle peut comporter au maximum 380 000 triangles (un quadrilatère compte pour 2), et un modèle qui en comporte davantage renvoie 400. Pour rester sous cette limite, exécutez d'abord l'API Remesh sur celui-ci avec un target_polycount de 300000 ou moins, ou de 150000 ou moins avec topology: quad.

    Le visage du personnage doit être orienté vers l'axe +Z, la direction avant standard de glTF. L'estimation de pose échoue pour un modèle orienté vers un autre axe.

    Un fichier de plus de 100 Mo doit également respecter ces règles :

    • Il peut comporter au maximum 10 000 000 faces. Un fichier qui en comporte davantage renvoie 400. Meshy compte les faces comme des triangles, et un maillage dessiné plusieurs fois compte une fois par copie.
    • Il ne doit pas utiliser la compression Draco.
  • Name
    height_meters
    Type
    number
    défaut 1.7
    Description

    La taille approximative du personnage, en mètres. Meshy l'utilise pour mettre à l'échelle et riguer le modèle plus précisément. Une valeur négative renvoie 400.

  • Name
    texture_image_url
    Type
    string
    ⚠ obsolète
    Description

    Ne l'incluez pas lorsque le modèle possède ses propres textures. Sans ce paramètre, Meshy utilise les textures intégrées dans le fichier model_url, ou les textures de la tâche d'entrée. Si vous l'envoyez, cette image devient l'unique texture du modèle riggé, et le modèle perd ses cartes PBR.

    La texture de couleur de base dépliée en UV du modèle, sous forme d'URL publique ou de Data URI. L'image doit être un fichier PNG d'au plus 20 Mo. Un autre format d'image renvoie 400.

Résultats

Le champ result de la réponse contient l'ID de la nouvelle tâche de Rigging.

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 détecté. Par exemple :

    • Paramètre manquant : ni model_url ni input_task_id n'a été envoyé.
    • Format de modèle invalide : le fichier model_url a une extension non prise en charge. Seul .glb est pris en charge.
    • URL inaccessible : Meshy ne parvient pas à télécharger le fichier model_url.
    • Fichier modèle trop volumineux : le fichier model_url dépasse 400 Mo depuis une URL http ou https, ou dépasse 100 Mo en tant que Data URI.
    • Trop de faces : le fichier model_url dépasse 100 Mo et comporte plus de 10 000 000 faces. Réduisez le nombre de faces, puis renvoyez le fichier.
    • Fichier modèle illisible : le fichier model_url dépasse 100 Mo, et Meshy ne parvient pas à lire son en-tête. Par exemple, il s'agit d'un GLB compressé avec Draco.
    • En-tête du modèle trop complexe : le fichier model_url dépasse 100 Mo, et son en-tête comporte trop de maillages, de nœuds ou d'enregistrements à vérifier. Réduisez le nombre d'objets dans le fichier, puis renvoyez-le.
    • Image trop volumineuse : l'image texture_image_url dépasse 20 Mo.
    • Format de texture invalide : l'image texture_image_url n'est pas un fichier PNG.
    • Hauteur invalide : height_meters est négatif.
    • Tâche d'entrée invalide : input_task_id ne correspond pas à une tâche API valide.
    • Nombre de faces dépassé : le modèle d'entrée comporte plus de 380 000 triangles (un quadrilatère compte pour 2). Exécutez l'API Remesh sur celui-ci avec un target_polycount de 300000 ou moins, ou de 150000 ou moins avec topology: quad, avant de riguer le modèle.

    Corrigez la requête, puis renvoyez-la. Consultez 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 ne dispose pas de suffisamment 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_id correspond à un modèle en bas-relief, que ce point de terminaison ne peut pas riguer. Le message est This model type does not support this operation. Envoyez un modèle différent.

  • Name
    422 - Unprocessable Entity
    Description

    L'estimation de pose a échoué. Le modèle n'est peut-être pas un personnage humanoïde valide. Envoyez un modèle de personnage humanoïde. Pour model_url, vérifiez également que le personnage est orienté vers l'axe +Z.

  • Name
    429 - Too Many Requests
    Description

    Vous avez dépassé votre limite de débit. Patientez, puis réessayez. Consultez Limites de débit.


GET/openapi/v1/rigging/:id

Récupérer une tâche de rigging

Retourne une tâche de rigging à partir de son ID.

Request

GET
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579
curl https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
    "rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
      "walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
      "walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
      "running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
      "running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
      "running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
    }
  },
  "preceding_tasks": 0
}

Paramètres

  • Name
    id
    Type
    path
    Description

    L'ID de la tâche provenant de la réponse de création.

Retours

L'objet tâche de rigging.


DELETE/openapi/v1/rigging/:id

Supprimer une tâche de Rigging

Supprime définitivement une tâche de Rigging, y compris ses modèles et ses données. Vous ne pouvez pas annuler une suppression.

Request

DELETE
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
  -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 ferait perdre à 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.


GET/openapi/v1/rigging

Lister les tâches de Rigging

Renvoie une liste paginée de vos tâches de Rigging, les plus récentes en premier. Pour parcourir la liste, utilisez page_num et page_size.

Les tâches que vous créez avec l'API restent dans l'API et n'apparaissent pas dans Mes assets dans l'application web. Pour retrouver une tâche dont vous n'avez plus l'ID, utilisez ce point de terminaison.

Request

GET
/openapi/v1/rigging
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"

GET/openapi/v1/rigging/:id/stream

Diffuser une tâche de Rigging en flux

Diffuse les mises à jour d'une tâche de Rigging sous forme d'événements envoyés par le serveur (SSE).

Request

GET
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/stream
curl -N https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/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": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "progress": 50,
  "status": "IN_PROGRESS"
}

event: message
data: { // Example of a SUCCEEDED task event, with the same fields as the Rigging task object
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/.../Character_output.fbx?...",
    "rigged_character_glb_url": "https://assets.meshy.ai/.../Character_output.glb?...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.glb?...",
      "walking_fbx_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.fbx?...",
      "walking_armature_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin_armature.glb?...",
      "running_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.glb?...",
      "running_fbx_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.fbx?...",
      "running_armature_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin_armature.glb?..."
    }
  },
  "preceding_tasks": 0
}

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 Rigging sous forme d'événements envoyés par le serveur.

Chaque événement contient l'objet de tâche complet, dans le même format que celui renvoyé 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 de tâche de rigging

Un objet de tâche de rigging décrit le rigging d'un personnage. Il contient le statut, la progression, et les fichiers de sortie lorsque la tâche réussit.

Propriétés

Example Rigging Task Object

{
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
    "rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
      "walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
      "walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
      "running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
      "running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
      "running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
    }
  },
  "preceding_tasks": 0
}
  • 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 rig.

  • Name
    status
    Type
    string
    Description

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

  • Name
    progress
    Type
    integer
    Description

    La progression de la tâche, en pourcentage. Elle est 0 jusqu'à ce que la tâche démarre et 100 lorsqu'elle réussit.

  • Name
    created_at
    Type
    timestamp
    Description

    Heure de création de la tâche, en millisecondes Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Heure de début de la tâche, en millisecondes Unix. Elle est 0 jusqu'à ce que la tâche démarre.

  • Name
    finished_at
    Type
    timestamp
    Description

    Heure de fin de la tâche, en millisecondes Unix. Elle est 0 jusqu'à ce que la tâche se termine.

  • Name
    expires_at
    Type
    timestamp
    Description

    Heure d'expiration des fichiers de résultat de la tâche, en millisecondes Unix. Après cette heure, Meshy peut supprimer les fichiers.

  • 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. Présent lorsque le statut est PENDING, IN_PROGRESS, ou SUCCEEDED. Il est 0 pour une tâche FAILED, car Meshy rembourse les crédits lorsqu'une tâche échoue.

  • Name
    result
    Type
    object
    Description

    Les URL des fichiers de sortie. Tant que la tâche n'a pas réussi, chaque URL est une chaîne vide, et basic_animations est null.

    • Name
      rigged_character_fbx_url
      Type
      string
      Description

      URL de téléchargement du personnage riggé sous forme de fichier FBX.

    • Name
      rigged_character_glb_url
      Type
      string
      Description

      URL de téléchargement du personnage riggé sous forme de fichier GLB.

    • Name
      basic_animations
      Type
      object (optional)
      Description

      URL de téléchargement des animations de marche et de course par défaut.

      • Name
        walking_glb_url
        Type
        string
        Description
        L'animation de marche avec peau, sous forme de fichier GLB.
      • Name
        walking_fbx_url
        Type
        string
        Description
        L'animation de marche avec peau, sous forme de fichier FBX.
      • Name
        walking_armature_glb_url
        Type
        string
        Description
        L'armature de l'animation de marche, sous forme de fichier GLB.
      • Name
        running_glb_url
        Type
        string
        Description
        L'animation de course avec peau, sous forme de fichier GLB.
      • Name
        running_fbx_url
        Type
        string
        Description
        L'animation de course avec peau, sous forme de fichier FBX.
      • Name
        running_armature_glb_url
        Type
        string
        Description
        L'armature de l'animation de course, sous forme de fichier GLB.
  • 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'a de sens que pendant que la tâche est PENDING.