lowpoly 30 Eki 2026 tarihinde kaldırılıyor. İstek hatalarını önlemek için bu tarihlerden önce model değiştirin. Tüm kullanımdan kaldırmaları görün

Creative Lab Fidget Pixel API

Bir fotoğrafı iki aşamada çok renkli, 3D baskıya uygun bir piksel sanatı fidget tahtasına dönüştürün. Bir prototip görevi, fotoğrafı bir piksel sanatı görseline dönüştürür. Bir yapım görevi ise bu görseli, prototip görevinin kimliğini input_task_id olarak alarak tek bir 3MF dosyası içinde birbirine geçen parçalara dönüştürür.

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

Her iki POST endpoint'i de ücretli bir plan gerektirir. Ücretsiz plana sahip bir hesaptan yapılan istek 402 döndürür.


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

Bir Fidget Pixel prototip görevi oluşturma

Bir fotoğraftan tek bir piksel sanatı görseli üretir. Parçaları oluşturmak için bu görevin kimliğini build uç noktasına input_task_id olarak iletin. Görevin alanları için bkz. Fidget Pixel prototip görevi nesnesi.

Görseli beğenmezseniz başka bir prototip görevi oluşturun. Her görev ayrı ücretlendirilir.

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

Parametreler

  • Name
    image_url
    Type
    string
    Zorunlu
    Description

    Piksel sanatına dönüştürülecek fotoğraf; herkese açık bir URL veya bir data URI (data:image/jpeg;base64,<base64 ile kodlanmış görsel verileriniz>) olarak.

    Görsel, en fazla 20 MB boyutunda bir JPG, JPEG, PNG veya WebP dosyası olmalıdır. Meshy, biçimi URL'deki dosya uzantısından değil, görsel verilerinden algılar. Uzantısız bir URL çalışır ve Meshy yönlendirmeleri takip eder.

  • Name
    type
    Type
    string
    Zorunlu
    Description

    Fotoğrafın neyi gösterdiği, piksel sanatı stilini belirler. İki stil birbirinden belirgin şekilde farklıdır. Başka herhangi bir değer 400 döndürür.

    Kullanılabilir değerler:

    • person: bir kişi, portre veya tam boy fotoğrafta. Meshy, chibi tarzında bir piksel sprite çizer.
    • other: diğer herhangi bir konu, örneğin bir evcil hayvan, bir nesne, bir maskot, bir logo veya bir manzara. Meshy, boncuk sanatı tarzında bir piksel simgesi çizer.
  • Name
    name
    Type
    string
    Description

    Görev için en fazla 100 karakterlik bir ad. Bu ad, görevin name alanında geri döner. Daha uzun bir ad 400 döndürür.

Döndürülenler

result alanı, yeni prototip görevinin kimliğini tutar. status değeri SUCCEEDED olana kadar görevi alın veya akış olarak izleyin. Ardından kimliği build uç noktasına input_task_id olarak iletin.

