lowpoly verrà ritirato il 30 ott 2026. Cambia modello prima di queste date per evitare errori nelle richieste.

API Analizza stampabilità

Analizza un modello 3D per la stampabilità — tenuta stagna, volume, fori, spigoli non manifold e facce degenerate. Facoltativamente, verifica anche lo spessore parete nella dimensione in cui prevedi di stampare.


POST/openapi/v1/print/analyze

Creare un'attività di Analizza stampabilità

Questo endpoint crea una nuova attività di analisi della stampabilità. L'attività valuta un modello 3D e restituisce le relative metriche di stampabilità.

L'attività viene eseguita in background. Per i tempi di esecuzione tipici, consulta Tempi di elaborazione.

Se l'attività di input ha già una stampabilità memorizzata nella cache, l'attività restituita è immediatamente pronta e la prima GET su di essa restituirà il risultato dell'analisi senza passare attraverso il worker.

Per verificare anche lo spessore parete alla dimensione con cui intendi stampare, invia printer_type, una dimensione di stampa, o entrambi. Il risultato viene restituito in printability.thin_walls. La verifica dello spessore parete richiede più tempo, quindi l'attività solitamente non è pronta subito, anche se il modello è già stato analizzato in precedenza.

Parametri

  • Name
    model_url
    Type
    string
    Obbligatorio
    Description

    URL di un modello 3D da analizzare. Formati supportati: .glb, .gltf, .obj, .fbx, .stl. Dimensione massima del file: 100 MB. Deve utilizzare http, https, oppure un URL data: (gli URL data bypassano i controlli sull'estensione).

    Gli URL di download di Meshy (assets.meshy.ai/…?Expires=…&Signature=…) sono firmati e smettono di funzionare alla expires_at dell'attività; recuperare nuovamente l'attività non li rinnova. Per un modello generato con Meshy, invia invece input_task_id. Funziona finché l'attività di origine viene conservata (vedi Conservazione degli asset). Per riutilizzare un modello dopo tale termine, scaricalo prima di expires_at e invia una tua copia.

  • Name
    printer_type
    Type
    string
    Description

    La stampante che intendi utilizzare. Imposta lo spessore parete minimo per il controllo dello spessore parete. Il valore predefinito è fdm quando invii una dimensione di stampa senza specificarlo.

    Valori disponibili:

    • fdm: filamento, spessore parete minimo 1,0 mm.
    • sla: resina, spessore parete minimo 0,8 mm.
    • full_color: a colori, spessore parete minimo 2,0 mm.
  • Name
    intended_print_height_mm
    Type
    number
    Description

    Altezza della stampa, in millimetri. Intervallo: [1, 1000]. Arrotondato al millimetro più vicino. Solo per input GLB.

  • Name
    intended_print_longest_side_mm
    Type
    number
    Description

    Lunghezza del lato più lungo della stampa, in millimetri. Intervallo: [1, 1000]. Arrotondato al millimetro più vicino. Funziona con qualsiasi formato di input.

Valori restituiti

La proprietà result della risposta contiene l'id della nuova attività di analisi della stampabilità appena creata.

Modalità di errore

  • Name
    400 - Bad Request
    Description

    La richiesta non era accettabile. Cause comuni:

    • Parametro mancante: non è stato fornito né input_task_id né model_url.
    • UUID non valido: input_task_id non è un UUID valido.
    • URL del modello non valido: model_url è malformato, utilizza uno schema non supportato, oppure ha un'estensione file non supportata.
    • File del modello troppo grande: il corpo di model_url ha superato i 100 MB.
    • Impossibile scaricare il file del modello: model_url ha restituito un errore, il più delle volte perché un URL di download firmato di Meshy è scaduto. Recuperare nuovamente l'attività restituisce lo stesso URL con la stessa scadenza, quindi invia una tua copia del file, oppure usa input_task_id finché l'attività di origine è ancora conservata.
    • Attività non completata con successo: l'attività referenziata è ancora in sospeso, in corso, oppure non riuscita.
    • Dimensione di stampa non valida: intended_print_height_mm o intended_print_longest_side_mm è al di fuori di [1, 1000], oppure sono stati inviati entrambi.
    • Tipo di stampante sconosciuto: printer_type non è fdm, sla o full_color.
    • Altezza su un modello non GLB: intended_print_height_mm è stato inviato con un model_url che non è .glb. Usa invece intended_print_longest_side_mm.
    • Impossibile dimensionare questo modello in base all'altezza: all'altezza richiesta (o al valore predefinito di 150 mm), il lato più lungo del modello risulterebbe al di fuori di [1, 1000] mm, il modello è piatto, oppure la sua dimensione non può essere determinata. Usa invece intended_print_longest_side_mm. Per un model_url .glb e per alcune attività input_task_id, questo viene rilevato solo dopo l'avvio dell'attività, e l'attività termina con FAILED anziché con un errore immediato.
    • Dimensione STL inutilizzabile: printer_type è stato inviato senza una dimensione, e il lato più lungo del file .stl stesso non può essere letto oppure è al di fuori di [1, 1000] mm. Invia intended_print_longest_side_mm.
  • Name
    401 - Unauthorized
    Description

    Autenticazione non riuscita. Controlla la tua chiave API.

  • Name
    403 - Forbidden
    Description

    L'attività esiste ma appartiene a un altro utente.

  • Name
    404 - Not Found
    Description

    Cause comuni:

    • L'attività non esiste o è stata eliminata.
    • L'attività utilizza un modello precedente a Meshy 6, oppure il suo mode non produce un asset 3D.
    • Il file del modello sottostante non è più disponibile nello storage.
  • Name
    429 - Too Many Requests
    Description

    Hai superato la quota di attività in sospeso o il limite di frequenza.

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

# Also check wall thickness for a 100 mm tall SLA print
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",
    "printer_type": "sla",
    "intended_print_height_mm": 100
  }'

