lowpoly 30 अक्टू॰ 2026 को बंद हो जाएगा। अनुरोध त्रुटियों से बचने के लिए इन तारीखों से पहले मॉडल बदल लें। सभी बहिष्करण देखें

Creative Lab Fidget Pixel API

किसी फ़ोटो को दो चरणों में एक मल्टी-कलर, 3D-प्रिंट करने योग्य पिक्सेल-आर्ट फ़िजेट बोर्ड में बदलें। एक प्रोटोटाइप टास्क फ़ोटो को पिक्सेल-आर्ट इमेज में बदलता है। एक बिल्ड टास्क उस इमेज को एक ही 3MF फ़ाइल में परस्पर जुड़ने वाले टुकड़ों में बदलता है, और प्रोटोटाइप टास्क की ID को input_task_id के रूप में लेता है।

  • POST /openapi/creative-lab/fidget-pixel/v1/prototype
  • POST /openapi/creative-lab/fidget-pixel/v1/build

दोनों POST endpoints के लिए पेड प्लान आवश्यक है। फ्री-प्लान अकाउंट से किया गया रिक्वेस्ट 402 लौटाता है।


POST/openapi/creative-lab/fidget-pixel/v1/prototype

Fidget Pixel प्रोटोटाइप टास्क बनाएं

एक फोटो से एक पिक्सेल-आर्ट इमेज जनरेट करता है। पीसेस बनाने के लिए, इस टास्क की ID को बिल्ड एंडपॉइंट में input_task_id के रूप में पास करें। टास्क के फ़ील्ड्स के लिए, The Fidget Pixel prototype task object देखें।

अगर आपको इमेज पसंद नहीं है, तो एक और प्रोटोटाइप टास्क बनाएं। हर टास्क अलग से चार्ज किया जाता है।

Request

POST
/openapi/creative-lab/fidget-pixel/v1/prototype
# Stage 1: pixelize the source photo
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "image_url": "<your publicly accessible image url or base64-encoded data URI>",
    "type": "person"
  }'

Response

{
  "result": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7"
}

पैरामीटर

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

    वह फोटो जिसे पिक्सेल आर्ट में बदलना है, एक सार्वजनिक URL या एक Data URI (data:image/jpeg;base64,<your base64-encoded image data>) के रूप में।

    इमेज अधिकतम 20 MB की एक JPG, JPEG, PNG, या WebP फ़ाइल होनी चाहिए। Meshy फॉर्मेट को इमेज डेटा से डिटेक्ट करता है, URL में फ़ाइल एक्सटेंशन से नहीं। बिना एक्सटेंशन वाला URL भी काम करता है, और Meshy रीडायरेक्ट्स को फॉलो करता है।

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

    फोटो में क्या दिखाया गया है, जो पिक्सेल-आर्ट स्टाइल सेट करता है। दोनों स्टाइल साफ़ तौर पर अलग दिखते हैं। कोई भी अन्य वैल्यू 400 रिटर्न करती है।

    उपलब्ध वैल्यूज़:

    • person: एक व्यक्ति, पोर्ट्रेट या फुल-बॉडी फोटो में। Meshy एक चिबी-स्टाइल पिक्सेल स्प्राइट बनाता है।
    • other: कोई भी अन्य विषय, उदाहरण के लिए एक पालतू जानवर, कोई वस्तु, एक मैस्कट, लोगो, या लैंडस्केप। Meshy एक बीड-आर्ट स्टाइल पिक्सेल आइकन बनाता है।
  • Name
    name
    Type
    string
    Description

    टास्क के लिए एक नाम, अधिकतम 100 वर्ण। यह टास्क के name फ़ील्ड में वापस आता है। इससे लंबा नाम 400 रिटर्न करता है।

रिटर्न वैल्यू

result फ़ील्ड में नए प्रोटोटाइप टास्क की ID होती है। टास्क को प्राप्त करें या इसे स्ट्रीम करें जब तक status, SUCCEEDED न हो जाए। फिर ID को बिल्ड एंडपॉइंट में input_task_id के रूप में पास करें।