Başarısızlık durumları

  • Name
    400 - Bad Request
    Description

    İstek çalıştırılamıyor. Örneğin:

    • image_url veya type eksik.
    • type, person veya other değil.
    • Görsel bir JPG, JPEG, PNG veya WebP dosyası değil.
    • Görsel çok küçük, 20 MB'ı aşıyor veya maksimum piksel sayısını aşıyor.
    • Meshy görseli indiremiyor, örneğin URL 404 döndürdüğü veya zaman aşımına uğradığı için.
    • Data URI geçerli bir base64 değil.
    • Görsel, müstehcen (NSFW) olarak işaretlendi.

    Hata mesajı hangi sorunu bulduğunu belirtir. İsteği düzeltin, ardından yeniden gönderin.

  • Name
    401 - Unauthorized
    Description

    API anahtarı eksik veya geçersiz. Authorization başlığını kontrol edin.

  • Name
    402 - Payment Required
    Description

    Aşağıdakilerden biri geçerlidir:

    • Hesapta yeterli kredi yok.
    • API anahtarı, çalışma alanı veya üye kredi sınırına ulaştı.
    • Hesap ücretsiz plandadır.

    Kredilerinizi ve planınızı kontrol edin, ardından yeniden deneyin.

  • Name
    403 - Forbidden
    Description

    Ekibinizde IP Filtering açık ve Meshy, görseli üçüncü taraf fikri mülkiyeti nedeniyle işaretledi. Kullanma hakkına sahip olduğunuz bir görsel gönderin.

  • Name
    429 - Too Many Requests
    Description

    Şu sınırlardan biri aşıldı:

    • Hız sınırınızın izin verdiğinden daha fazla istek gönderdiniz. Birkaç saniye bekleyin, ardından yeniden deneyin. Bkz. Hız sınırları.
    • Görevlerinizin çok fazlası kuyrukta veya çalışıyor. Bazılarının bitmesini bekleyin, ardından yeniden deneyin.
    • Kredisi kalmayan sınırsız bir planda, kredisiz çalıştırılabilecek görev sayısına ulaştınız. Bir görevin bitmesini bekleyin veya kredi ekleyin.
  • Name
    500 - Internal Server Error
    Description

    Meshy bir sunucu hatasıyla karşılaştı, örneğin görsel üzerinde fikri mülkiyet denetimini çalıştıramadığı için. Meshy görevi oluşturmaz ve tahsil ettiği tüm kredileri iade eder. İsteği yeniden deneyin.


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

Bir Fidget Pixel build görevi oluşturun

Başarılı olmuş bir prototip görevinden 3D baskıya hazır parçalar oluşturur. Meshy, piksel-art görseli ızgaraya örnekler ve bunu en fazla color_count renge indirger. Öznenin her hücresi, birbirine geçen bir parça haline gelir ve arka plan basılmaz.

Sonuç, renkli baskıya hazır tek bir çok renkli 3MF dosyasıdır. Her parçanın gri bir gövdesi ve pikselinin rengindeki bir üst kısmı vardır. Alanları için bkz. 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"
}

Parametreler

  • Name
    input_task_id
    Type
    string
    Zorunlu
    Description

    Oluşturulacak prototip görevinin kimliği. POST /openapi/creative-lab/fidget-pixel/v1/prototype ile hesabınızın oluşturduğu, durumu SUCCEEDED olan bir görev olmalıdır.

    API üzerinden oluşturduğunuz Fidget Pixel prototip görevlerinden biri olmayan bir kimlik, web uygulamasında oluşturulmuş bir prototip de dahil olmak üzere 404 döndürür.

  • Name
    name
    Type
    string
    Description

    Görev için en fazla 100 karakterlik bir ad. Görevin name alanında geri döner. Daha uzun bir ad 400 döndürür.

options

