lowpoly dihentikan pada 30 Okt 2026. Ganti model sebelum tanggal-tanggal ini agar permintaan tidak error. Lihat semua penghentian

Rigging API

Tambahkan kerangka (armature) ke model 3D humanoid dan ikat mesh ke kerangka tersebut, sehingga karakter siap untuk dianimasikan. Untuk menerapkan Animasi ke karakter yang sudah di-rig, lihat Animation API.

Rigging hanya bekerja dengan baik pada karakter humanoid (berkaki dua) standar yang memiliki struktur anggota tubuh dan tubuh yang jelas.


POST/openapi/v1/rigging

Membuat tugas Rigging

Membuat tugas Rigging untuk model 3D. Ketika tugas berhasil, tugas ini mengembalikan karakter yang sudah di-rig dalam format standar dan, secara opsional, animasi berjalan dan berlari dasar.

Tugas ini berjalan di latar belakang. Untuk mengetahui berapa lama tugas biasanya berlangsung, lihat Waktu pemrosesan.

Rigging tidak cocok untuk model berikut:

  • Mesh tanpa tekstur
  • Aset non-humanoid
  • Aset humanoid dengan struktur anggota tubuh dan badan yang tidak jelas

Request

POST
/openapi/v1/rigging
# Rig a model from a URL
curl https://api.meshy.ai/openapi/v1/rigging \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "model_url": "YOUR_MODEL_URL_OR_DATA_URI",
    "height_meters": 1.8
  }'

Response

{
  "result": "018b314a-a1b5-716d-c222-2f1776f7f579"
}

Parameter

  • Name
    input_task_id
    Type
    string
    Wajib
    Description

    Wajib kecuali Anda mengirim model_url. ID tugas yang modelnya ingin Anda rig. Meshy mendukung model humanoid bertekstur.

    Model dapat memiliki paling banyak 380.000 segitiga (quad dihitung sebagai 2), dan model dengan jumlah lebih banyak akan mengembalikan 400. Untuk tetap berada di bawah batas, jalankan Remesh API pada model tersebut terlebih dahulu dengan target_polycount 300000 atau kurang, atau 150000 atau kurang dengan topology: quad.

  • Name
    model_url
    Type
    string
    Wajib
    Description

    Wajib kecuali Anda mengirim input_task_id. Model yang akan di-rig, sebagai URL publik atau data URI. Jika Anda mengirim keduanya, Meshy menggunakan input_task_id.

    Model harus berupa file GLB (.glb) berukuran paling banyak 400 MB dari URL http atau https, atau 100 MB sebagai data URI. Rigging mendukung model humanoid bertekstur.

    Model dapat memiliki paling banyak 380.000 segitiga (quad dihitung sebagai 2), dan model dengan jumlah lebih banyak akan mengembalikan 400. Untuk tetap berada di bawah batas, jalankan Remesh API pada model tersebut terlebih dahulu dengan target_polycount 300000 atau kurang, atau 150000 atau kurang dengan topology: quad.

    Wajah karakter harus menghadap ke sumbu +Z, arah hadap standar glTF. Estimasi pose akan gagal untuk model yang menghadap ke sumbu lain.

    File di atas 100 MB juga harus mengikuti aturan berikut:

    • File dapat memiliki paling banyak 10.000.000 wajah (face). File dengan jumlah lebih banyak akan mengembalikan 400. Meshy menghitung wajah sebagai segitiga, dan mesh yang digambar lebih dari sekali dihitung sekali per salinan.
    • File tidak boleh menggunakan kompresi Draco.
  • Name
    height_meters
    Type
    number
    default 1.7
    Description

    Perkiraan tinggi karakter, dalam meter. Meshy menggunakannya untuk menskalakan dan me-rig model dengan lebih akurat. Nilai negatif akan mengembalikan 400.

  • Name
    texture_image_url
    Type
    string
    ⚠ usang
    Description

    Hilangkan parameter ini jika model sudah memiliki tekstur sendiri. Tanpa itu, Meshy menggunakan tekstur yang tertanam dalam file model_url, atau tekstur dari tugas input. Jika Anda mengirimkannya, gambar ini menjadi satu-satunya tekstur model yang di-rig, dan model kehilangan peta PBR-nya.

    Tekstur warna dasar model yang di-UV-unwrap, sebagai URL publik atau data URI. Gambar harus berupa file PNG berukuran paling banyak 20 MB. Format gambar lain akan mengembalikan 400.

Hasil yang dikembalikan

Bidang result pada respons menyimpan ID tugas Rigging yang baru.