फेल्योर मोड्स

  • Name
    400 - Bad Request
    Description

    रिक्वेस्ट रन नहीं हो सकती। उदाहरण के लिए:

    • image_url या type मौजूद नहीं है।
    • type, person या other नहीं है।
    • इमेज एक JPG, JPEG, PNG, या WebP फ़ाइल नहीं है।
    • इमेज बहुत छोटी है, 20 MB से अधिक है, या अधिकतम पिक्सेल काउंट से अधिक है।
    • Meshy इमेज डाउनलोड नहीं कर सकता, उदाहरण के लिए क्योंकि URL 404 रिटर्न करता है या टाइमआउट हो जाता है।
    • Data URI वैलिड base64 नहीं है।
    • इमेज को NSFW के रूप में फ़्लैग किया गया था।

    एरर मैसेज बताता है कि उसे कौन सी समस्या मिली। रिक्वेस्ट ठीक करें, फिर इसे फिर से भेजें।

  • Name
    401 - Unauthorized
    Description

    API की मौजूद नहीं है या अमान्य है। Authorization हेडर जांचें।

  • Name
    402 - Payment Required
    Description

    इनमें से कोई एक लागू होता है:

    • अकाउंट में पर्याप्त क्रेडिट नहीं हैं।
    • API की, वर्कस्पेस, या सदस्य अपनी क्रेडिट लिमिट तक पहुंच गया।
    • अकाउंट फ्री प्लान पर है।

    अपने क्रेडिट और प्लान की जांच करें, फिर पुनः प्रयास करें।

  • Name
    403 - Forbidden
    Description

    आपकी टीम ने IP Filtering चालू कर रखा है, और Meshy ने इमेज को थर्ड-पार्टी इंटेलेक्चुअल प्रॉपर्टी के लिए फ़्लैग कर दिया है। कोई ऐसी इमेज भेजें जिसे इस्तेमाल करने का आपको अधिकार है।

  • Name
    429 - Too Many Requests
    Description

    इनमें से एक लिमिट पहुंच गई थी:

    • आपने अपनी रेट लिमिट से अधिक रिक्वेस्ट भेजीं। कुछ सेकंड रुकें, फिर पुनः प्रयास करें। रेट लिमिट्स देखें।
    • आपके बहुत अधिक टास्क कतार में हैं या चल रहे हैं। कुछ के पूरा होने का इंतज़ार करें, फिर पुनः प्रयास करें।
    • बिना क्रेडिट के अनलिमिटेड प्लान पर, आप बिना क्रेडिट के चल सकने वाले टास्क की संख्या तक पहुंच गए। किसी टास्क के पूरा होने का इंतज़ार करें, या क्रेडिट जोड़ें।
  • Name
    500 - Internal Server Error
    Description

    Meshy को एक सर्वर एरर मिला, उदाहरण के लिए क्योंकि यह इमेज पर इंटेलेक्चुअल प्रॉपर्टी चेक नहीं चला सका। Meshy टास्क नहीं बनाता, और उसके द्वारा चार्ज किए गए किसी भी क्रेडिट को रिफंड कर देता है। रिक्वेस्ट को पुनः प्रयास करें।


POST/openapi/creative-lab/fidget-pixel/v1/build

Fidget Pixel बिल्ड टास्क बनाएं

यह एक सफल प्रोटोटाइप टास्क से 3D-प्रिंट करने योग्य टुकड़े जनरेट करता है। Meshy पिक्सेल-आर्ट इमेज को ग्रिड पर सैंपल करता है और इसे अधिकतम color_count रंगों तक कम करता है। सब्जेक्ट की हर सेल एक इंटरलॉकिंग टुकड़ा बन जाती है, और बैकग्राउंड प्रिंट नहीं होती।

परिणाम एक सिंगल मल्टी-कलर 3MF फ़ाइल है, जो रंग में प्रिंट करने के लिए तैयार है। हर टुकड़े का बॉडी ग्रे होता है और टॉप उसके पिक्सेल के रंग का होता है। इसके फ़ील्ड्स के लिए, The Fidget Pixel build task object देखें।

Request

POST
/openapi/creative-lab/fidget-pixel/v1/build
# Stage 2: chain build off a succeeded prototype task
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "input_task_id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
    "options": {
      "shape": "square",
      "grid_size": 32,
      "piece_size_mm": 8,
      "color_count": 8,
      "piece_height_mm": 15
    },
    "output": {
      "format": "3mf"
    }
  }'

Response

{
  "result": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98"
}

पैरामीटर

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

    बिल्ड करने वाले प्रोटोटाइप टास्क की ID। यह आपके अकाउंट द्वारा POST /openapi/creative-lab/fidget-pixel/v1/prototype से बनाया गया टास्क होना चाहिए, जिसका स्टेटस SUCCEEDED हो।

    ऐसी ID जो API से बने आपके Fidget Pixel प्रोटोटाइप टास्क में से कोई नहीं है, वह 404 रिटर्न करती है, जिसमें वेब ऐप में बनाया गया प्रोटोटाइप भी शामिल है।

  • Name
    name
    Type
    string
    Description

    टास्क के लिए एक नाम, अधिकतम 100 वर्ण तक। यह टास्क के name फ़ील्ड में वापस आता है। इससे लंबा नाम 400 रिटर्न करता है।

options

टुकड़ों के आकार और साइज़ के लिए सेटिंग्स। हर फ़ील्ड की एक डिफ़ॉल्ट वैल्यू होती है, इसलिए केवल वे फ़ील्ड भेजें जिन्हें आप बदलना चाहते हैं। 0 फ़ील्ड की डिफ़ॉल्ट वैल्यू का उपयोग करता है। ये वही सेटिंग्स हैं जो Creative Lab वेब ऐप में हैं। बाकी शेप सेटिंग्स तय होती हैं, और Meshy इन्हें shape और piece_size_mm से सेट करता है।

  • Name
    shape
    Type
    string
    डिफ़ॉल्ट square
    Description

    हर टुकड़े का फुटप्रिंट। इसके अलावा कोई भी वैल्यू 400 रिटर्न करती है।

    उपलब्ध वैल्यूज़:

    • square: स्क्वायर ग्रिड पर स्क्वायर टुकड़े
    • hex: हेक्सागोनल ग्रिड पर हेक्सागोनल टुकड़े, जिसमें piece_size_mm 6 या 8 पर सेट हो
  • Name
    grid_size
    Type
    integer
    डिफ़ॉल्ट 32
    Description

    बोर्ड की हर भुजा में ग्रिड सेल्स की संख्या, 16 या 32। इसके अलावा कोई भी वैल्यू 400 रिटर्न करती है। 32 ग्रिड अधिक डिटेल बनाए रखता है। 16 ग्रिड समान साइज़ के कम टुकड़े देता है, इसलिए बोर्ड लगभग आधा चौड़ा होता है।

  • Name
    piece_size_mm
    Type
    integer
    डिफ़ॉल्ट 8
    Description

    हर टुकड़े की भुजा की लंबाई मिलीमीटर में, 6, 8, या 10। इसके अलावा कोई भी वैल्यू 400 रिटर्न करती है। grid_size के साथ, यह प्रिंट किए गए बोर्ड का साइज़ तय करती है। उदाहरण के लिए, 8 mm टुकड़ों का 32 ग्रिड प्रत्येक भुजा में लगभग 26.5 cm का होता है।

    10, hex के साथ काम नहीं करता और 400 रिटर्न करता है, क्योंकि ढलान वाला हेक्स फेस ज़्यादातर कंज्यूमर FDM प्रिंटरों पर ओवरहैंग करता है।

  • Name
    color_count
    Type
    integer
    डिफ़ॉल्ट 8
    Description

    पिक्सेल-आर्ट पैलेट में अधिकतम रंगों की संख्या, 1 से 8 तक। रेंज से बाहर की वैल्यू 400 रिटर्न करती है। प्रिंट करने के लिए, आपको color_count जमा एक फिलामेंट चाहिए, एक प्रति रंग और एक ग्रे बॉडी के लिए।

  • Name
    piece_height_mm
    Type
    integer
    डिफ़ॉल्ट 15
    Description

    हर टुकड़े की ऊँचाई मिलीमीटर में, 10 से 80 तक। रेंज से बाहर की वैल्यू 400 रिटर्न करती है।

