Auto Split API

किसी 3D मॉडल को अलग-अलग प्रिंट करने योग्य भागों में विभाजित करें — स्वचालित रूप से, आपके द्वारा नामित भागों के अनुसार, या रंग क्षेत्र के अनुसार — वैकल्पिक कनेक्टर्स के साथ; कट से बचे पतले क्षेत्रों को हमेशा मजबूत किया जाता है ताकि हर भाग ठोस रूप से प्रिंट हो सके।


POST/openapi/v1/print/split

Auto Split टास्क बनाएँ

यह एंडपॉइंट एक नया Auto Split टास्क बनाता है। यह टास्क किसी पिछले टास्क के मॉडल को अलग-अलग प्रिंट किए जा सकने वाले हिस्सों में काटता है और सेगमेंटेड मॉडल लौटाता है, जिसमें हर हिस्सा फ़ाइल में अपना खुद का ऑब्जेक्ट होता है।

पैरामीटर

  • Name
    input_task_id
    Type
    string
    आवश्यक
    Description

    उस सफल टास्क की ID जिसके मॉडल को स्प्लिट करना है। समर्थित टास्क प्रकार: इमेज से 3D, मल्टी-इमेज से 3D, टेक्स्ट से 3D (प्रीव्यू), रीमेश, कन्वर्ट, और रीसाइज़। टास्क की स्थिति SUCCEEDED होनी चाहिए, और इसका मॉडल Meshy 6 या Meshy 7 (ai_model meshy-6, meshy-7, या latest) से जनरेट किया गया होना चाहिए। लो-पॉली और Smart Topology (meshy-t2) मॉडल समर्थित नहीं हैं।

  • Name
    mode
    Type
    string
    डिफ़ॉल्ट auto
    Description

    मॉडल को हिस्सों में कैसे बाँटा जाता है।

    उपलब्ध मान:

    • auto: Meshy खुद कट चुनता है। prompt को नज़रअंदाज़ किया जाता है।
    • by_parts: आपके द्वारा prompt में नामित संरचनात्मक हिस्सों के अनुसार काटता है, जैसे सिर, बाहें और धड़।
    • by_color: आपके द्वारा prompt में नामित रंग क्षेत्रों के अनुसार काटता है। इसके लिए ऐसे इनपुट की ज़रूरत होती है जो अपलोड की गई इमेज से जनरेट हुआ हो (इमेज से 3D या मल्टी-इमेज से 3D); अन्य इनपुट 400 के साथ अस्वीकार कर दिए जाते हैं।