Response

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

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

Recuperare un task di Analizza stampabilità

Questo endpoint recupera un task di analisi della stampabilità tramite il suo ID.

Parametri

  • Name
    id
    Type
    path
    Description

    L'ID del task di analisi della stampabilità da recuperare.

Restituisce

L'oggetto Task di Analizza stampabilità. Il campo printability è null finché il task non raggiunge lo stato SUCCEEDED. Quando è stato verificato lo spessore parete, printability include anche intended_print e thin_walls.

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
}

Response (wall thickness checked)

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000012000,
  "expires_at": 1715725412000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "error",
    "issue_count": 2,
    "error_count": 1,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "intended_print": {
      "printer_type": "sla",
      "height_mm": 100,
      "longest_side_mm": 118,
      "wall_thickness_mm": 0.8,
      "dimensions_mm": [118, 72.41, 99.87]
    },
    "thin_walls": {
      "thin_area_ratio": 0.083,
      "has_thin_walls": true,
      "status": "error"
    },
    "evaluated_at": 1700000012000
  },
  "consumed_credits": 0
}

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

Elimina un'attività di Analizza stampabilità

Questo endpoint elimina definitivamente un'attività di analisi della stampabilità e il relativo risultato memorizzato nella cache. Questa azione è irreversibile.

Parametri del percorso

  • Name
    id
    Type
    path
    Description

    L'ID dell'attività di analisi della stampabilità da eliminare.

Stato dell'attività

Un'attività ancora in stato PENDING viene eliminata e i crediti consumati al momento della creazione vengono rimborsati.

Un'attività già in stato IN_PROGRESS non può essere eliminata: la richiesta viene rifiutata con 409 Conflict e l'attività continua a essere eseguita. I crediti per un'attività che il worker ha già iniziato a elaborare non sono rimborsabili, quindi eliminarla a metà esecuzione ti farebbe perdere sia i crediti che il risultato. Attendi che raggiunga lo stato SUCCEEDED, FAILED o CANCELED, quindi eliminala.

Un'attività in uno stato finale (SUCCEEDED, FAILED o CANCELED) viene eliminata senza rimborso.

Restituisce

Restituisce 200 OK in caso di successo, oppure 409 Conflict quando l'attività è IN_PROGRESS.

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

List Analyze Printability Tasks

Questo endpoint consente di recuperare un elenco di task di Analizza stampabilità.

Parametri

