API d'analyse de l'imprimabilité

Analyser un modèle 3D pour l'imprimabilité FDM — étanchéité, volume, trous, arêtes non-manifold, et faces dégénérées.


POST/openapi/v1/print/analyze

Créer une tâche d'analyse de l'imprimabilité

Ce point de terminaison crée une nouvelle tâche d'analyse de l'imprimabilité. La tâche évalue un modèle 3D et rapporte ses métriques d'imprimabilité.

Si la tâche d'entrée a déjà une imprimabilité mise en cache, la tâche retournée est immédiatement prête et le premier GET dessus renverra le résultat de l'analyse sans passer par le travailleur.

Paramètres

  • Name
    model_url
    Type
    string
    Requis
    Description

    URL d'un modèle 3D à analyser. Formats pris en charge : .glb, .gltf, .obj, .fbx, .stl. Taille maximale du fichier : 100 Mo. Doit utiliser http, https, ou une URL data: (les URLs de données contournent les vérifications d'extension).

Retours

La propriété result de la réponse contient l'id de la nouvelle tâche d'analyse de l'imprimabilité créée.

Modes d'échec

  • Name
    400 - Bad Request
    Description

    La requête était inacceptable. Causes courantes :

    • Paramètre manquant : ni input_task_id ni model_url n'ont été fournis.
    • UUID invalide : input_task_id n'est pas un UUID valide.
    • URL de modèle invalide : model_url est mal formée, utilise un schéma non pris en charge, ou a une extension de fichier non prise en charge.
    • Fichier de modèle trop volumineux : le corps de model_url a dépassé 100 Mo.
    • Tâche non réussie : la tâche référencée est toujours en attente, en cours, ou a échoué.
  • Name
    401 - Unauthorized
    Description

    L'authentification a échoué. Veuillez vérifier votre clé API.

  • Name
    403 - Forbidden
    Description

    La tâche existe mais est détenue par un autre utilisateur.

  • Name
    404 - Not Found
    Description

    Causes courantes :

    • La tâche n'existe pas ou a été supprimée.
    • La tâche utilise un modèle plus ancien que Meshy 6, ou son mode ne produit pas un asset 3D.
    • Le fichier de modèle sous-jacent n'est plus disponible dans le stockage.
  • Name
    429 - Too Many Requests
    Description

    Vous avez dépassé votre quota de tâches en attente ou votre limite de débit.

Request

POST
/openapi/v1/print/analyze
# Analyze an existing task
curl https://api.meshy.ai/openapi/v1/print/analyze \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
  }'

# Or analyze a model URL directly
curl https://api.meshy.ai/openapi/v1/print/analyze \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "model_url": "https://example.com/model.glb"
  }'

Response

{
  "result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}

GET/openapi/v1/print/analyze/:id

Récupérer une tâche d'analyse de l'imprimabilité

Ce point de terminaison récupère une tâche d'analyse de l'imprimabilité par son ID.

Paramètres

  • Name
    id
    Type
    path
    Description

    L'ID de la tâche d'analyse de l'imprimabilité à récupérer.

Retours

L'Objet Tâche d'Analyse de l'Imprimabilité. Le champ imprimabilité est null jusqu'à ce que la tâche atteigne SUCCEEDED.

Requête

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

Réponse

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "expires_at": 1715725401000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "warning",
    "issue_count": 1,
    "error_count": 0,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "evaluated_at": 1700000001000
  },
  "consumed_credits": 0
}

DELETE/openapi/v1/print/analyze/:id

Supprimer une tâche Analyser l'imprimabilité

Ce point de terminaison supprime définitivement une tâche d'analyse de l'imprimabilité et son résultat mis en cache. Cette action est irréversible.

Paramètres de chemin

  • Name
    id
    Type
    path
    Description

    L'ID de la tâche d'analyse de l'imprimabilité à supprimer.

Retours

Retourne 200 OK en cas de succès.

Request

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

Response

// Returns 200 Ok on success.

GET/openapi/v1/print/analyze

Lister les tâches Analyser l'imprimabilité

Ce point de terminaison vous permet de récupérer une liste de tâches d'analyse de l'imprimabilité.

Paramètres

Attributs optionnels

  • Name
    page_num
    Type
    integer
    Description

    Numéro de page pour la pagination. Commence et par défaut à 1.

  • Name
    page_size
    Type
    integer
    Description

    Limite de taille de page. Par défaut à 10 éléments. Maximum autorisé est de 50 éléments.

  • Name
    sort_by
    Type
    string
    Description

    Champ pour trier par. Valeurs disponibles :

    • +created_at: Trier par ordre croissant du temps de création.
    • -created_at: Trier par ordre décroissant du temps de création.

Retours

Retourne une liste paginée d'Objets de Tâche Analyser l'Imprimabilité.

Request