केवल तब लागू होता है जब mode = by_parts or by_color
  • Name
    prompt
    Type
    string
    आवश्यक
    Description

    उन हिस्सों का वर्णन करता है जिनमें स्प्लिट करना है, किसी भी भाषा में। Meshy इससे 1 से 10 हिस्सों के नाम पढ़ता है, इसलिए मॉडल का वर्णन करने के बजाय हिस्सों के नाम बताएँ — उदाहरण के लिए split into the figure and the base, या head, torso, left arm, right arm, legs। अधिकतम 600 अक्षर। दो विफलता स्थितियाँ हैं: ऐसा विवरण जो स्प्लिट जैसा तो लगता है पर दो से कम हिस्सों के नाम बताता है (उदाहरण के लिए split into individual parts) 400 के साथ अस्वीकार कर दिया जाता है और कोई शुल्क नहीं लिया जाता; ऐसा विवरण जिसे Meshy बिल्कुल भी नहीं पढ़ पाता, auto पर वापस चला जाता है, टास्क फिर भी चलता है और उसका शुल्क लिया जाता है, और इसके रिस्पॉन्स में prompt_ignored: true होता है।

  • Name
    target_formats
    Type
    array
    डिफ़ॉल्ट ["glb"]
    Description

    वे फॉर्मेट जिनमें स्प्लिट किए गए मॉडल को एक्सपोर्ट करना है। हर फॉर्मेट में हर हिस्सा एक अलग ऑब्जेक्ट होता है। glb हमेशा बनाया और model_urls में लौटाया जाता है; इसके अलावा जो भी फॉर्मेट चाहिए उन्हें सूची में दें।

    उपलब्ध मान: glb, obj, fbx, usdz, blend, 3mf

    3mf स्लाइसर के लिए तैयार किया जाता है: हर हिस्से के लिए एक ऑब्जेक्ट, हर एक अपने खुद के फिलामेंट स्लॉट पर, ताकि Bambu Studio फ़ाइल को अलग-अलग रंग वाले, अलग-अलग चुने जा सकने वाले हिस्सों के रूप में खोले (आर्काइव में एक Bambu Studio प्रोजेक्ट कॉन्फ़िगरेशन होता है; अन्य स्लाइसर सिर्फ़ ज्यामिति पढ़ते हैं)। Meshy के अन्य प्रिंट फॉर्मेट की तरह यह भी मिलीमीटर में होता है, और चूँकि यह एंडपॉइंट कोई लक्ष्य आकार नहीं लेता, इसलिए पूरे मॉडल को इस तरह स्केल किया जाता है कि उसकी सबसे लंबी भुजा 150 मिमी हो — यही सीमा अन्य प्रिंट-फॉर्मेट एक्सपोर्ट में भी इस्तेमाल होती है, जिसे हर मुख्यधारा के बिल्ड प्लेट में फिट होने के लिए चुना गया है। layout: "on_plate" के साथ यह सीमा पूरी लेआउट की गई प्लेट पर लागू होती है, ताकि फ़ाइल स्लाइस करने के लिए तैयार हो; assembled के साथ, हिस्से वहीं रहते हैं जहाँ सोर्स मॉडल में थे और आप उन्हें स्लाइसर में व्यवस्थित करते हैं।

  • Name
    layout
    Type
    string
    डिफ़ॉल्ट assembled
    Description

    हर आउटपुट फॉर्मेट में, और थंबनेल में, हिस्सों को कैसे व्यवस्थित किया जाता है।

    उपलब्ध मान:

    • assembled: हिस्से वहीं रहते हैं जहाँ सोर्स मॉडल में थे।
    • on_plate: हिस्सों को समतल बिछाकर बिल्ड प्लेट पर फैला दिया जाता है, स्लाइस करने के लिए तैयार — यह वही व्यवस्था है जो वेब ऐप के On Plate व्यू में होती है।

    दोनों लेआउट में एक्सपोर्ट की गई फ़ाइलों में प्रति हिस्सा एक ही ऑब्जेक्ट होता है और कुछ नहीं: कट से बची कोई सिकुड़ी हुई पतली परत या बिंदु जैसा टुकड़ा एक्सपोर्ट से पहले हटा दिया जाता है, ताकि फ़ाइल में मिलने वाला हर ऑब्जेक्ट प्रिंट करने योग्य हो।

  • Name
    connectors
    Type
    boolean
    डिफ़ॉल्ट false
    Description

    हर कट पर मोर्टाइज़-एंड-टेनन कनेक्टर जोड़ता है ताकि प्रिंट किए गए हिस्से आपस में फिट हो सकें।

केवल तब लागू होता है जब connectors = true
  • Name
    connector_type
    Type
    string
    डिफ़ॉल्ट cube
    Description

    हर कट सतह पर कनेक्टर का आकार।

    उपलब्ध मान: cube, cylinder

  • Name
    connector_size
    Type
    number
    डिफ़ॉल्ट 0.5
    Description

    कट सतह के सापेक्ष कनेक्टर का आकार।

    मान्य सीमा: 0.1 से 0.8

  • Name
    connector_height
    Type
    number
    डिफ़ॉल्ट 0.1
    Description

    कनेक्टर कट सतह से कितनी दूर तक फैलता है, कट सतह के सापेक्ष।

    मान्य सीमा: 0.1 से 0.8

रिटर्न

रिस्पॉन्स की result प्रॉपर्टी में नए बनाए गए Auto Split टास्क की id होती है।