Parçaların şekli ve boyutu için ayarlar. Her alanın bir varsayılanı vardır, bu nedenle yalnızca değiştirmek istediğiniz alanları gönderin. 0 değeri, alanın varsayılanını kullanır. Bunlar, Creative Lab web uygulamasındakiyle aynı ayarlardır. Diğer şekil ayarları sabittir ve Meshy bunları shape ve piece_size_mm değerlerinden belirler.

  • Name
    shape
    Type
    string
    varsayılan square
    Description

    Her parçanın taban şekli. Başka herhangi bir değer 400 döndürür.

    Kullanılabilir değerler:

    • square: kare bir ızgara üzerinde kare parçalar
    • hex: piece_size_mm değeri 6 veya 8 olarak ayarlanmış, altıgen bir ızgara üzerinde altıgen parçalar
  • Name
    grid_size
    Type
    integer
    varsayılan 32
    Description

    Panonun her bir kenarı boyunca ızgara hücrelerinin sayısı, 16 veya 32. Başka herhangi bir değer 400 döndürür. 32 ızgara daha fazla ayrıntı korur. 16 ızgara, aynı boyutta daha az parça verir, bu nedenle pano yaklaşık olarak yarı genişlikte olur.

  • Name
    piece_size_mm
    Type
    integer
    varsayılan 8
    Description

    Her parçanın milimetre cinsinden kenar uzunluğu, 6, 8 veya 10. Başka herhangi bir değer 400 döndürür. grid_size ile birlikte, basılan panonun boyutunu belirler. Örneğin, 8 mm'lik parçalardan oluşan bir 32 ızgara, kenar başına yaklaşık 26,5 cm'dir.

    10, hex ile çalışmaz ve 400 döndürür, çünkü eğik altıgen yüzü çoğu tüketici FDM yazıcısında çıkıntı yapar.

  • Name
    color_count
    Type
    integer
    varsayılan 8
    Description

    Piksel-art paletindeki maksimum renk sayısı, 1 ile 8 arasında. Aralık dışındaki bir değer 400 döndürür. Baskı yapmak için, biri her renk için biri de gri gövdeler için olmak üzere color_count artı bir filamente kadar ihtiyacınız vardır.

  • Name
    piece_height_mm
    Type
    integer
    varsayılan 15
    Description

    Her parçanın milimetre cinsinden yüksekliği, 10 ile 80 arasında. Aralık dışındaki bir değer 400 döndürür.

output

Sonuç dosyası için ayarlar.

  • Name
    format
    Type
    string
    varsayılan 3mf
    Description

    Sonucun dosya biçimi. Başka herhangi bir değer 400 döndürür.

    Kullanılabilir değerler:

    • 3mf: model_urls.3mf içinde döndürülen, çok renkli tek bir model.3mf dosyası

Dönüş Değerleri

result alanı, yeni build görevinin kimliğini tutar. status SUCCEEDED olana kadar görevi alın veya görevi akış olarak izleyin. Ardından 3MF dosyasını model_urls.3mf üzerinden indirin.

Başarısızlık durumları

  • Name
    400 - Bad Request
    Description

    İstek çalıştırılamıyor. Örneğin:

    • input_task_id eksik veya geçerli bir görev kimliği değil.
    • Prototip görevinin durumu SUCCEEDED değil. Hâlâ çalışıyorsa bekleyip yeniden deneyin. Başarısız olduysa veya iptal edildiyse yeni bir prototip görevi oluşturun.
    • Prototip görevi başarılı oldu ancak bir görseli yok. Yeni bir prototip görevi oluşturun.
    • Bir options alanı izin verilen değerlerin dışında, örneğin 16 veya 32 dışında bir grid_size.
    • piece_size_mm değeri 10 ve shape değeri hex. Altıgen parçalar yalnızca 6 ve 8 mm olarak gelir.
    • output.format değeri 3mf değil.

    Hata mesajı hangi sorunu bulduğunu belirtir.

  • Name
    401 - Unauthorized
    Description

    API anahtarı eksik veya geçersiz. Authorization başlığını kontrol edin.

  • Name
    402 - Payment Required
    Description

    Bunlardan biri geçerlidir:

    • Hesapta yeterli kredi yok.
    • API anahtarı, çalışma alanı veya üye kredi limitine ulaştı.
    • Hesap ücretsiz plandadır.

    Kredilerinizi ve planınızı kontrol edip yeniden deneyin.

  • Name
    403 - Forbidden
    Description

    Ekibinizde IP Filtering açık ve Meshy, prototip görevinin görselini üçüncü taraf fikri mülkiyeti nedeniyle işaretledi. Kullanım haklarına sahip olduğunuz bir görselden bir prototip görevi oluşturun.

  • Name
    404 - Not Found
    Description

    input_task_id, hesabınızın API ile oluşturduğu herhangi bir Fidget Pixel prototip göreviyle eşleşmiyor. Web uygulamasında oluşturulmuş bir prototip de 404 döndürür. Bir prototip oluşturma yanıtından gelen result kimliğini gönderin.

  • Name
    429 - Too Many Requests
    Description

    Şu sınırlardan biri aşıldı:

    • Hız sınırınızın izin verdiğinden daha fazla istek gönderdiniz. Birkaç saniye bekleyip yeniden deneyin. Bkz. Rate limits.
    • Çok fazla göreviniz sırada bekliyor veya çalışıyor. Bazılarının tamamlanmasını bekleyip yeniden deneyin.
    • Kredisi kalmamış sınırsız bir planda, kredisiz çalıştırılabilecek görev sayısına ulaştınız. Bir görevin tamamlanmasını bekleyin veya kredi ekleyin.
  • Name
    500 - Internal Server Error
    Description

    Meshy bir sunucu hatasıyla karşılaştı, örneğin prototip görevinin görseli üzerinde fikri mülkiyet denetimini çalıştıramadığı için. Meshy görevi oluşturmaz ve tahsil ettiği kredileri iade eder. İsteği yeniden deneyin.


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

