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 disediakan. Parameter usang di bawah ini akan tetap berfungsi, tetapi kami merekomendasikan penggunaan 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, statusnya harus
SUCCEEDED.
- Name
- model_url
- Type
- string
- Wajib
- Description
Berikan sebuah 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 telah 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
Tentukan topology dari model yang dihasilkan.
Nilai yang tersedia:
quad: Menghasilkan mesh yang didominasi oleh quad.triangle: Menghasilkan mesh segitiga yang telah didesimasi.
- Name
- target_polycount
- Type
- integer
- default 30,000
- Description
Tentukan jumlah target poligon pada model yang dihasilkan. Jumlah poligon sebenarnya 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 diatur,
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 disediakan sebagai gantinya.
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 disediakan sebagai gantinya.
auto_size,resize_height, danresize_longest_sidesaling eksklusif.
- Name
- auto_size
- Type
- boolean
- ⚠ usang
- default false
- Description
Jika diatur 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 disediakan sebagai gantinya.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 disediakan sebagai gantinya.
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 disediakan sebagai gantinya.target_formatsharus disediakan jikaconvert_format_onlydiatur ketrue.
- Name
- alpha_thumbnail
- Type
- boolean
- default false
- Description
Jika diatur ke
true, tugas juga akan me-render versi latar belakang transparan (RGBA) dari pratinjau dan mengembalikannya sebagaialpha_thumbnail_urlpada respons GET. Fieldthumbnail_urlyang sudah ada 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 diatur secara 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 menjalankan 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 akan 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.
Returns
Mengembalikan 200 OK jika berhasil.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
Daftar Tugas Remesh
Endpoint ini memungkinkan Anda 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. Maksimal yang diizinkan adalah
50item.
- 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
}
]
Melakukan Streaming Tugas Remesh
Endpoint ini melakukan streaming pembaruan secara real-time untuk tugas Remesh menggunakan Server-Sent Events (SSE).
Parameter
- Name
- id
- Type
- path
- Description
Identifier unik untuk tugas Remesh yang akan di-streaming.
Returns
Mengembalikan aliran (stream) The Remesh Task Objects sebagai Server-Sent Events.
Untuk tugas dengan status PENDING atau IN_PROGRESS, aliran 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 Tugas Remesh
Objek Tugas Remesh mewakili 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 tugas ini. Meskipun kami menggunakan k-sortable UUID untuk id tugas sebagai detail implementasi, Anda tidak boleh membuat asumsi apa pun tentang format id tersebut.
- Name
- type
- Type
- string
- Description
Tipe dari tugas Remesh. 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, alih-alih 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 saat
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 saat tugas dibuat denganalpha_thumbnail: truedan pratinjau transparan berhasil dirender; jika tidak, kolom ini akan dihilangkan.
- Name
- progress
- Type
- integer
- Description
Progress dari tugas ini. Jika tugas belum dimulai, properti ini akan bernilai
0. Setelah tugas berhasil, nilai ini akan menjadi100.
- Name
- status
- Type
- string
- Description
Status dari tugas ini. Nilai yang mungkin adalah salah satu dari
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Jumlah tugas yang mendahului.
Nilai kolom ini hanya bermakna jika status tugas adalah
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Stempel waktu saat tugas dibuat, dalam milidetik.
- Name
- started_at
- Type
- timestamp
- Description
Stempel waktu saat tugas dimulai, dalam milidetik. Jika tugas belum dimulai, properti ini akan bernilai
0.
- Name
- finished_at
- Type
- timestamp
- Description
Stempel waktu saat tugas selesai, dalam milidetik. Jika tugas belum selesai, properti ini akan bernilai
0.
- Name
- task_error
- Type
- object
- Description
Detail kesalahan untuk tugas yang gagal. Lihat Kesalahan untuk referensi lengkap objek
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Jumlah kredit yang digunakan oleh tugas ini. Ada saat status tugas adalah
PENDING,IN_PROGRESS, atauSUCCEEDED. Mengembalikan0untuk tugasFAILED(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
}