Animation API

Các endpoint để khám phá các hoạt hình có sẵn và áp dụng chúng cho các nhân vật đã được rig.


POST/openapi/v1/animations

Create an Animation Task

Endpoint này cho phép bạn tạo một tác vụ mới để áp dụng hoạt hình cho một nhân vật đã được rigging trước đó — có thể là một hành động dựng sẵn từ thư viện hoạt hình (action_id) hoặc một đoạn clip chuyển động bạn đã tạo bằng Text to Motion API (motion_task_id). Bao gồm các tùy chọn xử lý hậu kỳ.

Tham số

  • Name
    rig_task_id
    Type
    string
    Bắt buộc
    Description

    id của một tác vụ rigging đã hoàn thành thành công (từ POST /openapi/v1/rigging). Nhân vật từ tác vụ này sẽ được gắn hoạt hình.

  • Name
    action_id
    Type
    integer
    Description

    Định danh của hành động hoạt hình dựng sẵn cần áp dụng. Xem Animation Library Reference để biết danh sách đầy đủ các hoạt hình có sẵn. Chỉ cung cấp chính xác một trong hai giá trị action_id hoặc motion_task_id.

  • Name
    motion_task_id
    Type
    string
    Description

    id của một tác vụ Text to Motion đã hoàn thành thành công để áp dụng thay cho một hành động dựng sẵn. Đoạn clip được tạo ra sẽ được retarget lên nhân vật đã rigging và clip được chụp nhanh (snapshot) tại thời điểm tạo, do đó tác vụ này không bị ảnh hưởng nếu tác vụ nguồn sau đó hết hạn hoặc bị xóa. Các tài sản của tác vụ nguồn được giữ lại trong 3 ngày — hãy áp dụng clip trước khi nó hết hạn. Yêu cầu bộ khung xương hai chân (biped rig). Chỉ cung cấp chính xác một trong hai giá trị action_id hoặc motion_task_id.

  • Name
    post_process
    Type
    object
    Description

    Xử lý hậu kỳ tùy chọn cho đầu ra hoạt hình. Bỏ qua để nhận các tệp hoạt hình tiêu chuẩn.

Chỉ áp dụng khi post_process is set
  • Name
    operation_type
    Type
    string
    Bắt buộc
    Description

    Loại thao tác cần thực hiện. Các giá trị có sẵn: change_fps, fbx2usdz, extract_armature.

  • Name
    fps
    Type
    integer
    mặc định 30
    Description

    Tốc độ khung hình mục tiêu. Chỉ áp dụng khi operation_typechange_fps. Các giá trị được phép: 24, 25, 30, 60.

Giá trị trả về

Thuộc tính result của phản hồi chứa id tác vụ của tác vụ hoạt hình vừa được tạo.

Các chế độ lỗi

  • Name
    400 - Bad Request
    Description

    Yêu cầu không được chấp nhận. Các nguyên nhân phổ biến:

    • Thiếu tham số: rig_task_id bị thiếu, hoặc cả action_id lẫn motion_task_id đều không được cung cấp.
    • Tham số xung đột: cả action_idmotion_task_id đều được cung cấp — hai tham số này loại trừ lẫn nhau.
    • Tác vụ rigging không hợp lệ: rig_task_id không hợp lệ hoặc trỏ đến một tác vụ thất bại/không tồn tại.
    • ID hành động không hợp lệ: action_id không tương ứng với một hoạt hình hợp lệ.
    • Tác vụ chuyển động chưa sẵn sàng: tác vụ motion_task_id chưa đạt trạng thái SUCCEEDED.
    • Rig không được hỗ trợ: motion_task_id yêu cầu bộ khung xương hai chân (biped rig); các bộ khung xương bốn chân (quadruped rig) sẽ bị từ chối.
  • Name
    401 - Unauthorized
    Description

    Xác thực thất bại. Vui lòng kiểm tra khóa API của bạn.

  • Name
    402 - Payment Required
    Description

    Không đủ tín dụng để thực hiện tác vụ này.

  • Name
    404 - Not Found
    Description

    Không tìm thấy tác vụ rigging được chỉ định bởi rig_task_id, không tìm thấy tác vụ chuyển động được chỉ định bởi motion_task_id, hoặc đoạn clip chuyển động đã hết hạn (các tài sản của tác vụ nguồn được giữ lại trong 3 ngày).

  • Name
    429 - Too Many Requests
    Description

    Bạn đã vượt quá giới hạn tốc độ của mình.