विफलता की स्थितियाँ

  • Name
    400 - Bad Request
    Description

    अनुरोध स्वीकार्य नहीं था। सामान्य कारण:

    • prompt गायब है: जब mode, by_parts या by_color हो, तो prompt आवश्यक है।
    • Prompt दो से कम हिस्सों के नाम बताता है: by_parts / by_color के लिए कम से कम दो नामित हिस्सों की ज़रूरत है (उदाहरण के लिए head, torso, base); split into individual parts जैसा सामान्य निर्देश अस्वीकार कर दिया जाता है। कोई शुल्क नहीं लिया जाता।
    • असमर्थित इनपुट टास्क: input_task_id को किसी समर्थित प्रकार के सफल टास्क को संदर्भित करना चाहिए, जो Meshy 6 या Meshy 7 से जनरेट किया गया हो।
    • टेक्सचर्ड इनपुट: इनपुट मॉडल में टेक्सचर हैं। फ़िलहाल केवल बिना टेक्सचर वाले मॉडल समर्थित हैं।
    • कोई संदर्भ इमेज नहीं: by_color के लिए ऐसे इनपुट की ज़रूरत होती है जो अपलोड की गई इमेज से जनरेट हुआ हो।
    • असमर्थित फॉर्मेट: target_formats में stl शामिल है।
    • सीमा से बाहर कनेक्टर: connector_size या connector_height, 0.1 से 0.8 की सीमा से बाहर है।
  • Name
    401 - Unauthorized
    Description

    प्रमाणीकरण विफल रहा। कृपया अपनी API की जाँच करें।

  • Name
    402 - Payment Required
    Description

    इस टास्क को पूरा करने के लिए पर्याप्त क्रेडिट नहीं हैं।

  • Name
    404 - Not Found
    Description

    input_task_id मौजूद नहीं है या आपके अकाउंट से संबंधित नहीं है।

  • Name
    429 - Too Many Requests
    Description

    आपने अपनी रेट लिमिट पार कर ली है। by_parts और by_color अनुरोध भी प्रति अकाउंट प्रति मिनट 12 अनुरोधों की एक साझा prompt-पार्सिंग सीमा साझा करते हैं।

  • Name
    503 - Service Unavailable
    Description

    Prompt-आधारित स्प्लिटिंग (by_parts और by_color) अस्थायी रूप से अनुपलब्ध है। बाद में फिर से प्रयास करें, या mode: "auto" का उपयोग करें, जो इससे प्रभावित नहीं है। कोई शुल्क नहीं लिया जाता।

Request

POST
/openapi/v1/print/split
# Simple request: let Meshy choose the cuts
curl https://api.meshy.ai/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
  }'

# Advanced request: name the parts, add connectors, export glb and obj
curl https://api.meshy.ai/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "mode": "by_parts",
    "prompt": "split into the figure and the base",
    "target_formats": ["glb", "obj"],
    "layout": "on_plate",
    "connectors": true,
    "connector_type": "cylinder",
    "connector_size": 0.4
  }'

Response

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

GET/openapi/v1/print/split/:id

Auto Split टास्क प्राप्त करें

यह एंडपॉइंट किसी Auto Split टास्क को उसकी ID के द्वारा प्राप्त करता है।

पैरामीटर

  • Name
    id
    Type
    path
    Description

    प्राप्त किए जाने वाले Auto Split टास्क की ID।

रिटर्न

Auto Split टास्क ऑब्जेक्ट।

Request

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

Response

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-split",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
  "part_count": 4,
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000082000,
  "task_error": null,
  "consumed_credits": 10
}

DELETE/openapi/v1/print/split/:id

Auto Split टास्क को हटाएँ

यह एंडपॉइंट किसी Auto Split टास्क को स्थायी रूप से हटा देता है, जिसमें उससे जुड़े सभी मॉडल और डेटा शामिल हैं। यह कार्रवाई अपरिवर्तनीय है।

Path Parameters

  • Name
    id
    Type
    path
    Description

    हटाए जाने वाले Auto Split टास्क का ID।

Returns

सफल होने पर 200 OK लौटाता है।

Request

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

Response

// Returns 200 Ok on success.

GET/openapi/v1/print/split

Auto Split टास्क की सूची

यह एंडपॉइंट आपको Auto Split टास्क की सूची प्राप्त करने की सुविधा देता है।

पैरामीटर

वैकल्पिक विशेषताएँ

  • Name
    page_num
    Type
    integer
    Description

    पेजिनेशन के लिए पेज नंबर। शुरुआत और डिफ़ॉल्ट 1 है।

  • Name
    page_size
    Type
    integer
    Description

    पेज साइज़ की सीमा। डिफ़ॉल्ट रूप से 10 आइटम। अधिकतम अनुमत 100 आइटम है; इससे बड़े मान 100 पर सीमित कर दिए जाते हैं।

  • Name
    sort_by
    Type
    string
    Description

    जिस फ़ील्ड से सॉर्ट करना है। उपलब्ध मान:

    • +created_at: निर्माण समय के आधार पर आरोही क्रम में सॉर्ट करें।
    • -created_at: निर्माण समय के आधार पर अवरोही क्रम में सॉर्ट करें।