Mode kegagalan

  • Name
    400 - Bad Request
    Description

    Permintaan tidak dapat dijalankan. Pesan kesalahan menyebutkan masalah apa yang ditemukan. Contohnya:

    • Parameter hilang: Baik model_url maupun input_task_id tidak dikirim.
    • Format model tidak valid: File model_url memiliki ekstensi yang tidak didukung. Hanya .glb yang didukung.
    • URL tidak dapat dijangkau: Meshy tidak dapat mengunduh file model_url.
    • Ukuran file model terlalu besar: File model_url berukuran di atas 400 MB dari URL http atau https, atau di atas 100 MB sebagai data URI.
    • Terlalu banyak wajah (face): File model_url berukuran di atas 100 MB dan memiliki lebih dari 10.000.000 wajah. Kurangi jumlah wajah, lalu kirim file tersebut lagi.
    • File model tidak dapat dibaca: File model_url berukuran di atas 100 MB, dan Meshy tidak dapat membaca headernya. Misalnya, file tersebut adalah GLB yang dikompresi dengan Draco.
    • Header model terlalu kompleks: File model_url berukuran di atas 100 MB, dan headernya memiliki terlalu banyak mesh, node, atau record untuk diperiksa. Kurangi jumlah objek dalam file, lalu kirim lagi.
    • Gambar terlalu besar: Gambar texture_image_url berukuran di atas 20 MB.
    • Format tekstur tidak valid: Gambar texture_image_url bukan file PNG.
    • Tinggi tidak valid: height_meters bernilai negatif.
    • Tugas input tidak valid: input_task_id tidak merujuk ke tugas API yang valid.
    • Tugas input belum siap: Tugas input_task_id belum mencapai status SUCCEEDED. Tunggu hingga berhasil, lalu coba lagi.
    • Jumlah wajah melebihi batas: Model input memiliki lebih dari 380.000 segitiga (quad dihitung sebagai 2). Jalankan Remesh API pada model tersebut dengan target_polycount 300000 atau kurang, atau 150000 atau kurang dengan topology: quad, sebelum me-rig model.

    Perbaiki permintaan, lalu kirim lagi. Lihat Kesalahan.

  • Name
    401 - Unauthorized
    Description

    Kunci API hilang atau tidak valid. Periksa header Authorization.

  • Name
    402 - Payment Required
    Description

    Contohnya:

    • Kredit tidak cukup: Akun tidak memiliki cukup kredit untuk tugas ini, atau akun telah mencapai batas kredit. Periksa saldo kredit Anda, lalu coba lagi.
    • Paket gratis: Membuat tugas memerlukan paket berbayar. Tingkatkan paket Anda di pengaturan langganan, lalu coba lagi.
  • Name
    403 - Forbidden
    Description

    input_task_id adalah model relief (bas-relief), yang tidak dapat di-rig oleh endpoint ini. Pesannya adalah This model type does not support this operation. Kirim model yang berbeda.

  • Name
    404 - Not Found
    Description

    Meshy tidak dapat menemukan file dari tugas input_task_id. Salah satu dari berikut ini berlaku:

    • Meshy menghapus file tugas setelah expires_at-nya. Buat tugas tersebut lagi, lalu kirim ID tugas tersebut.
    • Tugas tersebut tidak memiliki file yang diperlukan untuk rigging, seperti gambar pratinjau, misalnya tugas Konversi. Rig tugas asal file tersebut, atau kirim model sebagai model_url.
  • Name
    422 - Unprocessable Entity
    Description

    Estimasi pose gagal. Model mungkin bukan karakter humanoid yang valid. Kirim model karakter humanoid. Untuk model_url, periksa juga apakah karakter menghadap ke sumbu +Z.

  • Name
    429 - Too Many Requests
    Description

    Anda melebihi batas laju. Tunggu, lalu coba lagi. Lihat Batas laju.


GET/openapi/v1/rigging/:id

Dapatkan task Rigging

Mengembalikan task Rigging berdasarkan ID-nya.

Request

GET
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579
curl https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": null,
  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
    "rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
      "walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
      "walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
      "running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
      "running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
      "running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
    }
  }
}

Parameter

  • Name
    id
    Type
    path
    Description

    ID task dari respons pembuatan.

Returns

Objek task Rigging.


DELETE/openapi/v1/rigging/:id

Menghapus task Rigging

Menghapus task Rigging secara permanen, termasuk model dan datanya. Anda tidak dapat membatalkan penghapusan.

Request

DELETE
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579 \
  -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 keeps 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."
}

Parameter path

  • Name
    id
    Type
    path
    Description

    ID dari task yang akan dihapus.

Status task

Menghapus task PENDING akan mengembalikan kredit yang digunakan saat Anda membuatnya.

Task IN_PROGRESS tidak dapat dihapus. Permintaan akan mengembalikan 409 Conflict, dan task tersebut tetap berjalan. Meshy tidak mengembalikan kredit untuk task yang sudah dimulai, sehingga menghapusnya akan membuat Anda kehilangan baik kredit maupun hasilnya. Tunggu hingga mencapai status SUCCEEDED, FAILED, atau CANCELED, baru kemudian hapus.

Menghapus task dengan status akhir (SUCCEEDED, FAILED, atau CANCELED) tidak akan mengembalikan kreditnya.

Mengembalikan

200 OK saat task berhasil dihapus, atau 409 Conflict saat task berstatus IN_PROGRESS.


GET/openapi/v1/rigging

Daftar tugas Rigging

Mengembalikan daftar tugas Rigging Anda secara berpaginasi, dari yang terbaru. Untuk menelusuri halaman daftar, gunakan page_num dan page_size.

