API Creative Lab Fidget Pixel
Tukar foto kepada papan fidget seni piksel pelbagai warna yang boleh dicetak 3D dalam dua peringkat. Tugas prototaip menukar foto kepada imej seni piksel. Tugas binaan menukar imej itu kepada kepingan yang saling mengunci dalam satu fail 3MF, dan mengambil ID tugas prototaip sebagai input_task_id.
POST /openapi/creative-lab/fidget-pixel/v1/prototypePOST /openapi/creative-lab/fidget-pixel/v1/build
Kedua-dua endpoint POST memerlukan pelan berbayar. Permintaan daripada akaun pelan percuma akan mengembalikan 402.
Create a Fidget Pixel prototype task
Menjana satu imej seni piksel daripada sebuah foto. Untuk membina kepingan-kepingan, hantar ID tugas ini kepada build endpoint sebagai input_task_id. Untuk medan-medan tugas ini, lihat The Fidget Pixel prototype task object.
Jika anda tidak berpuas hati dengan imej tersebut, cipta satu lagi tugas prototaip. Setiap tugas dikenakan caj secara berasingan.
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"
}
Parameter
- Name
- image_url
- Type
- string
- Diperlukan
- Description
Foto yang hendak dijadikan seni piksel, sebagai URL awam atau data URI (
data:image/jpeg;base64,<data imej anda yang dikodkan base64>).Imej mestilah fail JPG, JPEG, PNG, atau WebP dengan saiz maksimum 20 MB. Meshy mengesan format daripada data imej, bukan daripada sambungan fail dalam URL. URL tanpa sambungan tetap berfungsi, dan Meshy mengikuti pengalihan semula (redirect).
- Name
- type
- Type
- string
- Diperlukan
- Description
Apa yang ditunjukkan oleh foto tersebut, yang menentukan gaya seni piksel. Kedua-dua gaya ini kelihatan jelas berbeza. Sebarang nilai lain mengembalikan
400.Nilai yang tersedia:
person: seseorang, dalam foto potret atau foto sepenuh badan. Meshy melukis sprite piksel bergaya chibi.other: sebarang subjek lain, contohnya haiwan peliharaan, objek, maskot, logo, atau landskap. Meshy melukis ikon piksel bergaya seni manik.
- Name
- name
- Type
- string
- Description
Nama untuk tugas tersebut, sehingga 100 aksara. Nama ini dikembalikan dalam medan
nametugas. Nama yang lebih panjang mengembalikan400.
Returns
Medan result menyimpan ID tugas prototaip baharu. Dapatkan tugas atau strim tugas tersebut sehingga status menjadi SUCCEEDED. Kemudian hantar ID tersebut kepada build endpoint sebagai input_task_id.
Failure modes
- Name
400 - Bad Request- Description
Permintaan tidak dapat dijalankan. Contohnya:
image_urlatautypetiada.typebukanpersonatauother.- Imej bukan fail JPG, JPEG, PNG, atau WebP.
- Imej terlalu kecil, melebihi 20 MB, atau melebihi bilangan piksel maksimum.
- Meshy tidak dapat memuat turun imej, contohnya kerana URL mengembalikan
404atau tamat masa. - Data URI bukan base64 yang sah.
- Imej ditandakan sebagai NSFW.
Mesej ralat menyatakan masalah yang ditemui. Betulkan permintaan, kemudian hantar semula.
- Name
401 - Unauthorized- Description
Kunci API tiada atau tidak sah. Semak header
Authorization.
- Name
402 - Payment Required- Description
Salah satu daripada perkara berikut berlaku:
- Akaun tidak mempunyai kredit yang mencukupi.
- Kunci API, ruang kerja, atau ahli telah mencapai had kreditnya.
- Akaun berada pada pelan percuma.
Semak kredit dan pelan anda, kemudian cuba semula.
- Name
403 - Forbidden- Description
Pasukan anda telah menghidupkan IP Filtering, dan Meshy menandakan imej tersebut berkaitan harta intelek pihak ketiga. Hantar imej yang anda mempunyai hak untuk digunakan.
- Name
429 - Too Many Requests- Description
Salah satu had berikut telah dicapai:
- Anda menghantar lebih banyak permintaan daripada yang dibenarkan oleh had kadar anda. Tunggu beberapa saat, kemudian cuba semula. Lihat Rate limits.
- Terlalu banyak tugas anda sedang beratur atau sedang berjalan. Tunggu sehingga sebahagiannya selesai, kemudian cuba semula.
- Pada pelan tanpa had tanpa baki kredit, anda telah mencapai bilangan tugas yang boleh berjalan tanpa kredit. Tunggu satu tugas selesai, atau tambah kredit.
- Name
500 - Internal Server Error- Description
Meshy mengalami ralat pelayan, contohnya kerana ia tidak dapat menjalankan pemeriksaan harta intelek ke atas imej tersebut. Meshy tidak mencipta tugas tersebut, dan memulangkan semula sebarang kredit yang telah dicaj. Cuba semula permintaan tersebut.
Cipta tugas pembinaan Fidget Pixel
Menjana kepingan boleh cetak 3D daripada tugas prototaip yang berjaya. Meshy mengambil sampel imej seni piksel ke atas grid dan mengurangkannya kepada paling banyak color_count warna. Setiap sel subjek menjadi kepingan yang saling berkunci, dan latar belakang tidak dicetak.
Hasilnya ialah satu fail 3MF berbilang warna, sedia untuk dicetak secara berwarna. Setiap kepingan mempunyai badan kelabu dan bahagian atas dalam warna piksel tersebut. Untuk medannya, lihat Objek tugas pembinaan Fidget Pixel.
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"
}
Parameter
- Name
- input_task_id
- Type
- string
- Diperlukan
- Description
ID tugas prototaip untuk dibina. Ia mesti merupakan tugas yang dicipta oleh akaun anda dengan
POST /openapi/creative-lab/fidget-pixel/v1/prototype, dengan statusSUCCEEDED.ID yang bukan salah satu tugas prototaip Fidget Pixel anda daripada API mengembalikan
404, termasuk prototaip yang dibuat dalam aplikasi web.
- Name
- name
- Type
- string
- Description
Nama untuk tugas, sehingga 100 aksara. Ia dikembalikan dalam medan
nametugas tersebut. Nama yang lebih panjang mengembalikan400.
options
Tetapan untuk bentuk dan saiz kepingan. Setiap medan mempunyai nilai lalai, jadi hantar hanya medan yang ingin anda ubah. 0 menggunakan nilai lalai medan tersebut. Ini adalah tetapan yang sama seperti dalam aplikasi web Creative Lab. Tetapan bentuk lain adalah tetap, dan Meshy menetapkannya daripada shape dan piece_size_mm.
- Name
- shape
- Type
- string
- lalai square
- Description
Bentuk tapak bagi setiap kepingan. Sebarang nilai lain mengembalikan
400.Nilai yang tersedia:
square: kepingan segi empat sama pada grid segi empat samahex: kepingan heksagon pada grid heksagon, denganpiece_size_mmditetapkan kepada6atau8
- Name
- grid_size
- Type
- integer
- lalai 32
- Description
Bilangan sel grid di sepanjang setiap sisi papan,
16atau32. Sebarang nilai lain mengembalikan400. Grid32mengekalkan lebih banyak perincian. Grid16memberikan kepingan yang lebih sedikit dengan saiz yang sama, jadi papan menjadi kira-kira separuh lebarnya.
- Name
- piece_size_mm
- Type
- integer
- lalai 8
- Description
Panjang tepi setiap kepingan dalam milimeter,
6,8, atau10. Sebarang nilai lain mengembalikan400. Bersamagrid_size, ia menetapkan saiz papan yang dicetak. Sebagai contoh, grid32bagi kepingan 8 mm adalah kira-kira 26.5 cm setiap sisi.10tidak berfungsi denganhexdan mengembalikan400, kerana permukaan heksagon yang condong melampaui pada kebanyakan pencetak FDM pengguna.
- Name
- color_count
- Type
- integer
- lalai 8
- Description
Bilangan maksimum warna dalam palet seni piksel, dari
1hingga8. Nilai di luar julat mengembalikan400. Untuk mencetak, anda memerlukan sehinggacolor_counttambah satu filamen, satu untuk setiap warna dan satu untuk badan kelabu.
- Name
- piece_height_mm
- Type
- integer
- lalai 15
- Description
Ketinggian setiap kepingan dalam milimeter, dari
10hingga80. Nilai di luar julat mengembalikan400.
output
Tetapan untuk fail hasil.
- Name
- format
- Type
- string
- lalai 3mf
- Description
Format fail hasil. Sebarang nilai lain mengembalikan
400.Nilai yang tersedia:
3mf: satu failmodel.3mfberbilang warna, dikembalikan dalammodel_urls.3mf
Pulangan
Medan result menyimpan ID tugas pembinaan baharu. Dapatkan tugas atau strim ia sehingga status adalah SUCCEEDED. Kemudian muat turun fail 3MF daripada model_urls.3mf.
Mod kegagalan
- Name
400 - Bad Request- Description
Permintaan tidak dapat dijalankan. Sebagai contoh:
input_task_idhilang atau bukan ID tugas yang sah.- Status tugas prototaip bukan
SUCCEEDED. Jika masih berjalan, tunggu dan cuba semula. Jika ia gagal atau dibatalkan, cipta tugas prototaip baharu. - Tugas prototaip berjaya tetapi tiada imej. Cipta tugas prototaip baharu.
- Medan
optionsberada di luar nilai yang dibenarkan, sebagai contohgrid_sizeselain16atau32. piece_size_mmadalah10danshapeadalahhex. Kepingan heksagon hanya terdapat dalam 6 dan 8 mm.output.formatbukan3mf.
Mesej ralat menyatakan masalah yang ditemuinya.
- Name
401 - Unauthorized- Description
Kunci API hilang atau tidak sah. Semak header
Authorization.
- Name
402 - Payment Required- Description
Salah satu daripada berikut berlaku:
- Akaun tidak mempunyai kredit yang mencukupi.
- Kunci API, ruang kerja, atau ahli telah mencapai had kreditnya.
- Akaun berada pada pelan percuma.
Semak kredit dan pelan anda, kemudian cuba semula.
- Name
403 - Forbidden- Description
Pasukan anda telah mengaktifkan IP Filtering, dan Meshy menandakan imej tugas prototaip untuk harta intelek pihak ketiga. Cipta tugas prototaip daripada imej yang anda mempunyai hak untuk menggunakannya.
- Name
404 - Not Found- Description
input_task_idtidak sepadan dengan mana-mana tugas prototaip Fidget Pixel yang dicipta oleh akaun anda dengan API. Prototaip yang dibuat dalam aplikasi web juga mengembalikan404. Hantar IDresultdaripada respons penciptaan prototaip.
- Name
429 - Too Many Requests- Description
Salah satu had ini telah dicapai:
- Anda menghantar lebih banyak permintaan daripada yang dibenarkan oleh had kadar anda. Tunggu beberapa saat, kemudian cuba semula. Lihat Had kadar.
- Terlalu banyak tugas anda sedang dalam baris gilir atau sedang berjalan. Tunggu sehingga sebahagiannya selesai, kemudian cuba semula.
- Pada pelan tanpa had tanpa kredit yang tinggal, anda telah mencapai bilangan tugas yang boleh berjalan tanpa kredit. Tunggu sehingga satu tugas selesai, atau tambah kredit.
- Name
500 - Internal Server Error- Description
Meshy mengalami ralat pelayan, sebagai contoh kerana ia tidak dapat menjalankan semakan harta intelek pada imej tugas prototaip. Meshy tidak mencipta tugas tersebut, dan memulangkan semula sebarang kredit yang telah dicaj. Cuba semula permintaan tersebut.
Dapatkan tugas Fidget Pixel
Mengembalikan tugas prototaip atau build. Laluan mesti sepadan dengan peringkat tugas tersebut. Tugas build yang diminta melalui /prototype/:id akan mengembalikan 404, begitu juga tugas prototaip yang diminta melalui /build/:id.
Untuk medan-medannya, lihat Objek tugas prototaip Fidget Pixel dan Objek tugas build Fidget Pixel.
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=***"
}
}
Parameter
- Name
- id
- Type
- path
- Description
ID tugas daripada respons create.
Hasil Kembalian
Objek tugas prototaip atau objek tugas build, bergantung kepada peringkat dalam laluan.
Mod kegagalan
- Name
400 - Bad Request- Description
idbukan ID tugas yang sah. Hantar IDresultdaripada respons create.
- Name
403 - Forbidden- Description
Pasukan anda telah mengaktifkan IP Filtering, dan Meshy menandakan imej tugas prototaip tersebut kerana hak harta intelek pihak ketiga. Tugas build dan pasukan pada pelan Enterprise tidak akan menerima ralat ini. Cipta tugas prototaip daripada imej yang anda mempunyai hak untuk digunakan.
- Name
404 - Not Found- Description
Tiada tugas Fidget Pixel dengan ID ini yang dimiliki oleh akaun anda, atau peringkat tugas tersebut tidak sepadan dengan laluan. Semak ID tersebut, dan gunakan
/prototypeatau/builduntuk menyepadankan tugas.
- Name
500 - Internal Server Error- Description
Meshy tidak dapat menjalankan semakan harta intelek. Cuba semula permintaan tersebut.
Padam tugas Fidget Pixel
Membatalkan tugas Fidget Pixel. Membatalkan tugas PENDING akan memulangkan kreditnya. Tugas IN_PROGRESS dibatalkan tanpa bayaran balik, kerana pekerja sudah memulakannya. Tugas dengan status akhir (SUCCEEDED, FAILED, atau CANCELED) tidak boleh dibatalkan.
Laluan mesti sepadan dengan peringkat tugas tersebut. Sebagai contoh, DELETE pada /prototype/:id dengan ID tugas build akan mengembalikan 404.
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).
Parameter laluan
- Name
- id
- Type
- path
- Description
ID tugas yang hendak dibatalkan.
Nilai pulangan
204 No Content dengan badan kosong.
Mod kegagalan
- Name
400 - Bad Request- Description
Salah satu daripada berikut berlaku:
idbukan ID tugas yang sah. Hantar IDresultdaripada respons penciptaan.- Tugas sudah mempunyai status akhir (
SUCCEEDED,FAILED, atauCANCELED), jadi ia tidak boleh dibatalkan.
- Name
404 - Not Found- Description
Tiada tugas Fidget Pixel dengan ID ini yang dimiliki oleh akaun anda, atau peringkat tugas tidak sepadan dengan laluan tersebut. Semak ID tersebut, dan gunakan
/prototypeatau/builduntuk menyepadankan tugas tersebut.
Alirkan tugas Fidget Pixel
Mengalirkan kemas kini tugas Fidget Pixel sebagai Server-Sent Events (SSE). Laluan tersebut mesti sepadan dengan peringkat tugas. Jika tidak, contohnya ID tugas build pada /prototype/:id/stream, aliran tersebut menghantar satu peristiwa error dengan status_code: 404 dan ditutup. Satu id yang bukan ID tugas yang sah akan berbuat perkara yang sama dengan status_code: 400.
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=***"
}
}
Parameter
- Name
- id
- Type
- path
- Description
ID tugas daripada respons create.
Pulangan
Satu aliran objek tugas prototype atau build. Setiap peristiwa mengandungi objek tugas yang lengkap, seperti yang dipulangkan oleh Dapatkan tugas Fidget Pixel. Semasa tugas berstatus PENDING atau IN_PROGRESS, medan outputnya masih kosong (null, [], atau {}), dan finished_at adalah null.
Jika IP Filtering menyekat hasil tugas, aliran tersebut akan menghantar satu peristiwa error sebagai gantinya, dengan status_code yang sama seperti yang akan dipulangkan oleh permintaan get.
Senaraikan tugasan Fidget Pixel
Mengembalikan tugasan Fidget Pixel anda bagi satu peringkat, satu halaman pada satu masa. Laluan tersebut memilih peringkat. /prototype hanya mengembalikan tugasan prototaip, dan /build hanya mengembalikan tugasan pembinaan.
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=***"
]
}
]
Parameter laluan
- Name
- stage
- Type
- path
- Diperlukan
- Description
Peringkat yang hendak disenaraikan,
prototypeataubuild.
Parameter pertanyaan
- Name
- page_num
- Type
- integer
- lalai 1
- Description
Halaman yang hendak dikembalikan, dari
1hingga255.0mengembalikan halaman pertama. Nilai di luar0hingga255akan mengembalikan400.
- Name
- page_size
- Type
- integer
- lalai 10
- Description
Bilangan tugasan setiap halaman, sehingga
100. Nilai dari101hingga255mengembalikan 100 tugasan, dan0menggunakan nilai lalai. Nilai di luar0hingga255akan mengembalikan400.
- Name
- sort_by
- Type
- string
- lalai -created_at
- Description
Susunan isihan.
Nilai yang tersedia:
-created_at: terbaharu dahulu+created_at: terlama dahulu
Nilai pulangan
Satu array bagi objek tugasan prototaip atau objek tugasan pembinaan, mengikut peringkat yang dinyatakan dalam laluan.
Objek tugas prototaip Fidget Pixel
Tugas prototaip menukar foto kepada imej seni piksel. Untuk menukar imej itu kepada kepingan yang boleh dicetak 3D, hantar ID tugas ke build endpoint sebagai input_task_id.
Ciri-ciri
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 tugas. Jangan bergantung pada formatnya.
- Name
- type
- Type
- string
- Description
Jenis tugas, sentiasa
creative-lab-fidget-pixel-prototype.
- Name
- name
- Type
- string
- Description
nameyang anda hantar semasa mencipta tugas, atau""jika anda tidak menghantarnya.
- Name
- status
- Type
- string
- Description
Status tugas.
Nilai yang tersedia:
PENDING: menunggu dalam baris gilirIN_PROGRESS: menjana hasilSUCCEEDED: muktamad, dengan hasilFAILED: muktamad, dengan sebab dalamtask_errorCANCELED: muktamad, tanpa hasil
- Name
- progress
- Type
- integer
- Description
Peratusan kerja yang telah selesai, dari
0hingga100. Nilainya0sehingga tugas bermula dan100apabila ia berjaya.
- Name
- created_at
- Type
- timestamp
- Description
Masa tugas dicipta, dalam milisaat Unix.
- Name
- started_at
- Type
- timestamp
- Description
Masa seorang pekerja memulakan tugas, dalam milisaat Unix.
nullsehingga itu.
- Name
- finished_at
- Type
- timestamp
- Description
Masa tugas mencapai status muktamad, dalam milisaat Unix.
nullsehingga itu.
- Name
- expires_at
- Type
- timestamp
- Description
Masa hasil tugas tamat tempoh, dalam milisaat Unix. Ia adalah 3 hari selepas
finished_at, atau 3 hari selepascreated_atsehingga tugas selesai. Bagi akaun Enterprise, yang menyimpan hasil API tanpa had masa, ia kira-kira 100 tahun kemudian. Lihat Pengekalan aset.
- Name
- preceding_tasks
- Type
- integer
- Description
Kedudukan tugas dalam baris gilir semasa ia
PENDING.1bermaksud ia akan bermula seterusnya.0selepas tugas keluar dari baris gilir, dan sentiasa0dalam hasil senarai.
- Name
- task_error
- Type
- object
- Description
Sebab tugas gagal.
nullkecualistatusadalahFAILED. Lihat Ralat.
- Name
- consumed_credits
- Type
- integer
- Description
Bilangan kredit yang dikenakan untuk tugas, selepas sebarang bayaran balik. Permintaan yang mengembalikan ralat tidak dikenakan caj. Tugas yang gagal adalah
0, kerana Meshy membayar baliknya. Membatalkan hanya membayar balik tugas semasa iaPENDING. Jika Meshy tidak dapat membaca caj tersebut, respons get atau stream akan mengecualikan medan ini, dan permintaan senarai akan mengembalikan500. Dalam kes itu, cuba semula permintaan tersebut.
- Name
- image_urls
- Type
- array of strings
- Description
URL muat turun untuk imej seni piksel. Tatasusunan ini mempunyai satu URL selepas tugas berjaya, dan kosong sehingga itu.
URL tersebut ditandatangani, jadi ambil ia tanpa header
Authorization. Ia kekal sah sehinggaexpires_at. Mendapatkan semula tugas sebelum itu mengembalikan URL yang sama, bukan yang baru ditandatangani. URL yang telah tamat tempoh tidak boleh disegarkan semula, jadi muat turun dan simpan fail sebelum itu.
Objek tugas binaan Fidget Pixel
Tugas binaan menjana kepingan yang boleh dicetak dalam 3D daripada tugas prototaip yang berjaya. Meshy mencontohi imej seni piksel ke atas grid dan mengembalikan kepingan tersebut dalam satu fail 3MF berbilang warna.
Ciri-ciri
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 tugas. Jangan bergantung pada formatnya.
- Name
- type
- Type
- string
- Description
Jenis tugas, sentiasa
creative-lab-fidget-pixel-build.
- Name
- name
- Type
- string
- Description
nameyang anda hantar semasa mencipta tugas, atau""jika anda tidak menghantarnya.
- Name
- status
- Type
- string
- Description
Status tugas.
Nilai yang tersedia:
PENDING: menunggu dalam baris gilirIN_PROGRESS: menjana hasilSUCCEEDED: muktamad, dengan hasilFAILED: muktamad, dengan sebab dalamtask_errorCANCELED: muktamad, tanpa hasil
- Name
- progress
- Type
- integer
- Description
Peratusan kerja yang telah selesai, dari
0hingga100. Nilainya0sehingga tugas bermula dan100apabila berjaya.
- Name
- created_at
- Type
- timestamp
- Description
Masa tugas dicipta, dalam milisaat Unix.
- Name
- started_at
- Type
- timestamp
- Description
Masa seorang pekerja memulakan tugas, dalam milisaat Unix.
nullsehingga ketika itu.
- Name
- finished_at
- Type
- timestamp
- Description
Masa tugas mencapai status muktamad, dalam milisaat Unix.
nullsehingga ketika itu.
- Name
- expires_at
- Type
- timestamp
- Description
Masa hasil tugas tamat tempoh, dalam milisaat Unix. Ia adalah 3 hari selepas
finished_at, atau 3 hari selepascreated_atsehingga tugas selesai. Bagi akaun Enterprise, yang menyimpan hasil API tanpa had masa, ia adalah lebih kurang 100 tahun kemudian. Lihat Pengekalan aset.
- Name
- preceding_tasks
- Type
- integer
- Description
Kedudukan tugas dalam baris gilir semasa ia
PENDING.1bermaksud ia akan bermula seterusnya.0selepas tugas keluar dari baris gilir, dan sentiasa0dalam hasil senarai.
- Name
- task_error
- Type
- object
- Description
Sebab tugas gagal.
nullkecualistatusadalahFAILED. Lihat Ralat.
- Name
- consumed_credits
- Type
- integer
- Description
Bilangan kredit yang dicaj untuk tugas, selepas sebarang bayaran balik. Permintaan yang mengembalikan ralat tidak dicaj. Tugas yang gagal adalah
0, kerana Meshy membayar balik kreditnya. Membatalkan hanya membayar balik tugas semasa iaPENDING. Jika Meshy tidak dapat membaca caj tersebut, respons get atau stream tidak akan menyertakan medan ini, dan permintaan senarai akan mengembalikan500. Dalam kes itu, cuba semula permintaan tersebut.
- Name
- model_urls
- Type
- object
- Description
URL muat turun untuk hasil, dikunci mengikut format fail. Objek ini mempunyai satu entri, untuk
output.formatyang anda hantar, dan kosong sehingga tugas berjaya.URL ini ditandatangani, jadi ambil fail tersebut tanpa header
Authorization. URL ini kekal sah sehinggaexpires_at. Mendapatkan semula tugas sebelum itu akan mengembalikan URL yang sama, bukan yang baru ditandatangani. URL yang telah tamat tempoh tidak boleh disegarkan semula, jadi muat turun dan simpan fail tersebut sebelum itu.- Name
3mf- Type
- string
- Description
URL muat turun untuk fail 3MF berbilang warna. Setiap kepingan mempunyai badan kelabu dan bahagian atas dengan warna piksel masing-masing. Hadir apabila
output.formatialah3mf, iaitu lalai.
Contoh hujung ke hujung
Skrip cURL dan Python berikut menjalankan keseluruhan aliran. Setiap skrip mencipta tugas prototaip daripada sebuah foto dan menunggu sehingga ia berjaya. Kemudian ia mencipta tugas build, menunggu tugas tersebut, dan memuat turun fail 3MF daripada model_urls.3mf.
Skrip cURL memerlukan curl dan jq, dan skrip Python memerlukan pakej requests. Untuk menjalankan skrip, ikuti langkah-langkah berikut:
- Tetapkan
MESHY_API_KEYkepada kunci API anda. - Tetapkan
IMAGE_PATHkepada laluan foto tempatan, atauIMAGE_URLkepada URL imej awam. - Pilihan: Untuk mempiksel subjek selain daripada manusia, tetapkan
PIXEL_TYPEkepadaother. - Jalankan skrip.
Tugas prototaip biasanya selesai dalam beberapa minit. Tugas build biasanya selesai dalam masa kurang seminit.
Dalam aplikasi anda, tunjukkan imej daripada image_urls kepada pengguna anda sebelum anda mencipta tugas build. Jika mereka tidak menyukainya, cipta satu lagi tugas prototaip sebaliknya. Dengan cara ini, anda hanya membelanjakan kredit build untuk imej yang mereka luluskan.
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"