रिटर्न

यह The Auto Split Task Objects की एक पेजिनेटेड सूची लौटाता है।

Request

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

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "print-split",
    "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***"
    },
    "thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
    "part_count": 4,
    "progress": 100,
    "status": "SUCCEEDED",
    "preceding_tasks": 0,
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000082000,
    "task_error": null,
    "consumed_credits": 10
  }
]

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

Auto Split टास्क को स्ट्रीम करें

यह एंडपॉइंट Server-Sent Events (SSE) का उपयोग करके किसी Auto Split टास्क के लिए रीयल-टाइम अपडेट स्ट्रीम करता है।

पैरामीटर

  • Name
    id
    Type
    path
    Description

    स्ट्रीम करने के लिए Auto Split टास्क का यूनीक आइडेंटिफ़ायर।

रिटर्न

Server-Sent Events के रूप में The Auto Split Task Objects की एक स्ट्रीम लौटाता है।

हर message इवेंट पूरा टास्क ऑब्जेक्ट ले जाता है, जैसा कि Retrieve an Auto Split Task से लौटाया जाता है, जिसमें consumed_credits, टाइमस्टैम्प और prompt_ignored शामिल हैं; जब टास्क PENDING या IN_PROGRESS होता है, तो फ़्रेम्स के बीच बदलने वाले फ़ील्ड्स progress, status, started_at और preceding_tasks होते हैं, और SUCCEEDED तक पहुँचने पर model_urls, thumbnail_url, part_count और parts दिखाई देते हैं। एक error इवेंट केवल status_code और message ले जाता है, इसलिए status पढ़ने से पहले इवेंट के नाम के आधार पर शाखा (branch) करें।

Request

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
curl -N https://api.meshy.ai/openapi/v1/print/split/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 (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "type": "print-split",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/preview.png?Expires=***",
  "part_count": 4,
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000082000,
  "task_error": null,
  "consumed_credits": 10
}

Auto Split टास्क ऑब्जेक्ट

