Text to Motion API
สร้างคลิปการเคลื่อนไหวของตัวละครจากคำอธิบายภาษาธรรมชาติ อธิบายการกระทำ — "ตัวละครกำลังโบกมือ", "ซอมบี้เดินลากขาไปข้างหน้า" — แล้วรับคลิปการเคลื่อนไหวดิบที่คุณสามารถนำไป retarget บนตัวละครที่ทำ rigging แล้วในไปป์ไลน์หรือเครื่องมือ DCC ของคุณเองได้
ผลลัพธ์ที่ได้เป็นคลิปการเคลื่อนไหวแบบสแตนด์อโลน: ไม่จำเป็นต้องมีโมเดลตัวละคร และไม่ได้ผูกติดกับโมเดลตัวละครใดๆ หากต้องการทำ rigging ตัวละครก่อน ให้ดูที่ Rigging APIid ของงานเป็น motion_task_id ไปยัง Animation API
สร้างงาน Text to Motion
เอนด์พอยต์นี้สร้างงานใหม่เพื่อสร้างคลิปการเคลื่อนไหวจาก text prompt
งานที่มี mode เป็น prime จะใช้ 10 เครดิต และสร้างด้วยโมเดลการเคลื่อนไหวคุณภาพสูงสุดของเรา งานที่มี mode เป็น swift จะใช้ 3 เครดิต และสร้างได้เร็วกว่าด้วยโมเดลการเคลื่อนไหวแบบประหยัดของเรา
พารามิเตอร์
- Name
- prompt
- Type
- string
- จำเป็น
- Description
คำอธิบายภาษาธรรมชาติของการเคลื่อนไหวที่ต้องการสร้าง สูงสุด 400 ตัวอักษร
- Name
- mode
- Type
- string
- ค่าเริ่มต้น prime
- Description
mode สำหรับการสร้างการเคลื่อนไหว ค่าที่ใช้ได้:
prime,swiftprimeให้คุณภาพสูงสุดและส่งออกเป็น FBX ส่วนswiftเร็วกว่าและถูกกว่า และส่งออกเป็น BVH
- Name
- duration
- Type
- number
- จำเป็น
- Description
ระยะเวลาเป้าหมายของคลิปการเคลื่อนไหวเป็นวินาที ระหว่าง
2ถึง10ทีละ0.5(เช่น2,2.5,3, …10)
ค่าที่ส่งกลับ
พร็อพเพอร์ตี้ result ของการตอบกลับจะมี id ของงาน Text to Motion ที่สร้างขึ้นใหม่
รูปแบบความล้มเหลว
- Name
400 - Bad Request- Description
คำขอไม่สามารถยอมรับได้ สาเหตุที่พบบ่อย:
- ไม่มี prompt หรือ prompt ว่างเปล่า:
promptหายไป ว่างเปล่า หรือยาวเกิน 400 ตัวอักษร - mode ไม่ถูกต้อง:
modeไม่ใช่primeหรือswift - duration ไม่ถูกต้อง:
durationหายไป อยู่นอกช่วง2–10หรือไม่ได้เป็นทวีคูณของ0.5วินาที
- ไม่มี prompt หรือ prompt ว่างเปล่า:
- Name
401 - Unauthorized- Description
การยืนยันตัวตนล้มเหลว โปรดตรวจสอบ API คีย์ของคุณ
- Name
402 - Payment Required- Description
เครดิตไม่เพียงพอสำหรับการทำงานนี้
- Name
403 - Forbidden- Description
prompt ถูกตรวจพบโดยระบบ moderation เนื้อหา
- Name
429 - Too Many Requests- Description
คุณเกินการจำกัดอัตราการใช้งานแล้ว
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"
}
เรียกดูงาน Text to Motion
เอนด์พอยต์นี้ช่วยให้คุณสามารถเรียกดูงาน Text to Motion โดยระบุ id ของงานที่ถูกต้อง ดูรายละเอียดคุณสมบัติที่มีอยู่ได้ที่ The Text to Motion Task Object
พารามิเตอร์
- Name
- id
- Type
- path
- Description
ตัวระบุเฉพาะสำหรับงาน Text to Motion ที่ต้องการเรียกดู
ค่าที่ส่งกลับ
การตอบกลับจะประกอบด้วยออบเจ็กต์งาน Text to Motion ดูรายละเอียดได้ที่ส่วน The Text to Motion Task Object
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
}
แสดงรายการงาน Text to Motion
ส่งคืนรายการงาน Text to Motion ของผู้เรียกแบบแบ่งหน้า โดยเรียงจากงานล่าสุดไปก่อน การแบ่งหน้าแบบมาตรฐานผ่าน page_num และ page_size
การตอบกลับเป็นอาร์เรย์ของ Text to Motion Task objects
โปรดทราบว่างานที่สร้างผ่าน API จะถูกจัดการผ่าน API เท่านั้น — งานเหล่านี้จะไม่ปรากฏใน My Assets ของเว็บแอป ใช้เอนด์พอยต์นี้เพื่อค้นหางานที่คุณไม่มี ID อีกต่อไป
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",
"...": "..."
}
]
สตรีมงาน Text to Motion
เอนด์พอยต์นี้จะสตรีมข้อมูลอัปเดตแบบเรียลไทม์สำหรับงาน Text to Motion โดยใช้ Server-Sent Events (SSE)
พารามิเตอร์
- Name
- id
- Type
- path
- Description
ตัวระบุเฉพาะสำหรับงาน Text to Motion ที่ต้องการสตรีม
สิ่งที่ได้รับกลับมา
ส่งคืนสตรีมของ The Text to Motion Task Objects ในรูปแบบ Server-Sent Events
ทุกอีเวนต์ message จะมีข้อมูลของออบเจ็กต์งานทั้งหมด ในขณะที่งานยังอยู่ในสถานะ PENDING หรือ IN_PROGRESS ฟิลด์ result จะยังคงว่างเปล่า ("" / 0) และ finished_at / expires_at จะเป็น 0; ให้จับตาดูที่ status และ progress
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 stream item, mirroring The Text to Motion Task Object structure
"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
}
ลบงาน Text to Motion
เอนด์พอยต์นี้จะลบงาน Text to Motion อย่างถาวร รวมถึงคลิปโมชันที่สร้างขึ้นด้วย การดำเนินการนี้ไม่สามารถย้อนกลับได้
Path Parameters
- Name
- id
- Type
- path
- Description
ID ของงาน Text to Motion ที่ต้องการลบ
ค่าที่ส่งกลับ
ส่งกลับ 200 OK เมื่อสำเร็จ
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
// Returns 200 Ok on success.
The Text to Motion Task Object
Text to Motion Task object แสดงถึงหน่วยงานสำหรับการสร้าง motion clip จาก text prompt
Properties
- Name
- id
- Type
- string
- Description
ตัวระบุที่ไม่ซ้ำกันสำหรับ task
- Name
- type
- Type
- string
- Description
ประเภทของ task ค่านี้คือ
text-to-motion
- Name
- status
- Type
- string
- Description
สถานะของ task ค่าที่เป็นไปได้:
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED
- Name
- progress
- Type
- integer
- Description
progress ของ task (0-100)
- Name
- created_at
- Type
- timestamp
- Description
ไทม์สแตมป์ (มิลลิวินาทีนับตั้งแต่ epoch) เมื่อ task ถูกสร้างขึ้น
ไทม์สแตมป์แสดงถึงจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่วันที่ 1 มกราคม 1970 UTC โดยเป็นไปตาม มาตรฐาน RFC 3339
ตัวอย่างเช่น วันศุกร์ที่ 1 กันยายน 2023 เวลา 12:00:00 น. GMT จะแสดงเป็น1693569600000ซึ่งใช้กับ ไทม์สแตมป์ทั้งหมดใน Meshy API
- Name
- started_at
- Type
- timestamp
- Description
ไทม์สแตมป์ (มิลลิวินาทีนับตั้งแต่ epoch) เมื่อ task เริ่มดำเนินการ
0หากยังไม่เริ่ม
- Name
- finished_at
- Type
- timestamp
- Description
ไทม์สแตมป์ (มิลลิวินาทีนับตั้งแต่ epoch) เมื่อ task เสร็จสิ้น
0หากยังไม่เสร็จ
- Name
- expires_at
- Type
- timestamp
- Description
ไทม์สแตมป์ (มิลลิวินาทีนับตั้งแต่ epoch) เมื่อ asset ผลลัพธ์ของ task หมดอายุ
0จนกว่า task จะเสร็จสิ้น clip ที่สร้างขึ้นจะถูกเก็บไว้เป็นเวลา 3 วันหลังจาก task เสร็จสิ้น กรุณาดาวน์โหลดก่อนที่จะหมดอายุ
- Name
- preceding_tasks
- Type
- integer
- Description
จำนวน task ที่อยู่ก่อนหน้าในคิว มีความหมายเฉพาะเมื่อ status เป็น
PENDINGเท่านั้น จะถูกละเว้นเมื่อมีค่าเป็นศูนย์
- Name
- consumed_credits
- Type
- integer
- Description
จำนวนเครดิตที่ใช้ไปโดย task นี้
10สำหรับprimemode,3สำหรับswiftmode คืนค่า0สำหรับ task ที่FAILED(เครดิตจะถูกคืนเมื่อล้มเหลว)
- Name
- task_error
- Type
- object
- Description
รายละเอียดข้อผิดพลาดสำหรับ task ที่ล้มเหลว; เป็น
nullเว้นแต่ task จะFAILEDดูข้อมูลอ้างอิงของ objecttask_errorแบบเต็มได้ที่ ข้อผิดพลาด
- Name
- result
- Type
- object
- Description
ประกอบด้วย motion clip ที่สร้างขึ้นเมื่อ task
SUCCEEDED; ก่อนหน้านั้นฟิลด์เหล่านี้จะมีอยู่แต่ว่างเปล่า (""/0)- Name
motion_url- Type
- string
- Description
- URL สำหรับดาวน์โหลด motion clip ที่สร้างขึ้น URL นี้จะถูกเซ็นใหม่ทุกครั้งที่มีการอ่านและจะหมดอายุตามช่วงเวลาการเก็บรักษาของ task
- Name
motion_format- Type
- string
- Description
- รูปแบบไฟล์ของ clip:
fbxสำหรับprimemode,bvhสำหรับswiftmode
- Name
duration_ms- Type
- integer
- Description
- ระยะเวลาของ clip ที่สร้างขึ้น หน่วยเป็นมิลลิวินาที
- Name
mode- Type
- string
- Description
- mode ที่ใช้สร้าง clip:
primeหรือswift
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
}