Text to Motion API
Hasilkan klip gerakan karakter dari deskripsi teks. Deskripsikan sebuah aksi, seperti "karakter yang melambaikan tangan" atau "zombi yang berjalan terseok-seok ke depan", dan dapatkan klip gerakan mentah. Anda dapat melakukan retarget klip tersebut ke karakter yang sudah memiliki rig di pipeline atau alat DCC Anda sendiri.
Keluarannya adalah klip gerakan yang berdiri sendiri. Klip ini tidak memerlukan model karakter, dan tidak terikat pada satu model pun. Untuk melakukan rigging pada karakter terlebih dahulu, lihat Rigging APIid tugas sebagai motion_task_id ke Animation API
Membuat task Text to Motion
Membuat task Text to Motion, yang menghasilkan klip gerakan dari prompt teks.
Task berjalan di latar belakang. Untuk informasi berapa lama task biasanya berlangsung, lihat Waktu pemrosesan.
Task prime berbiaya 10 kredit dan menggunakan model gerakan Meshy berkualitas lebih tinggi. Task swift berbiaya 3 kredit dan menggunakan model gerakan yang lebih cepat dan lebih murah.
Request
# Generate a motion clip with required params only
curl https://api.meshy.ai/openapi/v1/text-to-motion \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"prompt": "a character waving",
"duration": 3
}'
# Generate a fast, economical clip with Swift mode
curl https://api.meshy.ai/openapi/v1/text-to-motion \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"prompt": "a character waving",
"mode": "swift",
"duration": 4.5
}'
Response
{
"result": "018c425b-b2c6-727e-d333-3c1887i9h791"
}
Parameter
- Name
- prompt
- Type
- string
- Wajib
- Description
Teks yang mendeskripsikan gerakan yang akan dihasilkan, hingga 400 karakter. Teks yang lebih panjang mengembalikan
400.
- Name
- mode
- Type
- string
- default prime
- Description
Model gerakan, yang juga menentukan format file klip.
Nilai yang tersedia:
prime: kualitas lebih tinggi, mengembalikan klip FBXswift: lebih cepat dan murah, mengembalikan klip BVH
Nilai lainnya akan mengembalikan
400.
- Name
- duration
- Type
- number
- Wajib
- Description
Target panjang klip dalam detik, dari
2hingga10dengan kelipatan0.5, misalnya2,2.5, atau3. Nilai lainnya akan mengembalikan400.
Hasil
Kolom result pada respons menyimpan ID dari task Text to Motion yang baru.
Mode kegagalan
- Name
400 - Bad Request- Description
Permintaan tidak dapat dijalankan. Pesan kesalahan menunjukkan masalah yang ditemukan. Misalnya:
- Prompt kosong atau tidak ada:
prompttidak ada, kosong, atau lebih panjang dari 400 karakter. - Mode tidak valid:
modebukanprimeatauswift. - Durasi tidak valid:
durationtidak ada, di luar rentang2hingga10, atau tidak berada pada kelipatan0.5detik.
Perbaiki permintaan, lalu kirim ulang. Lihat Kesalahan.
- Prompt kosong atau tidak ada:
- Name
401 - Unauthorized- Description
Kunci API tidak ada atau tidak valid. Periksa header
Authorization.
- Name
402 - Payment Required- Description
Misalnya:
- Kredit tidak cukup: Akun tidak memiliki cukup kredit untuk task ini, atau akun telah mencapai batas kredit. Periksa saldo kredit Anda, lalu coba lagi.
- Paket gratis: Membuat task memerlukan paket berbayar. Tingkatkan paket Anda di pengaturan langganan, lalu coba lagi.
- Name
403 - Forbidden- Description
Moderation konten menandai prompt tersebut. Ubah prompt, lalu kirim permintaan lagi.
- Name
429 - Too Many Requests- Description
Anda melampaui batas laju. Tunggu, lalu coba lagi. Lihat Batas laju.
Mendapatkan task Text to Motion
Mengembalikan task Text to Motion berdasarkan ID-nya.
Request
curl https://api.meshy.ai/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "018c425b-b2c6-727e-d333-3c1887i9h791",
"type": "text-to-motion",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1787314497437,
"started_at": 1787314498012,
"finished_at": 1787314505881,
"expires_at": 1787573705881,
"task_error": null,
"result": {
"motion_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/clip.fbx?Expires=...",
"motion_format": "fbx",
"duration_ms": 3000,
"mode": "prime"
},
"consumed_credits": 10
}
Mendapatkan Daftar Tugas Text to Motion
Mengembalikan daftar tugas Text to Motion Anda dengan paginasi, yang terbaru terlebih dahulu. Untuk menelusuri halaman daftar, gunakan page_num dan page_size.
Respons berupa array dari objek tugas Text to Motion.
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
curl "https://api.meshy.ai/openapi/v1/text-to-motion?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "018c425b-b2c6-727e-d333-3c1887i9h791",
"type": "text-to-motion",
"status": "SUCCEEDED",
"...": "..."
}
]
Streaming tugas Text to Motion
Melakukan streaming pembaruan tugas Text to Motion sebagai Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message events carry the full task object at every stage; the result
// fields stay empty until the task succeeds.
event: message
data: {
"id": "018c425b-b2c6-727e-d333-3c1887i9h791",
"type": "text-to-motion",
"status": "IN_PROGRESS",
"progress": 50,
"created_at": 1787314497437,
"started_at": 1787314498012,
"finished_at": 0,
"expires_at": 0,
"task_error": null,
"result": {
"motion_url": "",
"motion_format": "",
"duration_ms": 0,
"mode": ""
},
"consumed_credits": 10
}
event: message
data: { // Example of a SUCCEEDED task event, with the same fields as the Text to Motion task object
"id": "018c425b-b2c6-727e-d333-3c1887i9h791",
"type": "text-to-motion",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1787314497437,
"started_at": 1787314498012,
"finished_at": 1787314505881,
"expires_at": 1787573705881,
"task_error": null,
"result": {
"motion_url": "https://assets.meshy.ai/.../output/clip.fbx?Expires=...",
"motion_format": "fbx",
"duration_ms": 3000,
"mode": "prime"
},
"consumed_credits": 10
}
Parameter
- Name
- id
- Type
- path
- Description
ID tugas dari respons pembuatan.
Returns
Sebuah stream objek tugas Text to Motion sebagai Server-Sent Events.
Setiap event message membawa objek tugas secara lengkap. Selama tugas berstatus PENDING atau IN_PROGRESS, kolom result kosong ("" atau 0), dan finished_at serta expires_at bernilai 0. Untuk mengikuti perkembangan tugas, perhatikan status dan progress.
Menghapus tugas Text to Motion
Menghapus tugas Text to Motion secara permanen, termasuk klip motion-nya. Penghapusan tidak dapat dibatalkan.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791 \
-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 tugas yang akan dihapus.
Status tugas
Menghapus tugas PENDING akan mengembalikan kredit yang digunakan saat Anda membuatnya.
Tugas IN_PROGRESS tidak dapat dihapus. Permintaan akan mengembalikan 409 Conflict,
dan tugas tersebut akan terus berjalan. Meshy tidak mengembalikan kredit untuk tugas yang sudah dimulai,
jadi menghapusnya akan membuat Anda kehilangan baik kredit maupun hasilnya. Tunggu hingga tugas tersebut
mencapai status SUCCEEDED, FAILED, atau CANCELED, lalu hapus.
Menghapus tugas dengan status akhir (SUCCEEDED, FAILED, atau CANCELED)
tidak mengembalikan kreditnya.
Returns
200 OK ketika tugas berhasil dihapus, atau 409 Conflict ketika tugas
berstatus IN_PROGRESS.
Objek tugas Text to Motion
Objek tugas Text to Motion menjelaskan pembuatan satu klip gerakan. Objek ini menyimpan status, progress, dan klip ketika tugas berhasil.
Properties
Example Text to Motion Task Object
{
"id": "018c425b-b2c6-727e-d333-3c1887i9h791",
"type": "text-to-motion",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1787314497437,
"started_at": 1787314498012,
"finished_at": 1787314505881,
"expires_at": 1787573705881,
"task_error": null,
"result": {
"motion_url": "https://assets.meshy.ai/.../output/clip.fbx?Expires=...",
"motion_format": "fbx",
"duration_ms": 3000,
"mode": "prime"
},
"consumed_credits": 10
}
- Name
- id
- Type
- string
- Description
ID tugas. Perlakukan sebagai string buram, dan jangan bergantung pada formatnya.
- Name
- type
- Type
- string
- Description
Jenis tugas, selalu
text-to-motion.
- Name
- status
- Type
- string
- Description
Status tugas, salah satu dari
PENDING,IN_PROGRESS,SUCCEEDED,FAILED, atauCANCELED.
- Name
- progress
- Type
- integer
- Description
Seberapa banyak tugas telah selesai, dalam persentase dari
0hingga100.
- Name
- created_at
- Type
- timestamp
- Description
Waktu tugas dibuat, dalam milidetik Unix.
- Name
- started_at
- Type
- timestamp
- Description
Waktu tugas dimulai, dalam milidetik Unix. Nilainya
0sampai tugas dimulai.
- Name
- finished_at
- Type
- timestamp
- Description
Waktu tugas selesai, dalam milidetik Unix. Nilainya
0sampai tugas selesai.
- Name
- expires_at
- Type
- timestamp
- Description
Waktu file hasil tugas kedaluwarsa, dalam milidetik Unix. Nilainya
0sampai tugas selesai. Meshy menyimpan klip selama 3 hari setelah tugas selesai, jadi unduh sebelum waktu tersebut.
- Name
- preceding_tasks
- Type
- integer
- Description
Jumlah tugas yang berada di depan tugas ini dalam antrean. Nilai ini hanya berarti selama tugas berstatus
PENDING. Kolom ini tidak disertakan ketika nilainya0.
- Name
- consumed_credits
- Type
- integer
- Description
Jumlah kredit yang digunakan oleh tugas,
10untuk modeprimeatau3untuk modeswift. Nilainya0untuk tugasFAILED, karena Meshy mengembalikan kredit saat tugas gagal.
- Name
- task_error
- Type
- object
- Description
Detail kesalahan saat tugas gagal, dan
nulljika tidak. Lihat Kesalahan.
- Name
- result
- Type
- object
- Description
Klip gerakan yang dihasilkan ketika tugas berhasil. Sebelum itu, kolom-kolomnya tetap ada tetapi kosong (
""atau0).- Name
motion_url- Type
- string
- Description
- URL unduhan untuk klip gerakan. Meshy menandatangani ulang URL ini pada setiap pembacaan, dan URL ini kedaluwarsa sesuai jendela retensi tugas.
- Name
motion_format- Type
- string
- Description
- Format file klip,
fbxuntuk modeprimeataubvhuntuk modeswift.
- Name
duration_ms- Type
- integer
- Description
- Panjang klip, dalam milidetik.
- Name
mode- Type
- string
- Description
- Mode yang digunakan Meshy untuk menghasilkan klip,
primeatauswift.