lowpoly bude vyřazen 30. 10. 2026. Před těmito daty přejděte na jiný model, abyste předešli chybám požadavků.

Analyzovat tisknutelnost API

Analyzujte 3D model z hlediska tisknutelnosti — vodotěsnost, objem, díry, non-manifold hrany a degenerované plochy. Volitelně lze také zkontrolovat tloušťku stěny při velikosti, ve které plánujete tisk.


POST/openapi/v1/print/analyze

Create an Analyze Printability Task

Tento koncový bod vytvoří novou úlohu Analyzovat tisknutelnost. Úloha vyhodnotí 3D model a vrátí metriky jeho tisknutelnosti.

Úloha běží na pozadí. Informace o obvyklé době zpracování najdete v části Processing Times.

Pokud vstupní úloha již má tisknutelnost uloženou v mezipaměti, vrácená úloha je okamžitě připravena a první GET na ni vrátí výsledek analýzy bez průchodu přes worker.

Chcete-li také zkontrolovat tloušťku stěny při velikosti, ve které plánujete tisknout, odešlete printer_type, velikost tisku, nebo obojí. Výsledek je vrácen v printability.thin_walls. Kontrola tloušťky stěny trvá déle, takže úloha obvykle není připravena okamžitě, i když byl model analyzován již dříve.

Parametry

  • Name
    model_url
    Type
    string
    Povinné
    Description

    URL 3D modelu k analýze. Podporované formáty: .glb, .gltf, .obj, .fbx, .stl. Použijte http nebo https URL, nebo base64 data: URL pro GLB (data:model/gltf-binary;base64,...) nebo glTF (data:model/gltf+json;base64,...). Soubory .obj, .fbx a .stl musí být odeslány jako http nebo https URL.

    Maximální velikost souboru: 400 MB pro http nebo https URL, 100 MB pro data: URI.

    Soubor GLB, glTF, FBX nebo OBJ nad 100 MB může mít nejvýše 10 000 000 ploch. Plochy se počítají jako trojúhelníky: čtyřúhelník se počítá jako 2 a síť vykreslená vícekrát se počítá jednou za každou kopii. Nad 100 MB musí být soubor FBX ve formátu binary FBX 7.1 nebo novějším a soubor GLB nebo glTF nesmí používat kompresi Draco.

    URL ke stažení z Meshy (assets.meshy.ai/…?Expires=…&Signature=…) jsou podepsány a přestanou fungovat v čase expires_at dané úlohy; opětovné načtení úlohy je neobnoví. U modelu vygenerovaného pomocí Meshy použijte místo toho input_task_id. Funguje to po dobu, po kterou je zdrojová úloha uchována (viz Uchování assetů). Chcete-li model znovu použít i poté, stáhněte si ho před expires_at a odešlete vlastní kopii.

  • Name
    printer_type
    Type
    string
    Description

    Tiskárna, kterou plánujete použít. Nastaví minimální tloušťku stěny pro kontrolu tloušťky stěny. Výchozí hodnota je fdm, pokud odešlete velikost tisku bez tohoto parametru.

    Dostupné hodnoty:

    • fdm: filament, minimální tloušťka stěny 1,0 mm.
    • sla: pryskyřice, minimální tloušťka stěny 0,8 mm.
    • full_color: full-color, minimální tloušťka stěny 2,0 mm.
  • Name
    intended_print_height_mm
    Type
    number
    Description

    Výška tisku v milimetrech. Rozsah: [1, 1000]. Zaokrouhlena na nejbližší milimetr. Pouze pro vstup GLB.

  • Name
    intended_print_longest_side_mm
    Type
    number
    Description

    Délka nejdelší strany tisku v milimetrech. Rozsah: [1, 1000]. Zaokrouhlena na nejbližší milimetr. Funguje se všemi vstupními formáty.

Návratová hodnota

Vlastnost result v odpovědi obsahuje id nově vytvořené úlohy Analyzovat tisknutelnost.

