Text to Motion API

สร้างคลิปการเคลื่อนไหวของตัวละครจากคำอธิบายภาษาธรรมชาติ อธิบายการกระทำ — "ตัวละครกำลังโบกมือ", "ซอมบี้เดินลากขาไปข้างหน้า" — แล้วรับคลิปการเคลื่อนไหวดิบที่คุณสามารถนำไป retarget บนตัวละครที่ทำ rigging แล้วในไปป์ไลน์หรือเครื่องมือ DCC ของคุณเองได้

ผลลัพธ์ที่ได้เป็นคลิปการเคลื่อนไหวแบบสแตนด์อโลน: ไม่จำเป็นต้องมีโมเดลตัวละคร และไม่ได้ผูกติดกับโมเดลตัวละครใดๆ หากต้องการทำ rigging ตัวละครก่อน ให้ดูที่ Rigging API หากต้องการนำคลิปที่สร้างขึ้นไปใช้กับตัวละครที่ทำ rigging แล้ว ให้ส่ง id ของงานเป็น motion_task_id ไปยัง Animation API — โปรดใช้งานภายในระยะเวลาการเก็บรักษาแอสเซ็ต 3 วัน


POST/openapi/v1/text-to-motion

สร้างงาน 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, swift prime ให้คุณภาพสูงสุดและส่งออกเป็น 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 หายไป อยู่นอกช่วง 210 หรือไม่ได้เป็นทวีคูณของ 0.5 วินาที
  • Name
    401 - Unauthorized
    Description

    การยืนยันตัวตนล้มเหลว โปรดตรวจสอบ API คีย์ของคุณ

  • Name
    402 - Payment Required
    Description

    เครดิตไม่เพียงพอสำหรับการทำงานนี้

  • Name
    403 - Forbidden
    Description

    prompt ถูกตรวจพบโดยระบบ moderation เนื้อหา

  • Name
    429 - Too Many Requests
    Description

    คุณเกินการจำกัดอัตราการใช้งานแล้ว

Request

POST
/openapi/v1/text-to-motion
# 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"
}

GET/openapi/v1/text-to-motion/:id

เรียกดูงาน 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

GET
/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791
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
}

GET/openapi/v1/text-to-motion

แสดงรายการงาน Text to Motion

ส่งคืนรายการงาน Text to Motion ของผู้เรียกแบบแบ่งหน้า โดยเรียงจากงานล่าสุดไปก่อน การแบ่งหน้าแบบมาตรฐานผ่าน page_num และ page_size

การตอบกลับเป็นอาร์เรย์ของ Text to Motion Task objects

โปรดทราบว่างานที่สร้างผ่าน API จะถูกจัดการผ่าน API เท่านั้น — งานเหล่านี้จะไม่ปรากฏใน My Assets ของเว็บแอป ใช้เอนด์พอยต์นี้เพื่อค้นหางานที่คุณไม่มี ID อีกต่อไป

Request

GET
/openapi/v1/text-to-motion
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",
    "...": "..."
  }
]

GET/openapi/v1/text-to-motion/:id/stream

สตรีมงาน 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

GET
/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791/stream
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
}

DELETE/openapi/v1/text-to-motion/:id

ลบงาน Text to Motion

เอนด์พอยต์นี้จะลบงาน Text to Motion อย่างถาวร รวมถึงคลิปโมชันที่สร้างขึ้นด้วย การดำเนินการนี้ไม่สามารถย้อนกลับได้

Path Parameters

  • Name
    id
    Type
    path
    Description

    ID ของงาน Text to Motion ที่ต้องการลบ

ค่าที่ส่งกลับ

ส่งกลับ 200 OK เมื่อสำเร็จ

Request

DELETE
/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791
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 ถูกสร้างขึ้น

  • 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 สำหรับ prime mode, 3 สำหรับ swift mode คืนค่า 0 สำหรับ task ที่ FAILED (เครดิตจะถูกคืนเมื่อล้มเหลว)

  • Name
    task_error
    Type
    object
    Description

    รายละเอียดข้อผิดพลาดสำหรับ task ที่ล้มเหลว; เป็น null เว้นแต่ task จะ FAILED ดูข้อมูลอ้างอิงของ object task_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 สำหรับ prime mode, bvh สำหรับ swift mode
    • 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
}