Tugas yang Anda buat dengan API tetap berada di API dan tidak muncul di My Assets pada aplikasi web. Untuk menemukan tugas yang ID-nya sudah tidak Anda miliki lagi, gunakan endpoint ini.

Request

GET
/openapi/v1/rigging
curl "https://api.meshy.ai/openapi/v1/rigging?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"

GET/openapi/v1/rigging/:id/stream

Melakukan Streaming Tugas Rigging

Melakukan streaming pembaruan tugas Rigging sebagai Server-Sent Events (SSE).

Request

GET
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/stream
curl -N https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/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.
// These examples are shortened. Each event holds the full task object.
event: message
data: {
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "progress": 50,
  "status": "IN_PROGRESS"
}

event: message
data: { // Example of a SUCCEEDED task event, with the same fields as the Rigging task object
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": null,
  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/.../Character_output.fbx?...",
    "rigged_character_glb_url": "https://assets.meshy.ai/.../Character_output.glb?...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.glb?...",
      "walking_fbx_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.fbx?...",
      "walking_armature_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin_armature.glb?...",
      "running_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.glb?...",
      "running_fbx_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.fbx?...",
      "running_armature_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin_armature.glb?..."
    }
  }
}

Parameter

  • Name
    id
    Type
    path
    Description

    ID tugas dari respons pembuatan.

Returns

Sebuah stream dari objek tugas Rigging sebagai Server-Sent Events.

Setiap event menyimpan objek tugas lengkap, dengan bentuk yang sama seperti yang dikembalikan oleh endpoint Get. Selama tugas masih PENDING atau IN_PROGRESS, kolom hasilnya belum memiliki nilai.


Objek task Rigging

Objek task Rigging menjelaskan proses rigging untuk satu karakter. Objek ini menyimpan status, progress, dan file output saat task berhasil.

Properties

Example Rigging Task Object

{
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": null,
  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
    "rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
      "walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
      "walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
      "running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
      "running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
      "running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
    }
  }
}
  • Name
    id
    Type
    string
    Description

    ID task. Perlakukan sebagai string opaque, dan jangan bergantung pada formatnya.

  • Name
    type
    Type
    string
    Description

    Jenis task, selalu rig.

  • Name
    status
    Type
    string
    Description

    Status task, salah satu dari PENDING, IN_PROGRESS, SUCCEEDED, FAILED, atau CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Seberapa banyak task telah selesai, dalam persentase. Nilainya 0 hingga task dimulai dan 100 saat task berhasil.

  • Name
    created_at
    Type
    timestamp
    Description

    Waktu task dibuat, dalam milidetik Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Waktu task dimulai, dalam milidetik Unix. Nilainya 0 hingga task dimulai.

  • Name
    finished_at
    Type
    timestamp
    Description

    Waktu task selesai, dalam milidetik Unix. Nilainya 0 hingga task selesai.

  • Name
    expires_at
    Type
    timestamp
    Description

    Waktu file hasil task kedaluwarsa, dalam milidetik Unix. Setelah waktu ini, Meshy dapat menghapus file tersebut.

  • Name
    task_error
    Type
    object
    Description

    Detail kesalahan saat task gagal. Nilainya null kecuali statusnya FAILED. Lihat Kesalahan.

  • Name
    consumed_credits
    Type
    integer
    Description

    Jumlah kredit yang digunakan oleh task. Muncul saat statusnya PENDING, IN_PROGRESS, atau SUCCEEDED. Nilainya 0 untuk task FAILED, karena Meshy mengembalikan kredit saat task gagal.

  • Name
    result
    Type
    object
    Description

    URL file output. Sampai task berhasil, setiap URL berupa string kosong, dan basic_animations bernilai null.

    • Name
      rigged_character_fbx_url
      Type
      string
      Description

      URL unduhan untuk karakter yang sudah di-rig sebagai file FBX.

    • Name
      rigged_character_glb_url
      Type
      string
      Description

      URL unduhan untuk karakter yang sudah di-rig sebagai file GLB.

    • Name
      basic_animations
      Type
      object (optional)
      Description

      URL unduhan untuk animasi berjalan dan berlari bawaan.

      • Name
        walking_glb_url
        Type
        string
        Description
        Animasi berjalan dengan skin, sebagai file GLB.
      • Name
        walking_fbx_url
        Type
        string
        Description
        Animasi berjalan dengan skin, sebagai file FBX.
      • Name
        walking_armature_glb_url
        Type
        string
        Description
        Armature animasi berjalan, sebagai file GLB.
      • Name
        running_glb_url
        Type
        string
        Description
        Animasi berlari dengan skin, sebagai file GLB.
      • Name
        running_fbx_url
        Type
        string
        Description
        Animasi berlari dengan skin, sebagai file FBX.
      • Name
        running_armature_glb_url
        Type
        string
        Description
        Armature animasi berlari, sebagai file GLB.
  • Name
    preceding_tasks
    Type
    integer
    Description

    Jumlah task yang berada di depan task ini dalam antrean. Nilai ini hanya berarti selama task berstatus PENDING. Kolom ini tidak disertakan saat nilainya 0.