output

परिणाम फ़ाइल के लिए सेटिंग्स।

  • Name
    format
    Type
    string
    डिफ़ॉल्ट 3mf
    Description

    परिणाम का फ़ाइल फॉर्मेट। इसके अलावा कोई भी वैल्यू 400 रिटर्न करती है।

    उपलब्ध वैल्यूज़:

    • 3mf: एक मल्टी-कलर model.3mf फ़ाइल, जो model_urls.3mf में रिटर्न होती है

रिटर्न वैल्यू

result फ़ील्ड में नए बिल्ड टास्क की ID होती है। जब तक status, SUCCEEDED न हो जाए, तब तक टास्क प्राप्त करें या इसे स्ट्रीम करें। फिर model_urls.3mf से 3MF फ़ाइल डाउनलोड करें।

विफलता के मामले

  • Name
    400 - Bad Request
    Description

    रिक्वेस्ट नहीं चल सकती। उदाहरण के लिए:

    • input_task_id मौजूद नहीं है या वैध टास्क ID नहीं है।
    • प्रोटोटाइप टास्क का स्टेटस SUCCEEDED नहीं है। अगर यह अभी भी चल रहा है, तो प्रतीक्षा करें और फिर से कोशिश करें। अगर यह विफल हो गया या कैंसल कर दिया गया, तो नया प्रोटोटाइप टास्क बनाएं।
    • प्रोटोटाइप टास्क सफल हुआ लेकिन इसमें कोई इमेज नहीं है। नया प्रोटोटाइप टास्क बनाएं।
    • कोई options फ़ील्ड अपनी अनुमत वैल्यूज़ से बाहर है, उदाहरण के लिए grid_size, 16 या 32 के अलावा कुछ और।
    • piece_size_mm, 10 है और shape, hex है। हेक्स टुकड़े केवल 6 और 8 mm में आते हैं।
    • output.format, 3mf नहीं है।

    एरर मैसेज बताता है कि कौन-सी समस्या मिली।

  • Name
    401 - Unauthorized
    Description

    API की या तो मौजूद नहीं है या अमान्य है। Authorization हेडर जाँचें।

  • Name
    402 - Payment Required
    Description

    इनमें से कोई एक लागू होता है:

    • अकाउंट में पर्याप्त क्रेडिट नहीं हैं।
    • API की, वर्कस्पेस, या सदस्य अपनी क्रेडिट सीमा तक पहुँच गया है।
    • अकाउंट फ्री प्लान पर है।

    अपने क्रेडिट और प्लान की जाँच करें, फिर फिर से कोशिश करें।

  • Name
    403 - Forbidden
    Description

    आपकी टीम ने IP Filtering चालू कर रखा है, और Meshy ने प्रोटोटाइप टास्क की इमेज को थर्ड-पार्टी इंटेलेक्चुअल प्रॉपर्टी के लिए फ्लैग किया है। ऐसी इमेज से प्रोटोटाइप टास्क बनाएं जिसका उपयोग करने का आपके पास अधिकार है।

  • Name
    404 - Not Found
    Description

    input_task_id, API से आपके अकाउंट द्वारा बनाए गए किसी भी Fidget Pixel प्रोटोटाइप टास्क से मेल नहीं खाता। वेब ऐप में बनाया गया प्रोटोटाइप भी 404 रिटर्न करता है। प्रोटोटाइप क्रिएट रिस्पॉन्स से result ID भेजें।

  • Name
    429 - Too Many Requests
    Description

    इनमें से कोई एक सीमा पूरी हो गई:

    • आपने अपनी रेट लिमिट से अधिक रिक्वेस्ट भेजी। कुछ सेकंड प्रतीक्षा करें, फिर फिर से कोशिश करें। Rate limits देखें।
    • आपके बहुत अधिक टास्क कतार में हैं या चल रहे हैं। कुछ के पूरा होने की प्रतीक्षा करें, फिर फिर से कोशिश करें।
    • किसी अनलिमिटेड प्लान पर जिसमें कोई क्रेडिट शेष नहीं है, आप बिना क्रेडिट के चल सकने वाले टास्क की संख्या तक पहुँच गए हैं। किसी टास्क के पूरा होने की प्रतीक्षा करें, या क्रेडिट जोड़ें।
  • Name
    500 - Internal Server Error
    Description

    Meshy को एक सर्वर एरर मिला, उदाहरण के लिए क्योंकि यह प्रोटोटाइप टास्क की इमेज पर इंटेलेक्चुअल प्रॉपर्टी चेक नहीं चला सका। Meshy टास्क नहीं बनाता, और इसने जो भी क्रेडिट चार्ज किए थे उन्हें रिफंड कर देता है। रिक्वेस्ट फिर से करें।