Fidget Pixel görevini alma

Bir prototip veya build görevini döndürür. Yol, görevin aşamasıyla eşleşmelidir. /prototype/:id üzerinden istenen bir build görevi 404 döndürür, /build/:id üzerinden istenen bir prototip görevi de aynı şekilde 404 döndürür.

Alanlar için bkz. Fidget Pixel prototip görev nesnesi ve Fidget Pixel build görev nesnesi.

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

Parametreler

  • Name
    id
    Type
    path
    Description

    Oluşturma yanıtından gelen görev ID'si.

Dönüş Değerleri

Yoldaki aşamayla eşleşen prototip görev nesnesi veya build görev nesnesi.

Hata modları

  • Name
    400 - Bad Request
    Description

    id geçerli bir görev ID'si değil. Oluşturma yanıtındaki result ID'sini gönderin.

  • Name
    403 - Forbidden
    Description

    Ekibinizde IP Filtering özelliği etkin ve Meshy, prototip görevinin görselini üçüncü taraf fikri mülkiyeti açısından işaretledi. Build görevleri ve Enterprise plandaki ekipler bu hatayı almaz. Kullanım haklarına sahip olduğunuz bir görselden prototip görevi oluşturun.

  • Name
    404 - Not Found
    Description

    Bu ID'ye sahip bir Fidget Pixel görevi hesabınıza ait değil veya görevin aşaması yol ile eşleşmiyor. ID'yi kontrol edin ve görevle eşleşmesi için /prototype veya /build kullanın.

  • Name
    500 - Internal Server Error
    Description

    Meshy, fikri mülkiyet kontrolünü çalıştıramadı. İsteği yeniden deneyin.


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

Bir Fidget Pixel görevini sil

Bir Fidget Pixel görevini iptal eder. PENDING durumundaki bir görevi iptal etmek, kredilerini iade eder. IN_PROGRESS durumundaki bir görev, bir worker zaten başlattığı için iade yapılmadan iptal edilir. Nihai bir durumdaki (SUCCEEDED, FAILED veya CANCELED) bir görev iptal edilemez.

Yol, görevin aşamasıyla eşleşmelidir. Örneğin, bir build görevinin ID'si ile /prototype/:id üzerinde DELETE yapmak 404 döndürür.

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).

Yol parametreleri

  • Name
    id
    Type
    path
    Description

    İptal edilecek görevin ID'si.

Dönüş değerleri

Boş bir gövdeyle 204 No Content.

Hata durumları

  • Name
    400 - Bad Request
    Description

    Aşağıdakilerden biri geçerlidir:

    • id geçerli bir görev ID'si değil. Oluşturma yanıtındaki result ID'sini gönderin.
    • Görev zaten nihai bir durumda (SUCCEEDED, FAILED veya CANCELED), bu nedenle iptal edilemez.
  • Name
    404 - Not Found
    Description

    Bu ID'ye sahip bir Fidget Pixel görevi hesabınıza ait değil veya görevin aşaması yol ile eşleşmiyor. ID'yi kontrol edin ve görevle eşleşmesi için /prototype veya /build kullanın.


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