GET
/openapi/v1/print/analyze
curl https://api.meshy.ai/openapi/v1/print/analyze?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "print-analyze",
    "status": "SUCCEEDED",
    "progress": 100,
    "preceding_tasks": 0,
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000001000,
    "expires_at": 1715725401000,
    "task_error": null,
    "printability": {
      "_version": "v1",
      "status": "warning",
      "issue_count": 1,
      "error_count": 0,
      "warning_count": 1,
      "metrics": {
        "is_watertight": true,
        "volume": 1.316167354292668,
        "non_manifold_edges": 0,
        "degenerate_faces": 43242,
        "holes": 0
      },
      "evaluated_at": 1700000001000
    },
    "consumed_credits": 0
  }
]

GET/openapi/v1/print/analyze/:id/stream

Diffuser une tâche d'Analyser l'imprimabilité

Ce point de terminaison diffuse des mises à jour en temps réel pour une tâche d'analyser l'imprimabilité en utilisant les Server-Sent Events (SSE).

Paramètres

  • Name
    id
    Type
    path
    Description

    Identifiant unique pour la tâche d'analyser l'imprimabilité à diffuser.

Retours

Renvoie un flux d'Objets de Tâche d'Analyser l'Imprimabilité en tant que Server-Sent Events.

Pour les tâches PENDING ou IN_PROGRESS, le flux de réponse inclura uniquement les champs nécessaires progress et status. Le bloc imprimabilité est envoyé uniquement lorsque la tâche atteint SUCCEEDED.

Request

GET
/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
curl -N https://api.meshy.ai/openapi/v1/print/analyze/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": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "expires_at": 1715725401000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "warning",
    "issue_count": 1,
    "error_count": 0,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "evaluated_at": 1700000001000
  },
  "consumed_credits": 0
}

L'objet de la tâche Analyser l'imprimabilité

  • Name
    id
    Type
    string
    Description

    Identifiant unique pour la tâche. Bien que nous utilisions un UUID triable par 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'identifiant.

  • Name
    type
    Type
    string
    Description

    Type de la tâche d'analyse de l'imprimabilité. La valeur est print-analyze.

  • Name
    status
    Type
    string
    Description

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

  • Name
    progress
    Type
    integer
    Description

    Progression de la tâche. Si la tâche n'a pas encore commencé, cette propriété sera 0. Une fois la tâche réussie, cela deviendra 100.

  • 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ébut de la tâche, en millisecondes. Si la tâche n'a pas encore commencé, 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
    expires_at
    Type
    timestamp
    Description

    Horodatage de l'expiration du résultat de la tâche dans le système, en millisecondes. 0 si la tâche n'est pas encore terminée.

  • Name
    task_error
    Type
    object
    Description

    Informations sur l'erreur si la tâche a échoué. Cette propriété est null si la tâche n'a pas échoué. Voir Erreurs pour plus de détails.

    • Name
      message
      Type
      string
      Description

      Message d'erreur décrivant ce qui s'est mal passé.

  • Name
    printability
    Type
    object
    Description

    Résultat de l'évaluation de l'imprimabilité. null jusqu'à ce que la tâche atteigne SUCCEEDED.

    • Name
      _version
      Type
      string
      Description

      Version du schéma du résultat d'imprimabilité. Actuellement v1.

    • Name
      status
      Type
      string
      Description

      Statut global. L'un de :

      • healthy : aucune erreur et aucun avertissement.
      • warning : au moins un avertissement, aucune erreur.
      • error : au moins une erreur.
      • unknown : le modèle n'a pas pu être analysé.
    • Name
      issue_count
      Type
      integer
      Description

      Nombre total de problèmes, égal à error_count + warning_count.

    • Name
      error_count
      Type
      integer
      Description

      Nombre de problèmes de niveau erreur. Les erreurs sont soulevées lorsque le modèle n'est pas étanche, a un volume non positif, ou a des arêtes non-manifold.

    • Name
      warning_count
      Type
      integer
      Description

      Nombre de problèmes de niveau avertissement. Les avertissements sont soulevés lorsque le modèle contient des faces dégénérées ou des trous.

    • Name
      metrics
      Type
      object
      Description

      Métriques de géométrie brutes renvoyées par l'évaluateur.

      • Name
        is_watertight
        Type
        boolean
        Description

        true lorsque le maillage n'a pas d'arêtes de bordure (c'est-à-dire, est fermé).

      • Name
        volume
        Type
        number
        Description

        Volume du modèle en mètres cubes.

      • Name
        non_manifold_edges
        Type
        integer
        Description

        Nombre d'arêtes non-manifold.

      • Name
        degenerate_faces
        Type
        integer
        Description

        Nombre de faces dégénérées (faces de surface nulle ou invalides).

      • Name
        holes
        Type
        integer
        Description

        Nombre de trous (boucles de bordure) dans le maillage.

    • Name
      evaluated_at
      Type
      timestamp
      Description

      Horodatage du calcul de l'analyse, en millisecondes depuis l'époque.

  • Name
    consumed_credits
    Type
    integer
    Description

    Toujours 0. Ce point de terminaison est gratuit.

The Analyze Printability Task Object

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000001000,
  "expires_at": 1715725401000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "warning",
    "issue_count": 1,
    "error_count": 0,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "evaluated_at": 1700000001000
  },
  "consumed_credits": 0
}