Způsoby selhání

  • Name
    400 - Bad Request
    Description

    Požadavek byl nepřijatelný. Běžné příčiny:

    • Chybějící parametr: nebyl zadán ani input_task_id, ani model_url.
    • Neplatné UUID: input_task_id není platné UUID.
    • Neplatná URL modelu: model_url je špatně formátovaná, používá nepodporované schéma nebo má nepodporovanou příponu souboru.
    • Soubor modelu je příliš velký: tělo model_url přesáhlo 400 MB (http nebo https URL) nebo 100 MB (data: URI).
    • Příliš mnoho ploch: model_url je soubor GLB, glTF, FBX nebo OBJ nad 100 MB s více než 10 000 000 plochami. Snižte počet ploch a soubor odešlete znovu.
    • ASCII FBX nad 100 MB: model_url je ASCII FBX soubor nad 100 MB. Odešlete jej jako binary FBX nebo GLB.
    • Nečitelný soubor modelu: model_url je nad 100 MB a jeho hlavičku nelze přečíst, například u Draco-komprimovaného GLB nebo glTF, nebo u binárního FBX staršího než 7.1.
    • Hlavička modelu je příliš složitá: model_url je nad 100 MB a jeho hlavička obsahuje příliš mnoho sítí, uzlů nebo záznamů ke kontrole. Snižte počet objektů v souboru a odešlete jej znovu.
    • Soubor modelu se nepodařilo stáhnout: model_url vrátila chybu, nejčastěji proto, že platnost podepsané URL ke stažení z Meshy vypršela. Opětovné načtení úlohy vrátí stejnou URL se stejnou platností, proto odešlete vlastní kopii souboru, nebo použijte input_task_id, dokud je zdrojová úloha stále uchována.
    • Úloha nebyla úspěšná: odkazovaná úloha je stále čekající, probíhá, nebo selhala.
    • Neplatná velikost tisku: intended_print_height_mm nebo intended_print_longest_side_mm je mimo rozsah [1, 1000], nebo byly odeslány obě.
    • Neznámý typ tiskárny: printer_type není fdm, sla ani full_color.
    • Výška u modelu, který není GLB: intended_print_height_mm byl odeslán s model_url, která není .glb. Použijte místo toho intended_print_longest_side_mm.
    • Nelze stanovit velikost tohoto modelu podle výšky: při požadované výšce (nebo výchozí hodnotě 150 mm) by nejdelší strana modelu byla mimo rozsah [1, 1000] mm, model je plochý, nebo jeho velikost nelze určit. Použijte místo toho intended_print_longest_side_mm. U model_url typu .glb a některých úloh input_task_id se toto zjistí až po spuštění úlohy a úloha pak skončí jako FAILED.
    • Nepoužitelná velikost STL: printer_type byl odeslán bez velikosti a vlastní nejdelší strana souboru .stl nelze přečíst nebo je mimo rozsah [1, 1000] mm. Odešlete intended_print_longest_side_mm.
  • Name
    401 - Unauthorized
    Description

    Autentizace selhala. Zkontrolujte prosím svůj API klíč.

  • Name
    404 - Not Found
    Description

    Běžné příčiny:

    • Úloha neexistuje, byla smazána, nebo ji vlastní jiný uživatel.
    • Úloha používá model starší než Meshy 6, nebo její mode nevytváří 3D asset.
    • Podkladový soubor modelu již není dostupný v úložišti.
  • Name
    429 - Too Many Requests
    Description

    Překročili jste svou kvótu čekajících úloh nebo limit rychlosti.

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

Získání úlohy Analyzovat tisknutelnost

Tento koncový bod načte úlohu analýzy tisknutelnosti podle jejího ID.

Parametry

  • Name
    id
    Type
    path
    Description

    ID úlohy analýzy tisknutelnosti, kterou chcete načíst.

Návratová hodnota

Objekt úlohy Analyzovat tisknutelnost. Pole printability je null, dokud úloha nedosáhne stavu SUCCEEDED. Pokud byla zkontrolována tloušťka stěny, printability také obsahuje intended_print a 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

Smazání úlohy Analyzovat tisknutelnost

Tento koncový bod trvale odstraní úlohu analýzy tisknutelnosti a její uložený výsledek. Tato akce je nevratná.

Parametry cesty

  • Name
    id
    Type
    path
    Description

    ID úlohy Analyzovat tisknutelnost, která má být smazána.

Stav úlohy

Úloha, která je stále ve stavu PENDING, je smazána a kredity spotřebované při jejím vytvoření jsou vráceny.

