Text to Motion API
Генеруйте кліпи рухів персонажів із текстових описів. Опишіть дію, наприклад «персонаж, що махає рукою» або «зомбі, що повільно крокує вперед», і отримайте необроблений кліп руху. Ви можете ретаргетувати кліп на персонажів, оснащених скелетом, у вашому власному пайплайні або DCC-інструментах.
Результат — це окремий (автономний) кліп руху. Він не потребує моделі персонажа і не прив'язаний до неї. Щоб спочатку оснастити персонажа скелетом, див. Rigging APIid завдання як motion_task_id до Animation API
Створення завдання Text to Motion
Створює завдання Text to Motion, яке генерує анімаційний кліп з текстового prompt.
Завдання виконується у фоновому режимі. Про типову тривалість виконання завдання див. Час обробки.
Завдання prime коштує 10 кредитів і використовує більш якісну модель руху Meshy. Завдання swift коштує 3 кредити і використовує швидшу, дешевшу модель руху.
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"
}
Параметри
- Name
- prompt
- Type
- string
- Обов'язковий
- Description
Текст, що описує рух для генерації, до 400 символів. Довший текст повертає
400.
- Name
- mode
- Type
- string
- за замовчуванням prime
- Description
Модель руху, яка також визначає формат файлу кліпу.
Доступні значення:
prime: вища якість, повертає кліп у форматі FBXswift: швидше і дешевше, повертає кліп у форматі BVH
Будь-яке інше значення повертає
400.
- Name
- duration
- Type
- number
- Обов'язковий
- Description
Цільова тривалість кліпу в секундах, від
2до10з кроком0.5, наприклад2,2.5або3. Будь-яке інше значення повертає400.
Повертає
Поле result у відповіді містить ID нового завдання Text to Motion.
Режими збою
- Name
400 - Bad Request- Description
Запит не може бути виконаний. Повідомлення про помилку вказує, яку проблему було знайдено. Наприклад:
- Відсутній або порожній prompt:
promptвідсутній, порожній або довший за 400 символів. - Недійсний mode:
modeне єprimeабоswift. - Недійсна duration:
durationвідсутня, виходить за межі діапазону2–10або не кратна кроку0.5секунди.
Виправте запит і надішліть його знову. Див. Помилки.
- Відсутній або порожній prompt:
- Name
401 - Unauthorized- Description
API-ключ відсутній або недійсний. Перевірте заголовок
Authorization.
- Name
402 - Payment Required- Description
Наприклад:
- Недостатньо кредитів: на обліковому записі недостатньо кредитів для виконання цього завдання, або обліковий запис досяг ліміту кредитів. Перевірте баланс кредитів, потім повторіть спробу.
- Безкоштовний план: для створення завдання потрібен платний план. Оновіть свій план у налаштуваннях підписки, потім повторіть спробу.
- Name
403 - Forbidden- Description
Модерація контенту позначила prompt. Змініть prompt і надішліть запит знову.
- Name
429 - Too Many Requests- Description
Ви перевищили своє обмеження частоти. Зачекайте, потім повторіть спробу. Див. Обмеження частоти.
Отримати завдання Text to Motion
Повертає завдання Text to Motion за його ID.
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
}
Параметри
- Name
- id
- Type
- path
- Description
ID завдання з відповіді на створення.
Повертає
Список завдань Text to Motion
Повертає розбитий на сторінки список ваших завдань Text to Motion, починаючи з найновіших. Для гортання сторінок списку використовуйте page_num та page_size.
У відповіді повертається масив об'єктів завдання Text to Motion.
Завдання, створені через 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).
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
}
Параметри
- Name
- id
- Type
- path
- Description
ID завдання з відповіді на створення.
Повертає
Потік об'єктів завдання Text to Motion у вигляді Server-Sent Events.
Кожна подія message містить повний об'єкт завдання. Поки завдання має статус PENDING або IN_PROGRESS, поля result порожні ("" або 0), а finished_at та expires_at дорівнюють 0. Щоб відстежувати завдання, слідкуйте за status та progress.
Видалити завдання Text to Motion
Остаточно видаляє завдання Text to Motion, включно з його кліпом руху. Видалення неможливо скасувати.
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."
}
Параметри шляху
- Name
- id
- Type
- path
- Description
ID завдання, яке потрібно видалити.
Статус завдання
Видалення завдання зі статусом PENDING повертає кредити, витрачені під час його створення.
Завдання зі статусом IN_PROGRESS видалити неможливо. Запит поверне 409 Conflict,
і завдання продовжить виконуватися. Meshy не повертає кредити за завдання, яке вже почало
виконуватися, тому видалення коштувало б вам і кредитів, і результату. Дочекайтеся, поки
воно досягне статусу SUCCEEDED, FAILED або CANCELED, а потім видаліть його.
Видалення завдання в кінцевому статусі (SUCCEEDED, FAILED або CANCELED)
не повертає витрачені кредити.
Повертає
200 OK, коли завдання видалено, або 409 Conflict, коли завдання має статус
IN_PROGRESS.
Об'єкт завдання Text to Motion
Об'єкт завдання Text to Motion описує генерацію одного кліпу руху. Він містить статус, progress і кліп, коли завдання виконано успішно.
Властивості
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 завдання. Розглядайте його як непрозорий рядок і не покладайтеся на його формат.
- Name
- type
- Type
- string
- Description
Тип завдання, завжди
text-to-motion.
- Name
- status
- Type
- string
- Description
Статус завдання, один із
PENDING,IN_PROGRESS,SUCCEEDED,FAILEDабоCANCELED.
- Name
- progress
- Type
- integer
- Description
Наскільки виконано завдання, у відсотках від
0до100.
- Name
- created_at
- Type
- timestamp
- Description
Час створення завдання, у мілісекундах Unix.
- Name
- started_at
- Type
- timestamp
- Description
Час початку виконання завдання, у мілісекундах Unix. Дорівнює
0, доки завдання не почнеться.
- Name
- finished_at
- Type
- timestamp
- Description
Час завершення завдання, у мілісекундах Unix. Дорівнює
0, доки завдання не завершиться.
- Name
- expires_at
- Type
- timestamp
- Description
Час, коли файли результату завдання стають недійсними, у мілісекундах Unix. Дорівнює
0, доки завдання не завершиться. Meshy зберігає кліп протягом 3 днів після завершення завдання, тож завантажте його до цього часу.
- Name
- preceding_tasks
- Type
- integer
- Description
Кількість завдань попереду цього у черзі. Значення має сенс лише, доки завдання перебуває у статусі
PENDING. Поле не вказується, якщо значення дорівнює0.
- Name
- consumed_credits
- Type
- integer
- Description
Кількість кредитів, витрачених завданням:
10для режимуprimeабо3для режимуswift. Дорівнює0для завдання зі статусомFAILED, оскільки Meshy повертає кредити, коли завдання завершується невдало.
- Name
- task_error
- Type
- object
- Description
Деталі помилки, якщо завдання завершилося невдало, і
nullв іншому випадку. Див. Помилки.
- Name
- result
- Type
- object
- Description
Згенерований кліп руху, коли завдання виконано успішно. До цього моменту поля присутні, але порожні (
""або0).- Name
motion_url- Type
- string
- Description
- URL для завантаження кліпу руху. Meshy повторно підписує URL під час кожного читання, і він стає недійсним після закінчення вікна зберігання завдання.
- Name
motion_format- Type
- string
- Description
- Формат файлу кліпу:
fbxдля режимуprimeабоbvhдля режимуswift.
- Name
duration_ms- Type
- integer
- Description
- Тривалість кліпу, у мілісекундах.
- Name
mode- Type
- string
- Description
- Режим, який Meshy використав для генерації кліпу:
primeабоswift.