Bir Fidget Pixel görevini akış olarak alma

Bir Fidget Pixel görevinin güncellemelerini Server-Sent Events (SSE) olarak akış halinde gönderir. Yol, görevin aşamasıyla eşleşmelidir. Eşleşmezse, örneğin bir build görevinin ID'si /prototype/:id/stream adresinde kullanılırsa, akış status_code: 404 değeriyle tek bir error olayı gönderir ve kapanır. Geçerli bir görev ID'si olmayan bir id için de aynı şey status_code: 400 ile gerçekleşir.

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

Parametreler

  • Name
    id
    Type
    path
    Description

    Oluşturma yanıtından gelen görev ID'si.

Dönüş Değerleri

prototype veya build görev nesnelerinden oluşan bir akış. Her olay, Bir Fidget Pixel görevini al işleminin döndürdüğü şekliyle tam görev nesnesini içerir. Görev PENDING veya IN_PROGRESS durumundayken, çıktı alanları hâlâ boştur (null, [] veya {}) ve finished_at değeri nulldur.

IP Filtering görevin sonucunu engellerse, akış bunun yerine bir get isteğinin döndüreceği status_code değeriyle tek bir error olayı gönderir.


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

Fidget Pixel görevlerini listele

Bir aşamaya ait Fidget Pixel görevlerinizi, her seferinde bir sayfa olacak şekilde döndürür. Yol (path) aşamayı belirler. /prototype yalnızca prototip görevlerini, /build ise yalnızca derleme (build) görevlerini döndürür.

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=***"
    ]
  }
]

Yol parametreleri

  • Name
    stage
    Type
    path
    Zorunlu
    Description

    Listelenecek aşama, prototype veya build.

Sorgu parametreleri

  • Name
    page_num
    Type
    integer
    varsayılan 1
    Description

    Döndürülecek sayfa, 1 ile 255 arasında. 0 ilk sayfayı döndürür. 0 ile 255 dışındaki bir değer 400 döndürür.

  • Name
    page_size
    Type
    integer
    varsayılan 10
    Description

    Sayfa başına görev sayısı, en fazla 100. 101 ile 255 arasındaki bir değer 100 görev döndürür ve 0 varsayılanı kullanır. 0 ile 255 dışındaki bir değer 400 döndürür.

  • Name
    sort_by
    Type
    string
    varsayılan -created_at
    Description

    Sıralama düzeni.

    Kullanılabilir değerler:

    • -created_at: önce en yeni
    • +created_at: önce en eski

Dönüş değerleri

Yoldaki aşamayla eşleşen, prototip görev nesneleri veya derleme görev nesneleri içeren bir dizi.


Fidget Pixel prototip görev nesnesi

Bir prototip görevi, bir fotoğrafı piksel-sanat görüntüsüne dönüştürür. Görüntüyü 3D baskıya hazır parçalara dönüştürmek için görevin ID'sini input_task_id olarak build uç noktasına iletin.