Úlohu, která je již ve stavu IN_PROGRESS, nelze smazat: požadavek je zamítnut s chybou 409 Conflict a úloha dále běží. Kredity za úlohu, kterou již worker začal zpracovávat, nelze vrátit, takže její smazání během běhu by vás stálo kredity i výsledek zároveň. Počkejte, až dosáhne stavu SUCCEEDED, FAILED nebo CANCELED, a poté ji smažte.

Úloha v koncovém stavu (SUCCEEDED, FAILED nebo CANCELED) je smazána bez vrácení kreditů.

Návratové hodnoty

Při úspěchu vrací 200 OK, nebo 409 Conflict, pokud je úloha ve stavu 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

Seznam úloh Analyzovat tisknutelnost

Tento koncový bod umožňuje načíst seznam úloh analýzy tisknutelnosti.

Parametry

Volitelné atributy

  • Name
    page_num
    Type
    integer
    Description

    Číslo stránky pro stránkování. Začíná a výchozí hodnota je 1.

  • Name
    page_size
    Type
    integer
    Description

    Limit velikosti stránky. Výchozí hodnota je 10 položek. Maximální povolená hodnota je 100 položek.

  • Name
    sort_by
    Type
    string
    Description

    Pole, podle kterého se má řadit. Dostupné hodnoty:

    • +created_at: Řazení podle času vytvoření vzestupně.
    • -created_at: Řazení podle času vytvoření sestupně.

Návratová hodnota

Vrací stránkovaný seznam objektů úlohy Analyzovat tisknutelnost.

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 an Analyze Printability Task

Tento koncový bod streamuje aktualizace v reálném čase pro úlohu analýzy tisknutelnosti pomocí Server-Sent Events (SSE).

Parametry

  • Name
    id
    Type
    path
    Description

    Jedinečný identifikátor úlohy analýzy tisknutelnosti, kterou chcete streamovat.

Návratová hodnota

Vrací proud objektů úlohy Analyzovat tisknutelnost formou Server-Sent Events.

Každý snímek obsahuje kompletní objekt úlohy pro danou fázi — stejný tvar, jaký vrací koncový bod Get — takže dokud je úloha ve stavu PENDING nebo IN_PROGRESS, výstupní pole jednoduše ještě nejsou naplněna (null, [] nebo {}) a finished_at je null. Blok printability je odeslán až ve chvíli, kdy úloha dosáhne stavu 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
}