Request

POST
/openapi/v1/animations
# Animate a rigged model with required params only
curl https://api.meshy.ai/openapi/v1/animations \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579",
    "action_id": 92
  }'

# Apply a generated Text to Motion clip instead of a preset action
curl https://api.meshy.ai/openapi/v1/animations \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579",
    "motion_task_id": "018c425b-b2c6-727e-d333-3c1887i9h791"
  }'

# With post-processing to change FPS
curl https://api.meshy.ai/openapi/v1/animations \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579",
    "action_id": 92,
    "post_process": {
      "operation_type": "change_fps",
      "fps": 24
    }
  }'

Response

{
  "result": "018c425b-b2c6-727e-d333-3c1887i9h791"
}

GET/openapi/v1/animations/:id

Truy xuất một Animation Task

Endpoint này cho phép bạn truy xuất một animation task với một id task hợp lệ. Tham khảo The Animation Task Object để xem các thuộc tính được bao gồm.

Tham số

  • Name
    id
    Type
    path
    Description

    Định danh duy nhất của animation task cần truy xuất.

Kết quả trả về

Phản hồi chứa đối tượng Animation Task. Xem chi tiết tại mục The Animation Task Object.

Request

GET
/openapi/v1/animations/018c425b-b2c6-727e-d333-3c1887i9h791
curl https://api.meshy.ai/openapi/v1/animations/018c425b-b2c6-727e-d333-3c1887i9h791 
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "type": "animate",
  "status": "SUCCEEDED",
  "created_at": 1747032440896,
  "progress": 100,
  "started_at": 1747032441210,
  "finished_at": 1747032457530,
  "expires_at": 1747291657530,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 3,
  "result": {
    "animation_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/Animation_Reaping_Swing_withSkin.glb?Expires=...",
    "animation_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/Animation_Reaping_Swing_withSkin.fbx?Expires=...",
    "processed_usdz_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/processed.usdz?Expires=...",
    "processed_armature_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/processed_armature.fbx?Expires=...",
    "processed_animation_fps_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/processed_60fps.fbx?Expires=..."
  },
  "preceding_tasks": 0
}

DELETE/openapi/v1/animations/:id

Xóa một Tác vụ Hoạt hình

Endpoint này xóa vĩnh viễn một tác vụ hoạt hình, bao gồm tất cả các mô hình và dữ liệu liên quan. Hành động này không thể hoàn tác.

Tham số Đường dẫn

  • Name
    id
    Type
    path
    Description

    ID của tác vụ hoạt hình cần xóa.

Kết quả trả về

Trả về 200 OK khi thành công.

Request

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

Response

// Returns 200 Ok on success.

GET/openapi/v1/animations

List Animation Tasks

Trả về danh sách đã phân trang các tác vụ Hoạt hình của người gọi, mới nhất trước. Phân trang tiêu chuẩn thông qua page_numpage_size.

Lưu ý rằng các tác vụ được tạo qua API được quản lý qua API — chúng không xuất hiện trong My Assets của ứng dụng web. Sử dụng endpoint này để tìm một tác vụ mà bạn không còn ID của nó.

Request

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

GET/openapi/v1/animations/:id/stream

Truyền trực tuyến tác vụ Hoạt hình

Endpoint này truyền trực tuyến các cập nhật theo thời gian thực cho một tác vụ Hoạt hình bằng Server-Sent Events (SSE).

Tham số

  • Name
    id
    Type
    path
    Description

    Định danh duy nhất của tác vụ Hoạt hình cần truyền trực tuyến.

Kết quả trả về

Trả về một luồng The Animation Task Objects dưới dạng Server-Sent Events.

Đối với các tác vụ ở trạng thái PENDING hoặc IN_PROGRESS, luồng phản hồi sẽ chỉ bao gồm các trường progressstatus cần thiết.

Request

GET
/openapi/v1/animations/018c425b-b2c6-727e-d333-3c1887i9h791/stream
curl -N https://api.meshy.ai/openapi/v1/animations/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 event examples illustrate task progress.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "progress": 50,
  "status": "IN_PROGRESS"
}