Attributi opzionali

  • Name
    page_num
    Type
    integer
    Description

    Numero di pagina per la paginazione. Inizia e ha come valore predefinito 1.

  • Name
    page_size
    Type
    integer
    Description

    Limite di dimensione della pagina. Il valore predefinito è 10 elementi. Il massimo consentito è 100 elementi.

  • Name
    sort_by
    Type
    string
    Description

    Campo su cui ordinare. Valori disponibili:

    • +created_at: Ordina per data di creazione in ordine crescente.
    • -created_at: Ordina per data di creazione in ordine decrescente.

Restituisce

Restituisce un elenco paginato di Oggetti Task di Analizza stampabilità.

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

Analizza stampabilità in streaming di un task

Questo endpoint trasmette in streaming gli aggiornamenti in tempo reale di un task di analisi stampabilità utilizzando Server-Sent Events (SSE).

Parametri

  • Name
    id
    Type
    path
    Description

    Identificatore univoco del task di analisi stampabilità da trasmettere in streaming.

Restituisce

Restituisce uno stream di oggetti Task di analisi stampabilità come Server-Sent Events.

Ogni frame contiene l'oggetto task completo relativo allo stadio corrente — la stessa struttura restituita dall'endpoint Get — quindi mentre il task è PENDING o IN_PROGRESS i campi di output semplicemente non sono ancora popolati (null, [] o {}) e finished_at è null. Il blocco printability viene inviato solo quando il task raggiunge lo stato 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.
// 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
}