Özellikler

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

    Görev ID'si. Biçimine güvenmeyin.

  • Name
    type
    Type
    string
    Description

    Görev türü, her zaman creative-lab-fidget-pixel-prototype.

  • Name
    name
    Type
    string
    Description

    Görevi oluştururken gönderdiğiniz name, göndermediyseniz "".

  • Name
    status
    Type
    string
    Description

    Görevin durumu.

    Kullanılabilir değerler:

    • PENDING: kuyrukta bekliyor
    • IN_PROGRESS: sonucu üretiyor
    • SUCCEEDED: nihai, sonuçla birlikte
    • FAILED: nihai, sebebi task_error içinde
    • CANCELED: nihai, sonuç yok
  • Name
    progress
    Type
    integer
    Description

    Tamamlanan işin yüzdesi, 0 ile 100 arasında. Görev başlayana kadar 0, başarılı olduğunda 100 olur.

  • Name
    created_at
    Type
    timestamp
    Description

    Görevin oluşturulduğu zaman, Unix milisaniye cinsinden.

  • Name
    started_at
    Type
    timestamp
    Description

    Bir çalışanın görevi başlattığı zaman, Unix milisaniye cinsinden. O zamana kadar null.

  • Name
    finished_at
    Type
    timestamp
    Description

    Görevin nihai bir duruma ulaştığı zaman, Unix milisaniye cinsinden. O zamana kadar null.

  • Name
    expires_at
    Type
    timestamp
    Description

    Görevin sonucunun süresinin dolduğu zaman, Unix milisaniye cinsinden. Bu, finished_at'ten 3 gün sonra, görev bitene kadar ise created_at'ten 3 gün sonrasıdır. API sonuçlarını süresiz olarak saklayan Enterprise hesapları için bu süre yaklaşık 100 yıl sonrasıdır. Bkz. Varlık saklama.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Görev PENDING durumundayken kuyruktaki konumu. 1, sıradaki görev olduğu anlamına gelir. Görev kuyruktan çıktıktan sonra 0'dır ve liste sonuçlarında her zaman 0'dır.

  • Name
    task_error
    Type
    object
    Description

    Görevin neden başarısız olduğu. status değeri FAILED olmadığı sürece null. Bkz. Hatalar.

  • Name
    consumed_credits
    Type
    integer
    Description

    Herhangi bir geri ödemeden sonra görev için tahsil edilen kredi sayısı. Hata döndüren bir istekten ücret alınmaz. Başarısız bir görev 0'dır, çünkü Meshy bunu geri öder. İptal etme, bir görevi yalnızca PENDING durumundayken geri öder. Meshy ücreti okuyamazsa, bir get veya stream yanıtı bu alanı dışarıda bırakır ve bir liste isteği 500 döndürür. Bu durumda, isteği tekrar deneyin.

  • Name
    image_urls
    Type
    array of strings
    Description

    Piksel-sanat görüntüsü için indirme URL'leri. Görev başarılı olduktan sonra dizi bir URL içerir, o zamana kadar boştur.

    URL'ler imzalıdır, bu yüzden bunları bir Authorization başlığı olmadan alın. expires_at'e kadar geçerli kalırlar. Görevi o zamandan önce tekrar almak, yeniden imzalanmış değil, aynı URL'leri döndürür. Süresi dolmuş bir URL yenilenemez, bu yüzden dosyaları o zamandan önce indirip saklayın.


Fidget Pixel build görevi nesnesi

Bir build görevi, başarıyla tamamlanmış bir prototype görevinden 3D baskıya hazır parçaları oluşturur. Meshy, piksel sanatı görselini ızgaraya örnekler ve parçaları tek bir çok renkli 3MF dosyasında döndürür.