एक Auto Split टास्क में केवल नीचे दिए गए properties होती हैं। अन्य टास्क ऑब्जेक्ट में शामिल जनरेशन-prompt फ़ील्ड (name, object_prompt, texture_prompt और अन्य), अकेला model_url, और texture_urls किसी split के लिए कभी भी भरे नहीं जाते और न ही लौटाए जाते हैं। टास्क चलने के दौरान भरने वाली properties (thumbnail_url, model_urls, टाइमस्टैंप) हमेशा मौजूद रहती हैं, जब तक इनमें कोई मान न हो तब तक ये खाली रहती हैं, इसलिए PENDING और SUCCEEDED के बीच keys का सेट नहीं बदलता।

  • Name
    id
    Type
    string
    Description

    टास्क के लिए यूनिक आइडेंटिफ़ायर। हालांकि हम इम्प्लीमेंटेशन डिटेल के रूप में टास्क id के लिए k-sortable UUID का उपयोग करते हैं, फिर भी आपको id के फॉर्मेट के बारे में कोई धारणा नहीं बनानी चाहिए।

  • Name
    type
    Type
    string
    Description

    टास्क का टाइप। इसका मान print-split होता है।

  • Name
    model_urls
    Type
    object
    Description

    स्प्लिट किए गए मॉडल के लिए डाउनलोड करने योग्य URLs, प्रत्येक अनुरोधित फॉर्मेट के लिए एक। फ़ाइल में प्रत्येक पार्ट एक अलग ऑब्जेक्ट होता है। यदि किसी फॉर्मेट का अनुरोध नहीं किया गया था तो उसकी property को छोड़ दिया जाएगा।

    • Name
      glb
      Type
      string
      Description

      GLB फॉर्मेट में स्प्लिट किए गए मॉडल का डाउनलोड करने योग्य URL।

    • Name
      obj
      Type
      string
      Description

      OBJ फॉर्मेट में स्प्लिट किए गए मॉडल का डाउनलोड करने योग्य URL।

    • Name
      fbx
      Type
      string
      Description

      FBX फॉर्मेट में स्प्लिट किए गए मॉडल का डाउनलोड करने योग्य URL।

    • Name
      usdz
      Type
      string
      Description

      USDZ फॉर्मेट में स्प्लिट किए गए मॉडल का डाउनलोड करने योग्य URL।

    • Name
      blend
      Type
      string
      Description

      Blender फॉर्मेट में स्प्लिट किए गए मॉडल का डाउनलोड करने योग्य URL।

    • Name
      3mf
      Type
      string
      Description

      3MF फॉर्मेट में स्प्लिट किए गए मॉडल का डाउनलोड करने योग्य URL: प्रति पार्ट एक ऑब्जेक्ट, प्रत्येक अपने ही फ़िलामेंट स्लॉट पर, मिलीमीटर में, इस तरह स्केल किया गया कि सबसे लंबा किनारा 150 mm हो, साथ ही एक Bambu Studio प्रोजेक्ट कॉन्फ़िगरेशन के साथ।

  • Name
    thumbnail_url
    Type
    string
    Description

    अनुरोधित layout में, प्रत्येक पार्ट को अलग रंग में दिखाते हुए, स्प्लिट किए गए मॉडल के रेंडर किए गए प्रीव्यू का डाउनलोड करने योग्य URL।

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true तब होता है जब by_parts या by_color अनुरोध के prompt में किसी पार्ट का नाम नहीं लिया गया था, इसलिए Meshy ने मॉडल को अपने-आप स्प्लिट कर दिया — परिणाम में पार्ट के नाम Meshy के हैं, आपके नहीं। यह PENDING से लेकर तब तक मौजूद रहता है। auto टास्क के लिए और जब भी prompt का पालन किया गया हो, इसे छोड़ दिया जाता है।

  • Name
    part_count
    Type
    integer
    Description

    स्प्लिट किए गए मॉडल में प्रिंट करने योग्य पार्ट्स की संख्या — एक्सपोर्ट की गई फ़ाइलों में प्रत्येक ऑब्जेक्ट के लिए एक। जो ढहे हुए (collapsed) पतले हिस्से segmentation प्रिंट करने योग्य टुकड़े में नहीं बदल सका, उन्हें एक्सपोर्ट से पहले फ़ाइलों से हटा दिया जाता है और इन्हें गिना नहीं जाता।

  • Name
    progress
    Type
    integer
    Description

    टास्क की progress। यदि टास्क अभी शुरू नहीं हुआ है, तो यह property 0 होगी। एक बार टास्क सफल हो जाने पर, यह 100 हो जाएगी।

  • Name
    status
    Type
    string
    Description

    टास्क की स्थिति। संभावित मान PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED में से एक है।

  • Name
    preceding_tasks
    Type
    integer
    Description

    पूर्ववर्ती टास्क की संख्या।

  • Name
    created_at
    Type
    timestamp
    Description

    टास्क कब बनाया गया, इसका टाइमस्टैंप, मिलीसेकंड में।

  • Name
    started_at
    Type
    timestamp
    Description

    टास्क कब शुरू हुआ, इसका टाइमस्टैंप, मिलीसेकंड में। यदि टास्क अभी शुरू नहीं हुआ है, तो यह property 0 होगी।

  • Name
    finished_at
    Type
    timestamp
    Description

    टास्क कब पूरा हुआ, इसका टाइमस्टैंप, मिलीसेकंड में। यदि टास्क अभी पूरा नहीं हुआ है, तो यह property 0 होगी।

  • Name
    task_error
    Type
    object
    Description

    असफल टास्क के लिए एरर विवरण। पूरे task_error ऑब्जेक्ट रेफ़रेंस के लिए एरर देखें।

  • Name
    consumed_credits
    Type
    integer
    Description

    इस टास्क द्वारा उपयोग किए गए क्रेडिट की संख्या। यह हमेशा मौजूद रहती है: टास्क स्वीकार हो जाने के बाद 10, और FAILED टास्क के लिए 0 क्योंकि विफलता पर शुल्क वापस कर दिया जाता है। टास्क को PENDING रहते हुए ही डिलीट करने पर भी उसका शुल्क वापस कर दिया जाता है।

The Auto Split Task Object

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-split",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
  "part_count": 4,
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000082000,
  "task_error": null,
  "consumed_credits": 10
}