GET/openapi/creative-lab/fidget-pixel/v1/(prototype|build)/:id

Fidget Pixel टास्क प्राप्त करें

यह एक prototype या build टास्क लौटाता है। पाथ का मिलान टास्क के स्टेज से होना चाहिए। /prototype/:id के ज़रिए रिक्वेस्ट किया गया build टास्क 404 लौटाता है, और इसी तरह /build/:id के ज़रिए रिक्वेस्ट किया गया prototype टास्क भी 404 लौटाता है।

फ़ील्ड्स के लिए, देखें The Fidget Pixel prototype task object और The Fidget Pixel build task object।

Request

GET
/openapi/creative-lab/fidget-pixel/v1/prototype/019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7
# Prototype
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype/019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

# Build
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Prototype Response

{
  "id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
  "type": "creative-lab-fidget-pixel-prototype",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1757001000000,
  "started_at": 1757001005000,
  "finished_at": 1757001178000,
  "expires_at": 1757260378000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "image_urls": [
    "https://assets.meshy.ai/***/pixel-art.jpg?Expires=***"
  ]
}

Build Response

{
  "id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
  "type": "creative-lab-fidget-pixel-build",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1757001300000,
  "started_at": 1757001304000,
  "finished_at": 1757001309000,
  "expires_at": 1757260509000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 30,
  "model_urls": {
    "3mf": "https://assets.meshy.ai/***/tasks/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/output/model.3mf?Expires=***"
  }
}

पैरामीटर

  • Name
    id
    Type
    path
    Description

    क्रिएट रिस्पॉन्स से मिला टास्क ID।

रिटर्न

पाथ में दिए गए स्टेज के अनुसार, prototype task object या build task object।

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

  • Name
    400 - Bad Request
    Description

    id एक मान्य टास्क ID नहीं है। क्रिएट रिस्पॉन्स से मिला result ID भेजें।

  • Name
    403 - Forbidden
    Description

    आपकी टीम में IP Filtering चालू है, और Meshy ने prototype टास्क की इमेज को थर्ड-पार्टी इंटेलेक्चुअल प्रॉपर्टी के लिए फ़्लैग किया है। Build टास्क और Enterprise प्लान वाली टीमों को यह एरर नहीं मिलता। ऐसी इमेज से prototype टास्क बनाएं जिसका उपयोग करने का आपको अधिकार है।

  • Name
    404 - Not Found
    Description

    आपके अकाउंट से जुड़ा इस ID वाला कोई Fidget Pixel टास्क नहीं है, या टास्क का स्टेज पाथ से मेल नहीं खाता। ID जाँचें, और टास्क से मेल खाने के लिए /prototype या /build का उपयोग करें।

  • Name
    500 - Internal Server Error
    Description

    Meshy इंटेलेक्चुअल प्रॉपर्टी जाँच नहीं चला सका। रिक्वेस्ट फिर से भेजें।


DELETE/openapi/creative-lab/fidget-pixel/v1/(prototype|build)/:id

Fidget Pixel टास्क डिलीट करें

यह एक Fidget Pixel टास्क को कैंसिल करता है। PENDING टास्क को कैंसिल करने पर उसके क्रेडिट रिफंड कर दिए जाते हैं। IN_PROGRESS टास्क बिना रिफंड के कैंसिल किया जाता है, क्योंकि एक वर्कर पहले ही उस पर काम शुरू कर चुका होता है। जिस टास्क की स्थिति अंतिम हो (SUCCEEDED, FAILED, या CANCELED), उसे कैंसिल नहीं किया जा सकता।

पाथ को टास्क के स्टेज से मेल खाना चाहिए। उदाहरण के लिए, किसी बिल्ड टास्क की ID के साथ /prototype/:id पर DELETE करने पर 404 रिटर्न होता है।

Request

DELETE
/openapi/creative-lab/fidget-pixel/v1/prototype/019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7
curl --request DELETE \
  --url https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype/019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// Returns 204 No Content on success (empty body).

पाथ पैरामीटर

  • Name
    id
    Type
    path
    Description

    कैंसिल किए जाने वाले टास्क की ID।

रिटर्न

खाली बॉडी के साथ 204 No Content।

फेलियर मोड

  • Name
    400 - Bad Request
    Description

    इनमें से कोई एक लागू होता है:

    • id एक वैध टास्क ID नहीं है। क्रिएट रिस्पॉन्स से मिली result ID भेजें।
    • टास्क पहले से ही अंतिम स्थिति में है (SUCCEEDED, FAILED, या CANCELED), इसलिए इसे कैंसिल नहीं किया जा सकता।
  • Name
    404 - Not Found
    Description

    इस ID वाला कोई भी Fidget Pixel टास्क आपके अकाउंट से संबंधित नहीं है, या टास्क का स्टेज पाथ से मेल नहीं खाता। ID जांचें, और टास्क से मेल खाने के लिए /prototype या /build का उपयोग करें।


GET/openapi/creative-lab/fidget-pixel/v1/(prototype|build)/:id/stream