event: message
data: { // Example of a SUCCEEDED task stream item, mirroring The Animation Task Object structure
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "type": "animate",
  "status": "SUCCEEDED",
  "created_at": 1747032440896,
  "progress": 100,
  "started_at": 1747032441210,
  "finished_at": 1747032457530,
  "expires_at": 1747291657530,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 3,
  "result": {
    "animation_glb_url": "https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.glb?...",
    "animation_fbx_url": "https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.fbx?...",
    "processed_usdz_url": "https://assets.meshy.ai/.../processed.usdz?...",
    "processed_armature_fbx_url": "https://assets.meshy.ai/.../processed_armature.fbx?...",
    "processed_animation_fps_fbx_url": "https://assets.meshy.ai/.../processed_60fps.fbx?..."
  },
  "preceding_tasks": 0
}

Đối tượng Animation Task

Đối tượng Animation Task đại diện cho đơn vị công việc áp dụng hoạt hình cho một nhân vật đã được gắn xương.

Thuộc tính

  • Name
    id
    Type
    string
    Description

    Định danh duy nhất cho tác vụ.

  • Name
    type
    Type
    string
    Description

    Loại của tác vụ Animation. Giá trị là animate.

  • Name
    status
    Type
    string
    Description

    Trạng thái của tác vụ. Các giá trị có thể có: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Tiến trình của tác vụ (0-100).

  • Name
    created_at
    Type
    timestamp
    Description

    Dấu thời gian (mili giây kể từ epoch) khi tác vụ được tạo.

  • Name
    started_at
    Type
    timestamp
    Description

    Dấu thời gian (mili giây kể từ epoch) khi tác vụ bắt đầu xử lý. 0 nếu chưa bắt đầu.

  • Name
    finished_at
    Type
    timestamp
    Description

    Dấu thời gian (mili giây kể từ epoch) khi tác vụ hoàn thành. 0 nếu chưa hoàn thành.

  • Name
    expires_at
    Type
    timestamp
    Description

    Dấu thời gian (mili giây kể từ epoch) khi các tài sản kết quả của tác vụ hết hạn.

  • Name
    task_error
    Type
    object
    Description

    Chi tiết lỗi cho các tác vụ thất bại. Xem Lỗi để biết tài liệu tham khảo đầy đủ về đối tượng task_error.

  • Name
    consumed_credits
    Type
    integer
    Description

    Số lượng tín dụng đã tiêu thụ bởi tác vụ này. Có mặt khi trạng thái tác vụ là PENDING, IN_PROGRESS, hoặc SUCCEEDED. Trả về 0 đối với các tác vụ FAILED (tín dụng sẽ được hoàn lại khi thất bại).

  • Name
    result
    Type
    object
    Description

    Chứa các URL hoạt hình đầu ra nếu tác vụ SUCCEEDED.

    • Name
      animation_glb_url
      Type
      string
      Description
      URL tải xuống cho hoạt hình ở định dạng GLB.
    • Name
      animation_fbx_url
      Type
      string
      Description
      URL tải xuống cho hoạt hình ở định dạng FBX.
    • Name
      processed_usdz_url
      Type
      string
      Description
      URL tải xuống cho hoạt hình đã xử lý ở định dạng USDZ.
    • Name
      processed_armature_fbx_url
      Type
      string
      Description
      URL tải xuống cho bộ xương đã xử lý ở định dạng FBX.
    • Name
      processed_animation_fps_fbx_url
      Type
      string
      Description
      URL tải xuống cho hoạt hình đã thay đổi FPS ở định dạng FBX (ví dụ: nếu thao tác change_fps đã được sử dụng).
  • Name
    preceding_tasks
    Type
    integer
    Description

    Số lượng tác vụ đứng trước trong hàng đợi. Chỉ có ý nghĩa nếu trạng thái là PENDING.

Example Animation Task Object

{
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "type": "animate",
  "status": "SUCCEEDED",
  "created_at": 1747032440896,
  "progress": 100,
  "started_at": 1747032441210,
  "finished_at": 1747032457530,
  "expires_at": 1747291657530,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 3,
  "result": {
    "animation_glb_url": "https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.glb?...",
    "animation_fbx_url": "https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.fbx?...",
    "processed_usdz_url": "https://assets.meshy.ai/.../processed.usdz?...",
    "processed_armature_fbx_url": "https://assets.meshy.ai/.../processed_armature.fbx?...",
    "processed_animation_fps_fbx_url": "https://assets.meshy.ai/.../processed_60fps.fbx?..."
  },
  "preceding_tasks": 0
}