Objekt úlohy Analyzovat tisknutelnost

  • Name
    id
    Type
    string
    Description

    Jedinečný identifikátor úlohy. Ačkoli jako implementační detail používáme pro id úloh k-sortable UUID, neměli byste dělat žádné předpoklady o formátu id.

  • Name
    type
    Type
    string
    Description

    Typ úlohy analyze-printability. Hodnota je print-analyze.

  • Name
    status
    Type
    string
    Description

    Stav úlohy. Možné hodnoty jsou jedna z PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Progress úlohy. Pokud úloha ještě nebyla zahájena, tato vlastnost bude 0. Jakmile úloha uspěje, bude 100.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Počet předcházejících úloh.

  • Name
    created_at
    Type
    timestamp
    Description

    Časové razítko vytvoření úlohy, v milisekundách.

  • Name
    started_at
    Type
    timestamp
    Description

    Časové razítko zahájení úlohy, v milisekundách. Pokud úloha ještě nebyla zahájena, tato vlastnost bude 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Časové razítko dokončení úlohy, v milisekundách. Pokud úloha ještě není dokončena, tato vlastnost bude 0.

  • Name
    expires_at
    Type
    timestamp
    Description

    Časové razítko, kdy výsledek úlohy ze systému vyprší, v milisekundách. 0, pokud úloha ještě není dokončena.

  • Name
    task_error
    Type
    object
    Description

    Informace o chybě, pokud úloha selhala. Tato vlastnost je null, pokud úloha neselhala. Více podrobností najdete v sekci Chyby.

    • Name
      message
      Type
      string
      Description

      Chybová zpráva popisující, co se pokazilo.

  • Name
    printability
    Type
    object
    Description

    Výsledek vyhodnocení tisknutelnosti. null, dokud úloha nedosáhne stavu SUCCEEDED.

    • Name
      _version
      Type
      string
      Description

      Verze schématu výsledku tisknutelnosti. Aktuálně v1.

    • Name
      status
      Type
      string
      Description

      Celkový stav. Jedna z hodnot:

      • healthy: žádné chyby ani varování.
      • warning: alespoň jedno varování, žádné chyby.
      • error: alespoň jedna chyba.
      • unknown: model nebylo možné analyzovat.

      Pokud byla kontrolována tloušťka stěny, jde o horší z výše uvedených kontrol a thin_walls.status. Od nejhoršího po nejlepší: error, warning, unknown, healthy.

    • Name
      issue_count
      Type
      integer
      Description

      Celkový počet problémů, rovný error_count + warning_count.

    • Name
      error_count
      Type
      integer
      Description

      Počet problémů úrovně chyba. Chyby jsou hlášeny, pokud model není vodotěsný, má nekladný objem nebo obsahuje non-manifold hrany. Pokud byla kontrolována tloušťka stěny, stěny, které jsou příliš tenké (thin_walls.status je error), se počítají jako jedna další chyba.

    • Name
      warning_count
      Type
      integer
      Description

      Počet problémů úrovně varování. Varování jsou hlášena, pokud model obsahuje degenerované plochy nebo díry.

    • Name
      metrics
      Type
      object
      Description

      Syrové metriky geometrie vrácené evaluátorem.

      • Name
        is_watertight
        Type
        boolean
        Description

        true, pokud síť nemá žádné okrajové hrany (tj. je uzavřená).

      • Name
        volume
        Type
        number
        Description

        Objem modelu v krychlových metrech.

      • Name
        non_manifold_edges
        Type
        integer
        Description

        Počet non-manifold hran.

      • Name
        degenerate_faces
        Type
        integer
        Description

        Počet degenerovaných ploch (plochy s nulovou plochou nebo neplatné plochy).

      • Name
        holes
        Type
        integer
        Description

        Počet děr (okrajových smyček) v síti.

    • Name
      intended_print
      Type
      object
      Description

      Tiskárna a velikost použité pro kontrolu tloušťky stěny. Přítomno pouze pokud byla tloušťka stěny kontrolována.

      • Name
        printer_type
        Type
        string
        Description

        fdm, sla nebo full_color.

      • Name
        height_mm
        Type
        number
        Description

        Výška tisku v milimetrech, pokud byla velikost tisku určena podle výšky. Jinak null.

      • Name
        longest_side_mm
        Type
        number
        Description

        Nejdelší strana tisku v milimetrech. Pokud je velikost určena podle výšky, vypočítá se z proporcí modelu.

      • Name
        wall_thickness_mm
        Type
        number
        Description

        Minimální tloušťka stěny pro printer_type, v milimetrech. Stěny tenčí než tato hodnota jsou hlášeny jako příliš tenké.

      • Name
        dimensions_mm
        Type
        array
        Description

        Rozměry tisku [width, depth, height] v milimetrech. Výška se může od height_mm lišit o zlomek milimetru. null pro vstup, který není GLB, nebo pokud velikost modelu nelze určit.

    • Name
      thin_walls
      Type
      object
      Description

      Výsledek kontroly tloušťky stěny. Přítomno pouze pokud byla tloušťka stěny kontrolována.

      • Name
        thin_area_ratio
        Type
        number
        Description

        Podíl povrchu, od 0 do 1, který je tenčí než intended_print.wall_thickness_mm. null, pokud model nebylo možné změřit.

      • Name
        has_thin_walls
        Type
        boolean
        Description

        true, pokud je jakákoli část povrchu příliš tenká. Toto může nastavit samotný ostrý roh, proto použijte status k rozhodnutí, zda je potřeba stěny zesílit. null, pokud model nebylo možné změřit.

      • Name
        status
        Type
        string
        Description

        Verdikt tloušťky stěny. Jedna z hodnot:

        • healthy: 5 % nebo méně povrchu je příliš tenkých.
        • error: více než 5 % povrchu je příliš tenkých. Pro zesílení stěn předejte id této úlohy do Opravit tisknutelnost jako input_task_id (pro model_url typu .stl, .fbx nebo .gltf místo toho pošlete soubor jako model_url).
        • unknown: model nebylo možné změřit. Pokud samotná kontrola tloušťky stěny selže, úloha skončí se stavem FAILED.
    • Name
      evaluated_at
      Type
      timestamp
      Description

      Časové razítko výpočtu analýzy, v milisekundách od epochy.

  • Name
    consumed_credits
    Type
    integer
    Description

    Vždy 0. Tento koncový bod je zdarma.

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
}