Fidget Pixel टास्क को स्ट्रीम करें

किसी Fidget Pixel टास्क के अपडेट को Server-Sent Events (SSE) के रूप में स्ट्रीम करता है। पाथ टास्क के स्टेज से मेल खाना चाहिए। यदि ऐसा नहीं है, उदाहरण के लिए /prototype/:id/stream पर किसी build टास्क की ID, तो स्ट्रीम status_code: 404 के साथ एक error इवेंट भेजती है और बंद हो जाती है। जो id वैध टास्क ID नहीं है, वह status_code: 400 के साथ वैसा ही व्यवहार करता है।

Request

GET
/openapi/creative-lab/fidget-pixel/v1/build/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/stream
curl -N https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Error event example (wrong stage or task not found)
event: error
data: {
  "status_code": 404,
  "message": "Task not found"
}

// Message event examples illustrate task progress.
// Every frame is the full task object for the stage; fields not yet populated are null / empty.
event: message
data: {
  "id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
  "type": "creative-lab-fidget-pixel-build",
  "name": "",
  "status": "PENDING",
  "progress": 0,
  "created_at": 1757001300000,
  "started_at": null,
  "finished_at": null,
  "expires_at": 1757260500000,
  "preceding_tasks": 2,
  "task_error": null,
  "consumed_credits": 30,
  "model_urls": {}
}

event: message
data: {
  "id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
  "type": "creative-lab-fidget-pixel-build",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1757001300000,
  "started_at": 1757001304000,
  "finished_at": 1757001309000,
  "expires_at": 1757260509000,
  "task_error": null,
  "consumed_credits": 30,
  "model_urls": {
    "3mf": "https://assets.meshy.ai/***/tasks/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/output/model.3mf?Expires=***"
  }
}

पैरामीटर

  • Name
    id
    Type
    path
    Description

    क्रिएट रिस्पॉन्स से टास्क ID।

रिटर्न

prototype या build टास्क ऑब्जेक्ट्स की एक स्ट्रीम। प्रत्येक इवेंट में पूरा टास्क ऑब्जेक्ट होता है, ठीक वैसे ही जैसे Fidget Pixel टास्क प्राप्त करें इसे रिटर्न करता है। जब तक टास्क PENDING या IN_PROGRESS है, इसके आउटपुट फ़ील्ड अभी भी खाली (null, [], या {}) हैं, और finished_at null है।

यदि IP Filtering टास्क के परिणाम को ब्लॉक करता है, तो स्ट्रीम उसकी जगह एक error इवेंट भेजती है, जिसमें वह status_code होता है जो एक get रिक्वेस्ट रिटर्न करती।


GET/openapi/creative-lab/fidget-pixel/v1/(prototype|build)

Fidget Pixel टास्क सूचीबद्ध करें

यह एक समय में एक पृष्ठ पर, किसी एक चरण के आपके Fidget Pixel टास्क लौटाता है। पाथ चरण का चयन करता है। /prototype केवल prototype टास्क लौटाता है, और /build केवल build टास्क लौटाता है।

Request

GET
/openapi/creative-lab/fidget-pixel/v1/prototype
# List prototype tasks
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/prototype?page_size=10 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

# List build tasks
curl https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1/build?page_size=10 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response (List Prototype Tasks)

[
  {
    "id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
    "type": "creative-lab-fidget-pixel-prototype",
    "name": "",
    "status": "SUCCEEDED",
    "progress": 100,
    "created_at": 1757001000000,
    "started_at": 1757001005000,
    "finished_at": 1757001178000,
    "expires_at": 1757260378000,
    "preceding_tasks": 0,
    "task_error": null,
    "consumed_credits": 6,
    "image_urls": [
      "https://assets.meshy.ai/***/pixel-art.jpg?Expires=***"
    ]
  }
]

पाथ पैरामीटर

  • Name
    stage
    Type
    path
    आवश्यक
    Description

    सूचीबद्ध करने के लिए चरण, prototype या build।

क्वेरी पैरामीटर

  • Name
    page_num
    Type
    integer
    डिफ़ॉल्ट 1
    Description

    लौटाया जाने वाला पृष्ठ, 1 से 255 तक। 0 पहला पृष्ठ लौटाता है। 0 से 255 के बाहर का मान 400 लौटाता है।

  • Name
    page_size
    Type
    integer
    डिफ़ॉल्ट 10
    Description

    प्रति पृष्ठ टास्क की संख्या, 100 तक। 101 से 255 तक का मान 100 टास्क लौटाता है, और 0 डिफ़ॉल्ट का उपयोग करता है। 0 से 255 के बाहर का मान 400 लौटाता है।

  • Name
    sort_by
    Type
    string
    डिफ़ॉल्ट -created_at
    Description

    क्रम का प्रकार।

    उपलब्ध मान:

    • -created_at: सबसे नया पहले
    • +created_at: सबसे पुराना पहले

रिटर्न

prototype टास्क ऑब्जेक्ट्स या build टास्क ऑब्जेक्ट्स का एक ऐरे, जो पाथ में दिए गए चरण से मेल खाता है।


Fidget Pixel prototype task ऑब्जेक्ट

एक prototype task किसी फोटो को पिक्सेल-आर्ट इमेज में बदल देता है। इमेज को 3D-प्रिंट करने योग्य पीस में बदलने के लिए, टास्क की ID को input_task_id के रूप में build एंडपॉइंट को भेजें।

Properties

Example Fidget Pixel Prototype Task Object

