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/prototypePOST /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.
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
# 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
400dö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
namealanında geri döner. Daha uzun bir ad400dö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_urlveyatypeeksik.type,personveyaotherdeğ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
404dö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.
Authorizationbaş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.
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
# 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/prototypeile hesabınızın oluşturduğu, durumuSUCCEEDEDolan 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
404döndürür.
- Name
- name
- Type
- string
- Description
Görev için en fazla 100 karakterlik bir ad. Görevin
namealanında geri döner. Daha uzun bir ad400dö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
400döndürür.Kullanılabilir değerler:
square: kare bir ızgara üzerinde kare parçalarhex:piece_size_mmdeğeri6veya8olarak 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ı,
16veya32. Başka herhangi bir değer400dö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,8veya10. Başka herhangi bir değer400döndürür.grid_sizeile birlikte, basılan panonun boyutunu belirler. Örneğin, 8 mm'lik parçalardan oluşan bir32ızgara, kenar başına yaklaşık 26,5 cm'dir.10,hexile çalışmaz ve400dö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ı,
1ile8arasında. Aralık dışındaki bir değer400döndürür. Baskı yapmak için, biri her renk için biri de gri gövdeler için olmak üzerecolor_countartı 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,
10ile80arasında. Aralık dışındaki bir değer400dö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
400döndürür.Kullanılabilir değerler:
3mf:model_urls.3mfiçinde döndürülen, çok renkli tek birmodel.3mfdosyası
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_ideksik veya geçerli bir görev kimliği değil.- Prototip görevinin durumu
SUCCEEDEDdeğ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
optionsalanı izin verilen değerlerin dışında, örneğin16veya32dışında birgrid_size. piece_size_mmdeğeri10veshapedeğerihex. Altıgen parçalar yalnızca 6 ve 8 mm olarak gelir.output.formatdeğeri3mfdeğil.
Hata mesajı hangi sorunu bulduğunu belirtir.
- Name
401 - Unauthorized- Description
API anahtarı eksik veya geçersiz.
Authorizationbaş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 de404döndürür. Bir prototip oluşturma yanıtından gelenresultkimliğ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.
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
# 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
idgeçerli bir görev ID'si değil. Oluşturma yanıtındakiresultID'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
/prototypeveya/buildkullanın.
- Name
500 - Internal Server Error- Description
Meshy, fikri mülkiyet kontrolünü çalıştıramadı. İsteği yeniden deneyin.
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
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:
idgeçerli bir görev ID'si değil. Oluşturma yanıtındakiresultID'sini gönderin.- Görev zaten nihai bir durumda (
SUCCEEDED,FAILEDveyaCANCELED), 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
/prototypeveya/buildkullanın.
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
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.
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
# 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,
prototypeveyabuild.
Sorgu parametreleri
- Name
- page_num
- Type
- integer
- varsayılan 1
- Description
Döndürülecek sayfa,
1ile255arasında.0ilk sayfayı döndürür.0ile255dışındaki bir değer400döndürür.
- Name
- page_size
- Type
- integer
- varsayılan 10
- Description
Sayfa başına görev sayısı, en fazla
100.101ile255arasındaki bir değer 100 görev döndürür ve0varsayılanı kullanır.0ile255dışındaki bir değer400dö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 bekliyorIN_PROGRESS: sonucu üretiyorSUCCEEDED: nihai, sonuçla birlikteFAILED: nihai, sebebitask_erroriçindeCANCELED: nihai, sonuç yok
- Name
- progress
- Type
- integer
- Description
Tamamlanan işin yüzdesi,
0ile100arasında. Görev başlayana kadar0, başarılı olduğunda100olur.
- 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 isecreated_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
PENDINGdurumundayken kuyruktaki konumu.1, sıradaki görev olduğu anlamına gelir. Görev kuyruktan çıktıktan sonra0'dır ve liste sonuçlarında her zaman0'dır.
- Name
- task_error
- Type
- object
- Description
Görevin neden başarısız olduğu.
statusdeğeriFAILEDolmadığı sürecenull. 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ızcaPENDINGdurumundayken geri öder. Meshy ücreti okuyamazsa, bir get veya stream yanıtı bu alanı dışarıda bırakır ve bir liste isteği500dö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
Authorizationbaş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
namedeğeri, göndermediyseniz"".
- Name
- status
- Type
- string
- Description
Görevin durumu.
Kullanılabilir değerler:
PENDING: kuyrukta bekliyorIN_PROGRESS: sonucu oluşturuyorSUCCEEDED: nihai durum, sonuçla birlikteFAILED: nihai durum, nedenitask_erroriçindeCANCELED: nihai durum, sonuç yok
- Name
- progress
- Type
- integer
- Description
Tamamlanan işin yüzdesi,
0ile100arasında. Görev başlayana kadar0, başarılı olduğunda100olur.
- 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_atdeğerinden 3 gün sonra, görev tamamlanana kadar isecreated_atdeğ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
PENDINGdurumundayken kuyruktaki konumu.1, sırada bir sonraki görev olduğu anlamına gelir. Görev kuyruktan çıktıktan sonra0olur ve liste sonuçlarında her zaman0'dır.
- Name
- task_error
- Type
- object
- Description
Görevin neden başarısız olduğu.
statusdeğeriFAILEDolmadıkçanull. 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örevPENDINGdurumundayken 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ği500dö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.formatiç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
Authorizationbaşlığı olmadan alın.expires_atzamanı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.formatdeğeri varsayılan olan3mfolduğ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:
MESHY_API_KEYdeğişkenini API anahtarınız olarak ayarlayın.IMAGE_PATHdeğişkenini yerel bir fotoğrafın yoluna veyaIMAGE_URLdeğişkenini herkese açık bir görsel URL'sine ayarlayın.- İsteğe bağlı: Kişi dışında bir öznenin piksel haline getirilmesi için
PIXEL_TYPEdeğişkeniniotherolarak ayarlayın. - 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
#!/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"