이 엔드포인트를 사용하면 이전에 리깅된 캐릭터에 애니메이션을 적용하는 새 작업을 생성할 수 있습니다 — 애니메이션 라이브러리의 프리셋 액션(action_id), 여러 프리셋 액션을 하나의 파일로 병합한 것(action_ids), 또는 Text to Motion API로 생성한 모션 클립(motion_task_id) 중 하나를 적용할 수 있습니다. 후처리 옵션도 포함됩니다.
파라미터
Name
rig_task_id
Type
string
필수
Description
성공적으로 완료된 리깅 작업(POST /openapi/v1/rigging)의 id입니다. 이 작업의 캐릭터가 애니메이션 적용 대상이 됩니다.
Name
action_id
Type
integer
Description
적용할 프리셋 애니메이션 액션의 식별자입니다. 사용 가능한 애니메이션의 전체 목록은 애니메이션 라이브러리 참조를 확인하세요. action_id, action_ids, motion_task_id 중 정확히 하나만 제공해야 합니다.
Name
action_ids
Type
array of integers
Description
한 번에 적용할 여러 프리셋 애니메이션 액션으로, 액션당 하나의 애니메이션 클립을 포함하는 단일 파일로 반환됩니다 — 게임 엔진의 상태 머신에서 캐릭터를 구동하는 데 유용합니다. 애니메이션 라이브러리 참조에서 1개에서 10개까지의 action_id 값을 제공하세요. id는 고유해야 합니다. 액션당 3 크레딧이 소요됩니다. action_id, action_ids, motion_task_id 중 정확히 하나만 제공해야 합니다.
단일 요소로 이루어진 action_ids를 전달하는 것은 해당 값을 action_id로 전달하는 것과 동일합니다.
Name
motion_task_id
Type
string
Description
프리셋 액션 대신 적용할, 성공적으로 완료된 Text to Motion 작업의 id입니다. 생성된 클립은 리깅된 캐릭터에 리타깃되며 생성 시점의 클립 스냅샷을 사용하므로, 이후 원본 작업이 만료되거나 삭제되어도 이 작업에는 영향이 없습니다. 원본 작업의 애셋은 3일 동안 보관되므로, 만료되기 전에 클립을 적용하세요. 바이페드 리그가 필요합니다. action_id, action_ids, motion_task_id 중 정확히 하나만 제공해야 합니다.
Name
post_process
Type
object
Description
애니메이션 출력에 대한 선택적 후처리입니다. 생략하면 표준 애니메이션 파일을 받게 됩니다.
다음 경우에만 적용 post_process is set
Name
operation_type
Type
string
필수
Description
수행할 작업의 유형입니다. 사용 가능한 값: change_fps, fbx2usdz, extract_armature.
action_ids를 사용하면 작업은 액션당 하나의 파일이 아니라 병합된 파일 하나를 반환합니다: animation_glb_url과 animation_fbx_url은 각각 요청한 모든 액션을 개별 클립으로 포함하는 단일 애셋을 가리킵니다.
클립 순서: id의 숫자 순서가 아니라 action_ids 배열의 순서입니다.
클립 이름: 라이브러리에 있는 애니메이션의 이름으로, Meshy 웹 앱에서 캐릭터의 모든 애니메이션을 하나의 파일로 내보낼 때 얻는 이름과 일치합니다. 요청한 두 개의 id가 동일한 클립 이름으로 확인되면, 나중 것에는 이름을 고유하게 유지하기 위해 action_id가 접미사로 붙습니다.
후처리: 개별 클립이 아니라 병합된 파일에 적용됩니다.
motion_task_id를 사용하면 리타깃 결과가 GLB 전용 애니메이션으로 생성될 수 있습니다. post_process를 요청했는데 FBX를 사용할 수 없는 경우, 작업은 task_error로 실패하고 크레딧이 자동으로 환불됩니다. post_process를 요청하지 않은 경우 작업은 성공하며 animation_fbx_url은 비어 있습니다.
반환 값
응답의 result 속성에는 새로 생성된 애니메이션 작업의 id가 포함됩니다.
실패 모드
Name
400 - Bad Request
Description
요청이 허용되지 않았습니다. 일반적인 원인:
파라미터 누락: rig_task_id가 누락되었거나, action_id, action_ids, motion_task_id 중 어느 것도 제공되지 않았습니다.
파라미터 충돌: action_id, action_ids, motion_task_id 중 둘 이상이 제공되었습니다 — 이들은 상호 배타적입니다.
유효하지 않은 리깅 작업: rig_task_id가 유효하지 않거나 실패했거나 존재하지 않는 작업을 가리킵니다.
유효하지 않은 액션 ID: action_id 또는 action_ids의 항목이 유효한 애니메이션에 해당하지 않습니다.
너무 많은 액션: action_ids에 10개를 초과하는 id가 포함되어 있습니다.
중복된 액션: action_ids에 동일한 id가 두 번 이상 포함되어 있습니다.
모션 작업이 준비되지 않음: motion_task_id 작업이 아직 SUCCEEDED 상태가 아닙니다.
지원되지 않는 리그: motion_task_id에는 바이페드 리그가 필요합니다. 쿼드러페드 리그는 거부됩니다.
Name
401 - Unauthorized
Description
인증에 실패했습니다. API 키를 확인해 주세요.
Name
402 - Payment Required
Description
이 작업을 수행하기에 크레딧이 부족합니다.
Name
404 - Not Found
Description
rig_task_id로 지정된 리깅 작업을 찾을 수 없거나, motion_task_id로 지정된 모션 작업을 찾을 수 없거나, 모션 클립이 만료되었습니다(원본 작업 애셋은 3일 동안 보관됩니다).
Name
429 - Too Many Requests
Description
속도 제한을 초과했습니다.
Request
POST
/openapi/v1/animations
# Animate a rigged model with required params onlycurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_id": 92 }'# Apply several preset actions and get one file with one clip per actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_ids": [10, 25, 92] }'# Apply a generated Text to Motion clip instead of a preset actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-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 FPScurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-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 } }'
이 엔드포인트는 애니메이션 작업과 관련된 모든 모델 및 데이터를 영구적으로 삭제합니다. 이 작업은 되돌릴 수 없습니다.
경로 매개변수
Name
id
Type
path
Description
삭제할 애니메이션 작업의 ID입니다.
작업 상태
아직 PENDING 상태인 작업은 삭제되며, 생성 시 소모된 크레딧은 환불됩니다.
이미 IN_PROGRESS 상태인 작업은 삭제할 수 없습니다. 요청은 409 Conflict로
거부되며 작업은 계속 실행됩니다. 워커가 이미 시작한 작업에 대한 크레딧은
환불되지 않으므로, 실행 도중 삭제하면 크레딧과 결과물을 모두 잃게 됩니다.
작업이 SUCCEEDED, FAILED 또는 CANCELED 상태에 도달할 때까지 기다린 후
삭제하세요.
최종 상태(SUCCEEDED, FAILED 또는 CANCELED)인 작업은 환불 없이
삭제됩니다.
반환값
성공 시 200 OK를 반환하며, 작업이 IN_PROGRESS 상태인 경우
409 Conflict를 반환합니다.
// 200 OK on success, with an empty body.//// 409 Conflict when the task is IN_PROGRESS — the task is left 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."}
Animation Task 객체는 리깅된 캐릭터에 애니메이션을 적용하는 작업 단위를 나타냅니다.
속성
Name
id
Type
string
Description
작업의 고유 식별자입니다.
Name
type
Type
string
Description
Animation 작업의 유형입니다. 값은 animate입니다.
Name
status
Type
string
Description
작업의 상태입니다. 가능한 값: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
작업의 progress입니다 (0-100).
Name
created_at
Type
timestamp
Description
작업이 생성된 타임스탬프(1970년 1월 1일 이후 경과한 밀리초)입니다.
타임스탬프는 RFC 3339 표준을 따라
1970년 1월 1일 UTC 이후 경과한 밀리초 수를 나타냅니다.
예를 들어, 2023년 9월 1일 금요일 12:00:00 PM GMT는 1693569600000으로 표현됩니다. 이는 Meshy API의
모든 타임스탬프에 적용됩니다.
Name
started_at
Type
timestamp
Description
작업이 처리를 시작한 타임스탬프(1970년 1월 1일 이후 경과한 밀리초)입니다. 시작되지 않은 경우 0입니다.
Name
finished_at
Type
timestamp
Description
작업이 완료된 타임스탬프(1970년 1월 1일 이후 경과한 밀리초)입니다. 완료되지 않은 경우 0입니다.
Name
expires_at
Type
timestamp
Description
작업 결과 에셋이 만료되는 타임스탬프(1970년 1월 1일 이후 경과한 밀리초)입니다.
Name
task_error
Type
object
Description
실패한 작업에 대한 오류 상세 정보입니다. 전체 task_error 객체 참조는 오류를 참고하세요.
Name
consumed_credits
Type
integer
Description
이 작업으로 소비된 크레딧 수입니다. 작업 상태가 PENDING, IN_PROGRESS, 또는 SUCCEEDED일 때 존재합니다. FAILED 작업의 경우 0을 반환합니다 (실패 시 크레딧은 환불됩니다).
Name
result
Type
object
Description
작업이 SUCCEEDED인 경우 출력 애니메이션 URL을 포함합니다.
Name
animation_glb_url
Type
string
Description
GLB 형식의 애니메이션에 대한 다운로드 가능한 URL입니다. action_ids로 생성된 작업의 경우, 이 단일 파일에는 요청된 각 액션이 별도의 클립으로 포함됩니다.
Name
animation_fbx_url
Type
string
Description
FBX 형식의 애니메이션에 대한 다운로드 가능한 URL입니다. action_ids로 생성된 작업의 경우, 이 단일 파일에는 요청된 각 액션이 별도의 클립으로 포함됩니다.
Name
processed_usdz_url
Type
string
Description
USDZ 형식으로 처리된 애니메이션에 대한 다운로드 가능한 URL입니다.
Name
processed_armature_fbx_url
Type
string
Description
FBX 형식으로 처리된 아마추어에 대한 다운로드 가능한 URL입니다.
Name
processed_animation_fps_fbx_url
Type
string
Description
FPS가 변경된 FBX 형식의 애니메이션에 대한 다운로드 가능한 URL입니다 (예: change_fps 작업이 사용된 경우).
라이브러리에 있는 모든 애니메이션을 action_id 순으로 정렬하여 반환합니다. 응답은 페이지 단위가 아닌 전체 목록이므로, 한 번의 호출로 액션 선택기를 채우기에 충분합니다. 필터는 결과를 좁혀주며, 모두 생략하면 전체를 가져옵니다.
각 액션의 애니메이션 미리보기와 함께 동일한 카탈로그를 직접 눈으로 살펴보려면 애니메이션 라이브러리 참조를 확인하세요.
이 엔드포인트는 무료이며, 크레딧을 소비하지 않습니다.
매개변수
Name
search
Type
string
Description
name 또는 key에 대한 대소문자를 구분하지 않는 부분 문자열 일치입니다. 문자 그대로 일치하므로 %와 _는 와일드카드가 아닌 일반 문자로 취급됩니다.
Name
category
Type
string
Description
category와 정확히 일치합니다.
사용 가능한 값:
WalkAndRun
BodyMovements
DailyActions
Fighting
Dancing
Name
sub_category
Type
string
Description
sub_category와 정확히 일치합니다. 단독으로 사용할 수 있습니다 — 하위 카테고리 이름은 카테고리 간에 고유하지 않으므로(Transitioning은 Fighting과 DailyActions 양쪽에 모두 존재합니다), category 없이 사용하면 이 필터는 해당 하위 카테고리가 나타나는 모든 곳에서 일치합니다.
Name
action_ids
Type
string
Description
반환할 action_id 값의 쉼표로 구분된 목록으로, 둘러보는 대신 특정 id를 확인할 때 사용합니다. 최대 200개의 id를 받을 수 있습니다. 어떤 애니메이션도 가지고 있지 않은 id는 응답에서 단순히 제외되므로, 저장해 둔 id가 여전히 유효한지 확인하는 용도로도 사용할 수 있습니다.
필터 조합하기
필터는 함께 적용됩니다 — 각 필터는 결과를 더 좁혀나가므로, 애니메이션은 모든 조건을 만족할 때만 반환됩니다. 단일 필터 내에서는 여러 값 중 하나라도 일치하면 됩니다: search는 name 또는 key와 일치하고, action_ids는 목록에 있는 id 중 하나와 일치합니다.
즉, 겹치는 부분이 없는 조합은 오류가 아니라 빈 배열을 반환합니다. 액션 92는 "Double Combo Attack"이며, Fighting 애니메이션입니다:
?action_ids=92&category=Fighting은 액션 92를 반환합니다.
?action_ids=92&category=Dancing은 []를 반환합니다 — Dancing 애니메이션이 아니기 때문입니다.
?action_ids=92&search=walk는 []를 반환합니다 — 이름이 walk와 일치하지 않기 때문입니다.
카테고리와 상관없이 특정 애니메이션을 가져오려면 action_ids만 단독으로 전달하세요.
여기서 반환되는 모든 action_id는 위의 애니메이션 작업 생성에서 허용되며, 그곳에서 허용되는 모든 id는 여기서 반환됩니다. 폐기된 애니메이션은 양쪽 모두에서 제외됩니다. 라이브러리를 캐시하는 경우, 폐기된 id가 선택기에 남아 있지 않도록 주기적으로 갱신하세요.