{
  "id": "019c4a1e-2b7d-7d03-8f6a-5c2e91f0a1b7",
  "type": "creative-lab-fidget-pixel-prototype",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1757001000000,
  "started_at": 1757001005000,
  "finished_at": 1757001178000,
  "expires_at": 1757260378000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "image_urls": [
    "https://assets.meshy.ai/***/pixel-art.jpg?Expires=***"
  ]
}
  • Name
    id
    Type
    string
    Description

    टास्क ID। इसके फॉर्मेट पर निर्भर न रहें।

  • Name
    type
    Type
    string
    Description

    टास्क का प्रकार, हमेशा creative-lab-fidget-pixel-prototype।

  • Name
    name
    Type
    string
    Description

    वह name जो आपने टास्क बनाते समय भेजा था, या अगर आपने कोई नहीं भेजा तो ""।

  • Name
    status
    Type
    string
    Description

    टास्क की स्थिति।

    उपलब्ध वैल्यू:

    • PENDING: कतार में प्रतीक्षा कर रहा है
    • IN_PROGRESS: परिणाम जनरेट किया जा रहा है
    • SUCCEEDED: अंतिम, परिणाम के साथ
    • FAILED: अंतिम, कारण task_error में है
    • CANCELED: अंतिम, बिना परिणाम के
  • Name
    progress
    Type
    integer
    Description

    किए गए काम का प्रतिशत, 0 से 100 तक। जब तक टास्क शुरू नहीं होता तब तक यह 0 रहता है और सफल होने पर 100 हो जाता है।

  • Name
    created_at
    Type
    timestamp
    Description

    टास्क बनाए जाने का समय, यूनिक्स मिलीसेकंड में।

  • Name
    started_at
    Type
    timestamp
    Description

    जब किसी वर्कर ने टास्क शुरू किया, वह समय, यूनिक्स मिलीसेकंड में। तब तक null रहता है।

  • Name
    finished_at
    Type
    timestamp
    Description

    टास्क के अंतिम स्थिति तक पहुँचने का समय, यूनिक्स मिलीसेकंड में। तब तक null रहता है।

  • Name
    expires_at
    Type
    timestamp
    Description

    टास्क के परिणाम की समाप्ति का समय, यूनिक्स मिलीसेकंड में। यह finished_at के 3 दिन बाद है, या जब तक टास्क पूरा नहीं होता तब तक created_at के 3 दिन बाद है। Enterprise खातों के लिए, जो API परिणामों को अनिश्चित काल तक बनाए रखते हैं, यह लगभग 100 साल बाद है। एसेट रिटेंशन देखें।

  • Name
    preceding_tasks
    Type
    integer
    Description

    जब टास्क PENDING होता है तब कतार में उसकी स्थिति। 1 का मतलब है कि यह अगला शुरू होगा। टास्क के कतार छोड़ने के बाद 0, और लिस्ट रिजल्ट में हमेशा 0।

  • Name
    task_error
    Type
    object
    Description

    टास्क क्यों फेल हुआ। जब तक status, FAILED न हो, तब तक null। एरर देखें।

  • Name
    consumed_credits
    Type
    integer
    Description

    किसी भी रिफंड के बाद टास्क के लिए चार्ज किए गए क्रेडिट की संख्या। जो रिक्वेस्ट एरर लौटाती है उसके लिए चार्ज नहीं लिया जाता। फेल हुआ टास्क 0 होता है, क्योंकि Meshy इसे रिफंड कर देता है। कैंसल करने पर टास्क का रिफंड तभी होता है जब वह PENDING स्थिति में हो। अगर Meshy चार्ज को पढ़ नहीं पाता, तो get या stream रिस्पॉन्स में यह फ़ील्ड शामिल नहीं होता, और लिस्ट रिक्वेस्ट 500 लौटाती है। ऐसे में, रिक्वेस्ट को फिर से करें।

  • Name
    image_urls
    Type
    array of strings
    Description

    पिक्सेल-आर्ट इमेज के लिए डाउनलोड URL। टास्क सफल होने के बाद ऐरे में एक URL होता है, और तब तक खाली रहता है।

    URL साइन किए गए होते हैं, इसलिए इन्हें बिना Authorization हेडर के फ़ेच करें। ये expires_at तक मान्य रहते हैं। उससे पहले टास्क को फिर से get करने पर वही URL मिलते हैं, नए साइन किए हुए नहीं। एक्सपायर हो चुके URL को फिर से रिफ्रेश नहीं किया जा सकता, इसलिए उससे पहले फ़ाइलों को डाउनलोड करके सेव कर लें।


Fidget Pixel बिल्ड टास्क ऑब्जेक्ट

एक बिल्ड टास्क एक सफल प्रोटोटाइप टास्क से 3D-प्रिंट करने योग्य पीस जनरेट करता है। Meshy पिक्सेल-आर्ट इमेज को ग्रिड पर सैंपल करता है और पीस को एक सिंगल मल्टी-कलर 3MF फ़ाइल में रिटर्न करता है।

Properties

Example Fidget Pixel Build Task Object

