Printbaarheid analyseren API

Analyseer een 3D-model op FDM-printbaarheid — waterdichtheid, volume, gaten, niet-manifold randen en gedegenereerde vlakken.


POST/openapi/v1/print/analyze

Analyseer-printbaarheid-taak aanmaken

Deze endpoint maakt een nieuwe analyseer-printbaarheid-taak aan. De taak evalueert een 3D-model en rapporteert de printbaarheidsstatistieken ervan.

Als de invoertaak al gecachete printbaarheid heeft, is de geretourneerde taak onmiddellijk klaar en zal de eerste GET erop het analyseresultaat teruggeven zonder via de worker te gaan.

Parameters

  • Name
    model_url
    Type
    string
    Verplicht
    Description

    URL van een te analyseren 3D-model. Ondersteunde formaten: .glb, .gltf, .obj, .fbx, .stl. Maximale bestandsgrootte: 100 MB. Moet gebruikmaken van http, https, of een data: URL (data-URL's omzeilen extensiecontroles).

Retourwaarden

De result-eigenschap van de respons bevat de id van de nieuw aangemaakte analyseer-printbaarheid-taak.

Foutmodi

  • Name
    400 - Bad Request
    Description

    Het verzoek was onaanvaardbaar. Veelvoorkomende oorzaken:

    • Ontbrekende parameter: noch input_task_id noch model_url werd opgegeven.
    • Ongeldige UUID: input_task_id is geen geldige UUID.
    • Ongeldige model-URL: model_url is misvormd, gebruikt een niet-ondersteund schema, of heeft een niet-ondersteunde bestandsextensie.
    • Modelbestand te groot: de inhoud van model_url overschreed 100 MB.
    • Taak niet geslaagd: de referentietaak is nog in behandeling, in uitvoering, of mislukt.
  • Name
    401 - Unauthorized
    Description

    Authenticatie is mislukt. Controleer uw API-sleutel.

  • Name
    403 - Forbidden
    Description

    De taak bestaat, maar is eigendom van een andere gebruiker.

  • Name
    404 - Not Found
    Description

    Veelvoorkomende oorzaken:

    • De taak bestaat niet of is verwijderd.
    • De taak gebruikt een model ouder dan Meshy 6, of de mode ervan produceert geen 3D-asset.
    • Het onderliggende modelbestand is niet meer beschikbaar in de opslag.
  • Name
    429 - Too Many Requests
    Description

    U heeft uw quotum voor in behandeling zijnde taken of uw rate limit overschreden.

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

Retrieve an Analyze Printability Task

Deze endpoint haalt een analyze-printability-taak op aan de hand van de ID.

Parameters

  • Name
    id
    Type
    path
    Description

    De ID van de analyze-printability-taak die moet worden opgehaald.

Retourwaarden

Het Analyze Printability Task Object. Het veld printability is null totdat de taak SUCCEEDED bereikt.

Request

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}"

Response

{
  "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

Een taak voor Printbaarheid analyseren verwijderen

Deze endpoint verwijdert een analyze-printability-taak en het bijbehorende gecachte resultaat permanent. Deze actie is onomkeerbaar.

Padparameters

  • Name
    id
    Type
    path
    Description

    De ID van de analyze-printability-taak die verwijderd moet worden.

Taakstatus

Een taak die zich nog in de status PENDING bevindt, wordt verwijderd en de credits die bij het aanmaken zijn verbruikt, worden terugbetaald.

Een taak die al IN_PROGRESS is, kan niet worden verwijderd: het verzoek wordt afgewezen met 409 Conflict en de taak blijft doorlopen. Credits voor een taak die de worker al is gestart, worden niet terugbetaald, dus als je deze halverwege verwijdert, ben je zowel de credits als het resultaat kwijt. Wacht tot de taak SUCCEEDED, FAILED of CANCELED bereikt en verwijder hem dan.

Een taak in een eindstatus (SUCCEEDED, FAILED of CANCELED) wordt verwijderd zonder terugbetaling.

Retourneert

Retourneert 200 OK bij succes, of 409 Conflict wanneer de taak IN_PROGRESS is.

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

// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS — the task is left 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."
}

GET/openapi/v1/print/analyze

Lijst van printbaarheidsanalyse-taken ophalen

Met deze endpoint kun je een lijst van printbaarheidsanalyse-taken ophalen.

Parameters

Optionele attributen

  • Name
    page_num
    Type
    integer
    Description

    Paginanummer voor paginering. Begint bij en heeft als standaardwaarde 1.

  • Name
    page_size
    Type
    integer
    Description

    Limiet voor paginagrootte. Standaard 10 items. Maximaal toegestaan is 100 items.

  • Name
    sort_by
    Type
    string
    Description

    Veld om op te sorteren. Beschikbare waarden:

    • +created_at: Sorteer op aanmaaktijd in oplopende volgorde.
    • -created_at: Sorteer op aanmaaktijd in aflopende volgorde.