Özellikler

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

    Görev kimliği. Biçimine güvenmeyin.

  • Name
    type
    Type
    string
    Description

    Görev türü, her zaman creative-lab-fidget-pixel-build.

  • Name
    name
    Type
    string
    Description

    Görevi oluştururken gönderdiğiniz name değeri, göndermediyseniz "".

  • Name
    status
    Type
    string
    Description

    Görevin durumu.

    Kullanılabilir değerler:

    • PENDING: kuyrukta bekliyor
    • IN_PROGRESS: sonucu oluşturuyor
    • SUCCEEDED: nihai durum, sonuçla birlikte
    • FAILED: nihai durum, nedeni task_error içinde
    • CANCELED: nihai durum, sonuç yok
  • Name
    progress
    Type
    integer
    Description

    Tamamlanan işin yüzdesi, 0 ile 100 arasında. Görev başlayana kadar 0, başarılı olduğunda 100 olur.

  • Name
    created_at
    Type
    timestamp
    Description

    Görevin oluşturulduğu zaman, Unix milisaniye cinsinden.

  • Name
    started_at
    Type
    timestamp
    Description

    Bir çalışanın göreve başladığı zaman, Unix milisaniye cinsinden. O ana kadar null.

  • Name
    finished_at
    Type
    timestamp
    Description

    Görevin nihai duruma ulaştığı zaman, Unix milisaniye cinsinden. O ana kadar null.

  • Name
    expires_at
    Type
    timestamp
    Description

    Görevin sonucunun sona erdiği zaman, Unix milisaniye cinsinden. finished_at değerinden 3 gün sonra, görev tamamlanana kadar ise created_at değerinden 3 gün sonrasıdır. API sonuçlarını süresiz olarak saklayan Enterprise hesaplar için bu değer yaklaşık 100 yıl sonrasıdır. Bkz. Varlık saklama.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Görev PENDING durumundayken kuyruktaki konumu. 1, sırada bir sonraki görev olduğu anlamına gelir. Görev kuyruktan çıktıktan sonra 0 olur ve liste sonuçlarında her zaman 0'dır.

  • Name
    task_error
    Type
    object
    Description

    Görevin neden başarısız olduğu. status değeri FAILED olmadıkça null. Bkz. Hatalar.

  • Name
    consumed_credits
    Type
    integer
    Description

    Görev için ücretlendirilen, varsa iadeden sonraki kredi sayısı. Hata döndüren bir istekten ücret alınmaz. Başarısız bir görev 0'dır, çünkü Meshy bunu iade eder. İptal etme, yalnızca görev PENDING durumundayken bir görevi iade eder. Meshy ücreti okuyamazsa, bir get veya stream yanıtı bu alanı dışarıda bırakır ve bir list isteği 500 döndürür. Bu durumda isteği yeniden deneyin.

  • Name
    model_urls
    Type
    object
    Description

    Sonuç için dosya biçimine göre anahtarlanmış indirme URL'leri. Nesnenin, gönderdiğiniz output.format için bir girişi vardır ve görev başarılı olana kadar boştur.

    URL'ler imzalıdır, bu nedenle bunları bir Authorization başlığı olmadan alın. expires_at zamanına kadar geçerli kalırlar. O zamandan önce görevi tekrar almak, yeniden imzalanmış URL'ler değil, aynı URL'leri döndürür. Süresi dolmuş bir URL yenilenemez, bu nedenle dosyaları o zamandan önce indirip saklayın.

    • Name
      3mf
      Type
      string
      Description

      Çok renkli 3MF dosyası için indirme URL'si. Her parçanın gri bir gövdesi ve pikselinin rengine sahip bir üstü vardır. output.format değeri varsayılan olan 3mf olduğunda mevcuttur.


Uçtan uca örnek

Aşağıdaki cURL ve Python betikleri tüm akışı çalıştırır. Her betik, bir fotoğraftan bir prototype görevi oluşturur ve başarılı olmasını bekler. Ardından bir build görevi oluşturur, bu görevi bekler ve model_urls.3mf üzerinden 3MF dosyasını indirir.

cURL betiği curl ve jq gerektirir, Python betiği ise requests paketine ihtiyaç duyar. Bir betiği çalıştırmak için şu adımları izleyin:

  1. MESHY_API_KEY değişkenini API anahtarınız olarak ayarlayın.
  2. IMAGE_PATH değişkenini yerel bir fotoğrafın yoluna veya IMAGE_URL değişkenini herkese açık bir görsel URL'sine ayarlayın.
  3. İsteğe bağlı: Kişi dışında bir öznenin piksel haline getirilmesi için PIXEL_TYPE değişkenini other olarak ayarlayın.
  4. Betiği çalıştırın.

Bir prototype görevi genellikle birkaç dakika içinde tamamlanır. Bir build görevi ise genellikle bir dakikadan çok daha kısa sürede tamamlanır.

Uygulamanızda, build görevini oluşturmadan önce image_urls içindeki görseli kullanıcınıza gösterin. Görseli beğenmezlerse, bunun yerine başka bir prototype görevi oluşturun. Bu şekilde, build kredilerini yalnızca onayladıkları bir görsel için harcarsınız.

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"