{
  "id": "019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98",
  "type": "creative-lab-fidget-pixel-build",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1757001300000,
  "started_at": 1757001304000,
  "finished_at": 1757001309000,
  "expires_at": 1757260509000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 30,
  "model_urls": {
    "3mf": "https://assets.meshy.ai/***/tasks/019c4a2f-6e81-7b44-9a1d-0d7f3c5e2b98/output/model.3mf?Expires=***"
  }
}
  • Name
    id
    Type
    string
    Description

    टास्क ID। इसके फॉर्मैट पर निर्भर न करें।

  • Name
    type
    Type
    string
    Description

    टास्क टाइप, हमेशा creative-lab-fidget-pixel-build।

  • Name
    name
    Type
    string
    Description

    वह name जो आपने टास्क बनाते समय भेजा था, या यदि आपने कोई नहीं भेजा तो ""।

  • Name
    status
    Type
    string
    Description

    टास्क का status।

    उपलब्ध वैल्यूज़:

    • PENDING: क्यू में प्रतीक्षा कर रहा है
    • IN_PROGRESS: रिज़ल्ट जनरेट किया जा रहा है
    • SUCCEEDED: अंतिम, रिज़ल्ट के साथ
    • FAILED: अंतिम, कारण task_error में है
    • CANCELED: अंतिम, बिना किसी रिज़ल्ट के
  • Name
    progress
    Type
    integer
    Description

    काम पूरा होने का प्रतिशत, 0 से 100 तक। टास्क शुरू होने तक यह 0 रहता है और सफल होने पर 100 हो जाता है।

  • Name
    created_at
    Type
    timestamp
    Description

    टास्क बनाए जाने का समय, Unix मिलीसेकंड में।

  • Name
    started_at
    Type
    timestamp
    Description

    जब किसी वर्कर ने टास्क शुरू किया, उसका समय, Unix मिलीसेकंड में। तब तक null रहता है।

  • Name
    finished_at
    Type
    timestamp
    Description

    जब टास्क किसी अंतिम status पर पहुंचा, उसका समय, Unix मिलीसेकंड में। तब तक null रहता है।

  • Name
    expires_at
    Type
    timestamp
    Description

    जब टास्क का रिज़ल्ट expire होता है, Unix मिलीसेकंड में। यह finished_at के 3 दिन बाद होता है, या टास्क के पूरा होने तक created_at के 3 दिन बाद। Enterprise अकाउंट्स के लिए, जो API रिज़ल्ट्स को अनिश्चित काल तक बनाए रखते हैं, यह लगभग 100 साल बाद होता है। Asset retention देखें।

  • Name
    preceding_tasks
    Type
    integer
    Description

    जब टास्क PENDING हो, उस दौरान क्यू में टास्क की स्थिति। 1 का मतलब है कि यह अगला शुरू होगा। टास्क के क्यू छोड़ने के बाद 0, और लिस्ट रिज़ल्ट्स में हमेशा 0।

  • Name
    task_error
    Type
    object
    Description

    टास्क क्यों फेल हुआ। null जब तक status, FAILED न हो। एरर देखें।

  • Name
    consumed_credits
    Type
    integer
    Description

    टास्क के लिए चार्ज किए गए क्रेडिट की संख्या, किसी भी रिफंड के बाद। जो रिक्वेस्ट एरर रिटर्न करती है उसके लिए चार्ज नहीं लिया जाता। फेल हुए टास्क के लिए यह 0 होता है, क्योंकि Meshy इसे रिफंड कर देता है। Cancel करने पर टास्क तभी रिफंड होता है जब वह PENDING हो। अगर Meshy चार्ज नहीं पढ़ पाता, तो get या stream रिस्पॉन्स में यह फ़ील्ड शामिल नहीं होती, और लिस्ट रिक्वेस्ट 500 रिटर्न करती है। ऐसे में, रिक्वेस्ट को फिर से करें।

  • Name
    model_urls
    Type
    object
    Description

    रिज़ल्ट के लिए डाउनलोड URLs, फ़ाइल फॉर्मैट के अनुसार keyed। इस ऑब्जेक्ट में एक एंट्री होती है, आपके भेजे गए output.format के लिए, और टास्क के सफल होने तक यह खाली रहता है।

    ये URLs साइन किए गए होते हैं, इसलिए इन्हें बिना Authorization हेडर के fetch करें। ये expires_at तक मान्य रहते हैं। उससे पहले टास्क को फिर से get करने पर वही URLs मिलते हैं, नए साइन किए गए नहीं। एक एक्सपायर हो चुके URL को फिर से रिफ्रेश नहीं किया जा सकता, इसलिए उससे पहले फ़ाइलों को डाउनलोड करके स्टोर कर लें।

    • Name
      3mf
      Type
      string
      Description

      मल्टी-कलर 3MF फ़ाइल के लिए डाउनलोड URL। प्रत्येक पीस का बॉडी ग्रे रंग का होता है और टॉप उसके पिक्सेल के रंग का। यह तब मौजूद होता है जब output.format, 3mf हो, जो डिफ़ॉल्ट है।


एंड-टू-एंड उदाहरण

निम्नलिखित cURL और Python स्क्रिप्ट पूरा फ़्लो चलाती हैं। प्रत्येक स्क्रिप्ट एक फ़ोटो से एक प्रोटोटाइप टास्क बनाती है और उसके सफल होने की प्रतीक्षा करती है। फिर यह एक बिल्ड टास्क बनाती है, उस टास्क की प्रतीक्षा करती है, और model_urls.3mf से 3MF फ़ाइल डाउनलोड करती है।

cURL स्क्रिप्ट को curl और jq की ज़रूरत होती है, और Python स्क्रिप्ट को requests पैकेज की ज़रूरत होती है। कोई स्क्रिप्ट चलाने के लिए, इन चरणों का पालन करें:

  1. MESHY_API_KEY को अपनी API की पर सेट करें।
  2. IMAGE_PATH को किसी लोकल फ़ोटो के पथ पर, या IMAGE_URL को किसी सार्वजनिक इमेज URL पर सेट करें।
  3. वैकल्पिक: किसी व्यक्ति के अलावा किसी अन्य विषय को पिक्सेलाइज़ करने के लिए, PIXEL_TYPE को other पर सेट करें।
  4. स्क्रिप्ट चलाएं।

