Remesh API
Remesh API memungkinkan Anda melakukan remesh dan mengekspor model 3D yang sudah ada yang dihasilkan oleh API Meshy lainnya (seperti Gambar ke 3D atau Teks ke 3D) ke berbagai format. Bagian ini memberikan detail tentang cara menggunakan Remesh API.
Create a Remesh Task
Endpoint ini membuat tugas remesh baru.
Untuk konversi format dan pengubahan ukuran, gunakan Convert API dan Resize API yang khusus untuk itu. Parameter usang di bawah ini akan tetap berfungsi, tetapi kami merekomendasikan endpoint baru untuk integrasi baru.
Parameter
Hanya salah satu dari input_task_id atau model_url yang wajib diisi. Jika keduanya diberikan, input_task_id akan diprioritaskan.
- Name
- input_task_id
- Type
- string
- Wajib
- Description
ID dari tugas Gambar ke 3D atau Teks ke 3D yang telah selesai dan ingin Anda remesh. Tugas ini harus merupakan salah satu dari tugas berikut: Text to 3D Preview, Text to 3D Refine, Image to 3D, atau Retexture. Selain itu, tugas tersebut harus memiliki status
SUCCEEDED.
- Name
- model_url
- Type
- string
- Wajib
- Description
Silakan berikan model 3D untuk di-remesh oleh Meshy melalui URL yang dapat diakses publik atau data URI. Format yang didukung:
.glb,.gltf,.obj,.fbx,.stl.Untuk Data URI, gunakan MIME type:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- default ["glb"]
- Description
Daftar format target untuk model yang di-remesh. Jika tidak diisi, hanya GLB yang akan dihasilkan.
Nilai yang tersedia:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- default triangle
- Description
Menentukan topology dari model yang dihasilkan.
Nilai yang tersedia:
quad: Menghasilkan mesh yang didominasi quad.triangle: Menghasilkan mesh triangle yang telah didesimasi.
- Name
- target_polycount
- Type
- integer
- default 30,000
- Description
Menentukan target jumlah poligon pada model yang dihasilkan. Jumlah poligon aktual dapat menyimpang dari target tergantung pada kompleksitas geometri.
Rentang nilai yang valid bervariasi tergantung pada tingkat pengguna:
- 100 hingga 300.000 (inklusif)
- Name
- decimation_mode
- Type
- integer
- Description
Aktifkan desimasi adaptif dengan menetapkan level jumlah poligon. Jika ditetapkan,
target_polycountakan diabaikan.Nilai yang tersedia:
1: Adaptif — jumlah poligon ultra.2: Adaptif — jumlah poligon tinggi.3: Adaptif — jumlah poligon sedang.4: Adaptif — jumlah poligon rendah.
- Name
- resize_height
- Type
- number
- ⚠ usang
- default 0
- Description
Ubah ukuran model ke tinggi tertentu yang diukur dalam meter. Kami merekomendasikan penggunaan Resize API yang khusus untuk itu.
auto_size,resize_height, danresize_longest_sidesaling eksklusif.
- Name
- resize_longest_side
- Type
- number
- ⚠ usang
- default 0
- Description
Ubah ukuran model sehingga dimensi bounding-box terpanjang sama dengan nilai yang ditentukan dalam meter. Kami merekomendasikan penggunaan Resize API yang khusus untuk itu.
auto_size,resize_height, danresize_longest_sidesaling eksklusif.
- Name
- auto_size
- Type
- boolean
- ⚠ usang
- default false
- Description
Jika disetel ke
true, layanan akan menggunakan AI vision untuk secara otomatis memperkirakan tinggi objek di dunia nyata dan mengubah ukuran model sesuai dengan itu. Kami merekomendasikan penggunaan Resize API yang khusus untuk itu.auto_size,resize_height, danresize_longest_sidesaling eksklusif.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ usang
- default bottom
- Description
Posisi titik asal. Kami merekomendasikan penggunaan Resize API yang khusus untuk itu.
Nilai yang tersedia:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ usang
- Description
Jika
true, layanan hanya akan mengubah format file model input, mengabaikan input lain sepertitopology,resize_height, dantarget_polycount. Kami merekomendasikan penggunaan Convert API yang khusus untuk itu.target_formatsharus disediakan jikaconvert_format_onlydisetel ketrue.
- Name
- alpha_thumbnail
- Type
- boolean
- default false
- Description
Jika disetel ke
true, tugas ini juga akan me-render versi latar belakang transparan (RGBA) dari pratinjau dan mengembalikannya sebagaialpha_thumbnail_urlpada respons GET. Kolomthumbnail_urlyang sudah ada tetap tidak berubah.
Hasil yang Dikembalikan
Properti result pada respons berisi id dari tugas remesh yang baru dibuat.
Mode Kegagalan
- Name
400 - Bad Request- Description
Permintaan tidak dapat diterima. Penyebab umum:
- Parameter hilang: Salah satu dari
model_urlatauinput_task_idharus disediakan. - Tugas input tidak valid:
input_task_idharus merujuk pada tugas yang berhasil dari model yang didukung. - Format model tidak valid:
model_urlmenunjuk ke file dengan ekstensi yang tidak didukung. - URL tidak dapat dijangkau:
model_urltidak dapat diunduh. - Topology tidak valid: Parameter
topologytidak valid. - Parameter saling eksklusif:
auto_sizedanresize_heighttidak dapat ditetapkan bersamaan.
- Parameter hilang: Salah satu dari
- Name
401 - Unauthorized- Description
Autentikasi gagal. Silakan periksa kunci API Anda.
- Name
402 - Payment Required- Description
Kredit tidak cukup untuk melakukan tugas ini.
- Name
429 - Too Many Requests- Description
Anda telah melampaui batas laju Anda.
Request
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"resize_height": 1.0,
"origin_at": "bottom"
}'
# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"auto_size": true
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Retrieve a Remesh Task
Endpoint ini mengambil tugas remesh berdasarkan ID-nya.
Parameter
- Name
- id
- Type
- path
- Description
ID dari tugas remesh yang ingin diambil.
Returns
Objek Remesh Task.
Request
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Delete a Remesh Task
Endpoint ini menghapus tugas remesh secara permanen, termasuk semua model dan data yang terkait. Tindakan ini tidak dapat dibatalkan.
Path Parameters
- Name
- id
- Type
- path
- Description
ID dari tugas remesh yang akan dihapus.
Task Status
Tugas yang masih berstatus PENDING akan dihapus dan kredit yang
digunakan pada saat pembuatan akan dikembalikan.
Tugas yang sudah IN_PROGRESS tidak dapat dihapus: permintaan akan
ditolak dengan 409 Conflict dan tugas tetap berjalan. Kredit untuk tugas
yang sudah mulai dikerjakan oleh worker tidak dapat dikembalikan, jadi menghapusnya di
tengah proses akan membuat Anda kehilangan kredit sekaligus hasilnya. Tunggu hingga
statusnya mencapai SUCCEEDED, FAILED, atau CANCELED, baru kemudian hapus.
Tugas dengan status akhir (SUCCEEDED, FAILED, atau CANCELED) akan dihapus
tanpa pengembalian kredit.
Returns
Mengembalikan 200 OK jika berhasil, atau 409 Conflict saat tugas
berstatus IN_PROGRESS.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS — the task is left running:
{
"message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}
Daftar Tugas Remesh
Endpoint ini memungkinkan Anda untuk mengambil daftar tugas Remesh.
Parameter
- Name
- page_num
- Type
- integer
- default 1
- Description
Nomor halaman untuk paginasi.
- Name
- page_size
- Type
- integer
- default 10
- Description
Batas ukuran halaman. Maksimum yang diizinkan adalah
100item.
- Name
- sort_by
- Type
- string
- Description
Kolom untuk pengurutan.
Nilai yang tersedia:
+created_at: Urutkan berdasarkan waktu pembuatan secara menaik.-created_at: Urutkan berdasarkan waktu pembuatan secara menurun.
Returns
Mengembalikan daftar berpaginasi dari The Remesh Task Objects.
Request
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
]
Stream Task Remesh
Endpoint ini melakukan streaming pembaruan secara real-time untuk task Remesh menggunakan Server-Sent Events (SSE).
Parameter
- Name
- id
- Type
- path
- Description
Identifier unik untuk task Remesh yang akan di-streaming.
Returns
Mengembalikan stream dari The Remesh Task Objects sebagai Server-Sent Events.
Untuk task dengan status PENDING atau IN_PROGRESS, stream respons hanya akan menyertakan field progress dan status yang diperlukan.
Request
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Objek Remesh Task
Objek Remesh Task merepresentasikan unit kerja yang digunakan Meshy untuk melakukan remesh dan mengekspor model 3D yang sudah ada ke berbagai format. Objek ini memiliki properti berikut:
Properti
- Name
- id
- Type
- string
- Description
Pengidentifikasi unik untuk task. Meskipun kami menggunakan UUID yang dapat diurutkan secara-k (k-sortable) untuk id task sebagai detail implementasi, Anda tidak boleh membuat asumsi apa pun tentang format id tersebut.
- Name
- type
- Type
- string
- Description
Tipe dari Remesh task. Nilainya adalah
remesh.
- Name
- model_urls
- Type
- object
- Description
URL yang dapat diunduh untuk file model 3D bertekstur yang dihasilkan oleh Meshy. Properti untuk suatu format akan dihilangkan jika format tersebut tidak dihasilkan, bukannya mengembalikan string kosong.
- Name
glb- Type
- string
- Description
URL yang dapat diunduh untuk file GLB.
- Name
fbx- Type
- string
- Description
URL yang dapat diunduh untuk file FBX.
- Name
obj- Type
- string
- Description
URL yang dapat diunduh untuk file OBJ.
- Name
usdz- Type
- string
- Description
URL yang dapat diunduh untuk file USDZ.
- Name
blend- Type
- string
- Description
URL yang dapat diunduh untuk file Blender.
- Name
stl- Type
- string
- Description
URL yang dapat diunduh untuk file STL.
- Name
3mf- Type
- string
- Description
URL yang dapat diunduh untuk file 3MF. Hanya ada jika
3mfdiminta melaluitarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
URL yang dapat diunduh untuk gambar pratinjau yang dirender dari model hasil remesh.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL yang dapat diunduh untuk versi latar belakang transparan (RGBA) dari
thumbnail_url. Hanya ada jika task dibuat denganalpha_thumbnail: truedan pratinjau transparan berhasil dirender; jika tidak, kolom ini akan dihilangkan.
- Name
- progress
- Type
- integer
- Description
Progress dari task. Jika task belum dimulai, properti ini akan bernilai
0. Setelah task berhasil, nilainya akan menjadi100.
- Name
- status
- Type
- string
- Description
Status dari task. Kemungkinan nilainya adalah salah satu dari
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Jumlah task yang mendahului.
Nilai kolom ini hanya bermakna jika status task adalah
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Stempel waktu saat task dibuat, dalam milidetik.
- Name
- started_at
- Type
- timestamp
- Description
Stempel waktu saat task dimulai, dalam milidetik. Jika task belum dimulai, properti ini akan bernilai
0.
- Name
- finished_at
- Type
- timestamp
- Description
Stempel waktu saat task selesai, dalam milidetik. Jika task belum selesai, properti ini akan bernilai
0.
- Name
- task_error
- Type
- object
- Description
Detail kesalahan untuk task yang gagal. Lihat Kesalahan untuk referensi lengkap objek
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Jumlah kredit yang digunakan oleh task ini. Ada jika status task adalah
PENDING,IN_PROGRESS, atauSUCCEEDED. Mengembalikan0untuk taskFAILED(kredit dikembalikan jika gagal).
Example Remesh Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}