L'oggetto Task Analizza stampabilità

  • Name
    id
    Type
    string
    Description

    Identificatore univoco del task. Sebbene venga utilizzato un UUID k-sortable per gli id dei task come dettaglio implementativo, non dovresti fare alcuna assunzione sul formato dell'id.

  • Name
    type
    Type
    string
    Description

    Tipo del task analyze-printability. Il valore è print-analyze.

  • Name
    status
    Type
    string
    Description

    Stato del task. I possibili valori sono uno tra PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Progress del task. Se il task non è ancora iniziato, questa proprietà sarà 0. Una volta che il task è andato a buon fine, diventerà 100.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Il conteggio dei task precedenti.

  • Name
    created_at
    Type
    timestamp
    Description

    Timestamp di quando il task è stato creato, in millisecondi.

  • Name
    started_at
    Type
    timestamp
    Description

    Timestamp di quando il task è stato avviato, in millisecondi. Se il task non è ancora iniziato, questa proprietà sarà 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Timestamp di quando il task è terminato, in millisecondi. Se il task non è ancora terminato, questa proprietà sarà 0.

  • Name
    expires_at
    Type
    timestamp
    Description

    Timestamp di quando il risultato del task scadrà dal sistema, in millisecondi. 0 se il task non è ancora terminato.

  • Name
    task_error
    Type
    object
    Description

    Informazioni sull'errore se il task è fallito. Questa proprietà è null se il task non è fallito. Vedi Errori per maggiori dettagli.

    • Name
      message
      Type
      string
      Description

      Messaggio di errore che descrive cosa è andato storto.

  • Name
    printability
    Type
    object
    Description

    Risultato della valutazione di stampabilità. null finché il task non raggiunge lo stato SUCCEEDED.

    • Name
      _version
      Type
      string
      Description

      Versione dello schema del risultato di stampabilità. Attualmente v1.

    • Name
      status
      Type
      string
      Description

      Stato complessivo. Uno tra:

      • healthy: nessun errore e nessun avviso.
      • warning: almeno un avviso, nessun errore.
      • error: almeno un errore.
      • unknown: il modello non ha potuto essere analizzato.

      Quando lo spessore parete è stato verificato, questo è il peggiore tra i controlli sopra e thin_walls.status. Dal peggiore al migliore: error, warning, unknown, healthy.

    • Name
      issue_count
      Type
      integer
      Description

      Conteggio totale dei problemi, pari a error_count + warning_count.

    • Name
      error_count
      Type
      integer
      Description

      Numero di problemi di livello errore. Gli errori vengono generati quando il modello non è a tenuta stagna (watertight), ha volume non positivo, oppure presenta spigoli non manifold. Quando lo spessore parete è stato verificato, le pareti troppo sottili (thin_walls.status è error) contano come un errore aggiuntivo.

    • Name
      warning_count
      Type
      integer
      Description

      Numero di problemi di livello avviso. Gli avvisi vengono generati quando il modello contiene facce degenerate o fori.

    • Name
      metrics
      Type
      object
      Description

      Metriche grezze della geometria restituite dal valutatore.

      • Name
        is_watertight
        Type
        boolean
        Description

        true quando la mesh non ha spigoli di confine (cioè è chiusa).

      • Name
        volume
        Type
        number
        Description

        Volume del modello in metri cubi.

      • Name
        non_manifold_edges
        Type
        integer
        Description

        Conteggio degli spigoli non manifold.

      • Name
        degenerate_faces
        Type
        integer
        Description

        Conteggio delle facce degenerate (facce con area zero o non valide).

      • Name
        holes
        Type
        integer
        Description

        Conteggio dei fori (loop di confine) nella mesh.

    • Name
      intended_print
      Type
      object
      Description

      La stampante e la dimensione utilizzate dal controllo dello spessore parete. Presente solo quando lo spessore parete è stato verificato.

      • Name
        printer_type
        Type
        string
        Description

        fdm, sla, o full_color.

      • Name
        height_mm
        Type
        number
        Description

        L'altezza di stampa in millimetri, se la stampa è stata dimensionata in base all'altezza. Altrimenti null.

      • Name
        longest_side_mm
        Type
        number
        Description

        Il lato più lungo della stampa in millimetri. Quando dimensionato in base all'altezza, viene calcolato a partire dalle proporzioni del modello.

      • Name
        wall_thickness_mm
        Type
        number
        Description

        Lo spessore parete minimo per printer_type, in millimetri. Le pareti più sottili di questo valore vengono segnalate come troppo sottili.

      • Name
        dimensions_mm
        Type
        array
        Description

        Le dimensioni [width, depth, height] della stampa in millimetri. L'altezza può differire da height_mm di una frazione di millimetro. null per input non-GLB, oppure se la dimensione del modello non può essere determinata.

    • Name
      thin_walls
      Type
      object
      Description

      Il risultato relativo allo spessore parete. Presente solo quando lo spessore parete è stato verificato.

      • Name
        thin_area_ratio
        Type
        number
        Description

        Quota della superficie, da 0 a 1, più sottile di intended_print.wall_thickness_mm. null se il modello non ha potuto essere misurato.

      • Name
        has_thin_walls
        Type
        boolean
        Description

        true se una qualsiasi parte della superficie è troppo sottile. Anche solo gli angoli acuti possono far scattare questo valore, quindi usa status per decidere se le pareti devono essere ispessite. null se il modello non ha potuto essere misurato.

      • Name
        status
        Type
        string
        Description

        Il verdetto sullo spessore parete. Uno tra:

        • healthy: il 5% o meno della superficie è troppo sottile.
        • error: più del 5% della superficie è troppo sottile. Per ispessire le pareti, passa l'id di questo task a Ripara stampabilità come input_task_id (per un model_url .stl, .fbx, o .gltf, invia invece il file come model_url).
        • unknown: il modello non ha potuto essere misurato. Se il controllo dello spessore parete stesso fallisce, il task termina come FAILED.
    • Name
      evaluated_at
      Type
      timestamp
      Description

      Timestamp di quando l'analisi è stata calcolata, in millisecondi dall'epoch.

  • Name
    consumed_credits
    Type
    integer
    Description

    Sempre 0. Questo endpoint è gratuito.

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
}

The Analyze Printability Task Object (wall thickness checked)

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-analyze",
  "status": "SUCCEEDED",
  "progress": 100,
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000012000,
  "expires_at": 1715725412000,
  "task_error": null,
  "printability": {
    "_version": "v1",
    "status": "error",
    "issue_count": 2,
    "error_count": 1,
    "warning_count": 1,
    "metrics": {
      "is_watertight": true,
      "volume": 1.316167354292668,
      "non_manifold_edges": 0,
      "degenerate_faces": 43242,
      "holes": 0
    },
    "intended_print": {
      "printer_type": "sla",
      "height_mm": 100,
      "longest_side_mm": 118,
      "wall_thickness_mm": 0.8,
      "dimensions_mm": [118, 72.41, 99.87]
    },
    "thin_walls": {
      "thin_area_ratio": 0.083,
      "has_thin_walls": true,
      "status": "error"
    },
    "evaluated_at": 1700000012000
  },
  "consumed_credits": 0
}