एक प्रोटोटाइप टास्क आमतौर पर कुछ ही मिनटों में समाप्त हो जाता है। एक बिल्ड टास्क आमतौर पर एक मिनट से भी कम समय में समाप्त हो जाता है।

अपने ऐप में, बिल्ड टास्क बनाने से पहले image_urls से इमेज अपने उपयोगकर्ता को दिखाएं। अगर उन्हें यह पसंद नहीं है, तो इसके बजाय एक और प्रोटोटाइप टास्क बनाएं। इस तरह, आप केवल उसी इमेज पर बिल्ड क्रेडिट खर्च करते हैं जिसे वे स्वीकृत करते हैं।

Complete flow

POST
/openapi/creative-lab/fidget-pixel/v1
#!/usr/bin/env bash
set -euo pipefail

# Requires curl and jq. Point IMAGE_PATH at a local photo, or IMAGE_URL at a public one:
#   export MESHY_API_KEY=msy_...
#   export IMAGE_PATH=./portrait.jpg          # or: export IMAGE_URL=https://...
#   export PIXEL_TYPE=person                  # or: other
: "${MESHY_API_KEY:?export MESHY_API_KEY first}"
if [[ -z "${IMAGE_PATH:-}" && -z "${IMAGE_URL:-}" ]]; then
  echo "export IMAGE_PATH (local file) or IMAGE_URL (public url) first" >&2
  exit 1
fi
PIXEL_TYPE=${PIXEL_TYPE:-person}

BASE="https://api.meshy.ai/openapi/creative-lab/fidget-pixel/v1"
AUTH="Authorization: Bearer $MESHY_API_KEY"

# api METHOD URL [curl args...] -> prints the response body, non-zero on failure.
# Note we do not use -f/--fail: it discards the body, and the body is the only
# place the reason appears.
api() {
  local method=$1 url=$2 out http_code body
  shift 2
  out=$(curl --silent --show-error --max-time 60 --write-out $'\n%{http_code}' \
    -X "$method" "$url" -H "$AUTH" "$@") || return 1
  http_code=${out##*$'\n'}
  body=${out%$'\n'*}
  if ((http_code >= 400)); then
    echo "HTTP $http_code for $url: $body" >&2
    return 1
  fi
  printf '%s' "$body"
}

# Each task gets its own 40-minute budget.
poll() {
  local kind=$1 id=$2 delay=5 task_status deadline
  deadline=$(($(date +%s) + 2400))
  while :; do
    if (($(date +%s) >= deadline)); then
      echo "gave up waiting for $kind $id" >&2
      return 1
    fi
    task_status=$(api GET "$BASE/$kind/$id" | jq -r '.status')
    echo "$kind: $task_status"
    case "$task_status" in
    SUCCEEDED) return 0 ;;
    FAILED | CANCELED) return 1 ;;
    esac
    sleep "$delay"
    delay=$((delay * 2 > 30 ? 30 : delay * 2))
  done
}

# Build the request body in a file. A base64 data URI must never go on the
# command line or into an exported variable - a photo of any real size will
# exceed the OS argument limit.
BODY=$(mktemp)
trap 'rm -f "$BODY"' EXIT
if [[ -n "${IMAGE_PATH:-}" ]]; then
  # Declare the real type: the API accepts JPEG, PNG and WebP.
  case "$(printf '%s' "${IMAGE_PATH##*.}" | tr 'A-Z' 'a-z')" in
    png) MIME=image/png ;;
    webp) MIME=image/webp ;;
    *) MIME=image/jpeg ;;
  esac
  {
    printf '{"type":"%s","image_url":"data:%s;base64,' "$PIXEL_TYPE" "$MIME"
    base64 <"$IMAGE_PATH" | tr -d '\n'
    printf '"}'
  } >"$BODY"
else
  jq -n --arg t "$PIXEL_TYPE" --arg u "$IMAGE_URL" \
    '{type: $t, image_url: $u}' >"$BODY"
fi

# 1. Create the prototype task
PROTO_ID=$(api POST "$BASE/prototype" \
  -H 'Content-Type: application/json' --data-binary @"$BODY" | jq -r '.result')

# 2. Wait for the pixel-art image (show image_urls[0] to a user in production)
poll prototype "$PROTO_ID"

# 3. Create the build task (defaults: square pieces, 32x32 grid, 8 mm, 8 colors, 15 mm tall)
jq -n --arg p "$PROTO_ID" \
  '{input_task_id: $p, options: {shape: "square", grid_size: 32, piece_size_mm: 8, color_count: 8, piece_height_mm: 15}, output: {format: "3mf"}}' >"$BODY"
BUILD_ID=$(api POST "$BASE/build" \
  -H 'Content-Type: application/json' --data-binary @"$BODY" | jq -r '.result')

# 4. Wait for the pieces
poll build "$BUILD_ID"

# 5. Download the 3MF. This is a signed URL: no Authorization header,
#    and it stays valid for 3 days after the task finishes.
TASK=$(api GET "$BASE/build/$BUILD_ID")
curl --silent --show-error --fail --max-time 900 \
  -o fidget-pixel.3mf "$(jq -r '.model_urls["3mf"]' <<<"$TASK")"
echo "Done: fidget-pixel.3mf"