Retourneert

Retourneert een gepagineerde lijst van Analyze Printability Task-objecten.

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

Stream een Printbaarheid analyseren-taak

Deze endpoint streamt realtime updates voor een printbaarheid-analysetaak met behulp van Server-Sent Events (SSE).

Parameters

  • Name
    id
    Type
    path
    Description

    Unieke identifier voor de printbaarheid-analysetaak die gestreamd moet worden.

Retourneert

Retourneert een stream van Analyze Printability Task Objects als Server-Sent Events.

Elk frame bevat het volledige taakobject voor de fase — dezelfde vorm die de Get-endpoint retourneert — dus terwijl de taak PENDING of IN_PROGRESS is, zijn de outputvelden simpelweg nog niet ingevuld (null, [] of {}) en is finished_at gelijk aan null. Het printability-blok wordt pas verzonden zodra de taak SUCCEEDED bereikt.

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.
// Every frame is the full task object; fields not yet populated are null / empty.
// The PENDING frame below is abbreviated to the fields that change.
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
}

Het Analyze Printability Taakobject

  • Name
    id
    Type
    string
    Description

    Unieke identifier voor de taak. Hoewel we een k-sortable UUID gebruiken voor taak-id's als implementatiedetail, moet je geen aannames doen over het formaat van de id.

  • Name
    type
    Type
    string
    Description

    Type van de analyze-printability-taak. De waarde is print-analyze.

  • Name
    status
    Type
    string
    Description

    Status van de taak. Mogelijke waarden zijn een van PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Progress van de taak. Als de taak nog niet is gestart, is deze eigenschap 0. Zodra de taak is geslaagd, wordt dit 100.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Het aantal voorafgaande taken.

  • Name
    created_at
    Type
    timestamp
    Description

    Tijdstempel van wanneer de taak is aangemaakt, in milliseconden.

  • Name
    started_at
    Type
    timestamp
    Description

    Tijdstempel van wanneer de taak is gestart, in milliseconden. Als de taak nog niet is gestart, is deze eigenschap 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Tijdstempel van wanneer de taak is voltooid, in milliseconden. Als de taak nog niet is voltooid, is deze eigenschap 0.

  • Name
    expires_at
    Type
    timestamp
    Description

    Tijdstempel van wanneer het taakresultaat uit het systeem verloopt, in milliseconden. 0 als de taak nog niet is voltooid.

  • Name
    task_error
    Type
    object
    Description

    Foutinformatie als de taak is mislukt. Deze eigenschap is null als de taak niet is mislukt. Zie Fouten voor meer details.

    • Name
      message
      Type
      string
      Description

      Foutmelding die beschrijft wat er misging.

  • Name
    printability
    Type
    object
    Description

    Resultaat van de printbaarheidsevaluatie. null totdat de taak SUCCEEDED bereikt.

    • Name
      _version
      Type
      string
      Description

      Schemaversie van het printbaarheidsresultaat. Momenteel v1.

    • Name
      status
      Type
      string
      Description

      Algemene status. Een van:

      • healthy: geen fouten en geen waarschuwingen.
      • warning: minstens één waarschuwing, geen fouten.
      • error: minstens één fout.
      • unknown: het model kon niet worden geanalyseerd.
    • Name
      issue_count
      Type
      integer
      Description

      Totaal aantal problemen, gelijk aan error_count + warning_count.

    • Name
      error_count
      Type
      integer
      Description

      Aantal problemen op foutniveau. Fouten worden gegenereerd wanneer het model niet waterdicht is, een niet-positief volume heeft, of niet-manifold randen heeft.

    • Name
      warning_count
      Type
      integer
      Description

      Aantal problemen op waarschuwingsniveau. Waarschuwingen worden gegenereerd wanneer het model gedegenereerde vlakken of gaten bevat.

    • Name
      metrics
      Type
      object
      Description

      Ruwe geometriemetriek geretourneerd door de evaluator.

      • Name
        is_watertight
        Type
        boolean
        Description

        true wanneer de mesh geen randlijnen heeft (d.w.z. gesloten is).

      • Name
        volume
        Type
        number
        Description

        Volume van het model in kubieke meters.

      • Name
        non_manifold_edges
        Type
        integer
        Description

        Aantal niet-manifold randen.

      • Name
        degenerate_faces
        Type
        integer
        Description

        Aantal gedegenereerde vlakken (vlakken met oppervlakte nul of ongeldige vlakken).

      • Name
        holes
        Type
        integer
        Description

        Aantal gaten (randlussen) in de mesh.

    • Name
      evaluated_at
      Type
      timestamp
      Description

      Tijdstempel van wanneer de analyse is berekend, in milliseconden sinds epoch.

  • Name
    consumed_credits
    Type
    integer
    Description

    Altijd 0. Deze endpoint is gratis.

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
}