Animation API

Endpoints zum Auffinden verfügbarer Animationen und zum Anwenden dieser auf geriggte Charaktere.


POST/openapi/v1/animations

Erstellen einer Animationsaufgabe

Dieser Endpunkt ermöglicht es Ihnen, eine neue Aufgabe zu erstellen, um eine Animation auf einen zuvor gerigten Charakter anzuwenden — eine voreingestellte Aktion aus der Animationsbibliothek (action_id), mehrere zu einer Datei zusammengeführte voreingestellte Aktionen (action_ids) oder einen mit der Text to Motion API generierten Motion-Clip (motion_task_id). Enthält Nachbearbeitungsoptionen.

Parameter

  • Name
    rig_task_id
    Type
    string
    Erforderlich
    Description

    Die id einer erfolgreich abgeschlossenen Rigging-Aufgabe (von POST /openapi/v1/rigging). Der Charakter aus dieser Aufgabe wird animiert.

  • Name
    action_id
    Type
    integer
    Description

    Die Kennung der anzuwendenden voreingestellten Animationsaktion. Eine vollständige Liste der verfügbaren Animationen finden Sie in der Animation-Library-Referenz. Geben Sie genau einen der Werte action_id, action_ids oder motion_task_id an.

  • Name
    action_ids
    Type
    array of integers
    Description

    Mehrere voreingestellte Animationsaktionen, die gleichzeitig angewendet werden, zurückgegeben als eine einzelne Datei mit einem Animations-Clip pro Aktion — nützlich, um einen Charakter aus einer State-Machine in einer Game Engine heraus zu steuern. Geben Sie 1 bis 10 action_id-Werte aus der Animation-Library-Referenz an; die IDs müssen eindeutig sein. Kostet 3 Credits pro Aktion. Geben Sie genau einen der Werte action_id, action_ids oder motion_task_id an.

    Die Übergabe eines einelementigen action_ids entspricht der Übergabe dieses Werts als action_id.

  • Name
    motion_task_id
    Type
    string
    Description

    Die id einer erfolgreich abgeschlossenen Text to Motion-Aufgabe, die anstelle einer voreingestellten Aktion angewendet werden soll. Der generierte Clip wird auf den gerigten Charakter neu ausgerichtet, und der Clip wird zum Zeitpunkt der Erstellung als Snapshot gespeichert, sodass diese Aufgabe nicht betroffen ist, wenn die Quellaufgabe später abläuft oder gelöscht wird. Die Assets der Quellaufgabe werden 3 Tage lang aufbewahrt — wenden Sie den Clip an, bevor er abläuft. Erfordert einen zweibeinigen Rig. Geben Sie genau einen der Werte action_id, action_ids oder motion_task_id an.

  • Name
    post_process
    Type
    object
    Description

    Optionale Nachbearbeitung für die Animationsausgabe. Lassen Sie es weg, um die Standard-Animationsdateien zu erhalten.

Gilt nur wenn post_process is set
  • Name
    operation_type
    Type
    string
    Erforderlich
    Description

    Der Typ der durchzuführenden Operation. Verfügbare Werte: change_fps, fbx2usdz, extract_armature.

  • Name
    fps
    Type
    integer
    Standard 30
    Description

    Die Ziel-Bildrate. Nur anwendbar, wenn operation_type gleich change_fps ist. Zulässige Werte: 24, 25, 30, 60.

Rückgabewerte

Die Eigenschaft result der Antwort enthält die Aufgaben-id der neu erstellten Animationsaufgabe.

Fehlermodi

  • Name
    400 - Bad Request
    Description

    Die Anfrage war nicht akzeptabel. Häufige Ursachen:

    • Fehlender Parameter: rig_task_id fehlt, oder keiner der Werte action_id, action_ids und motion_task_id wurde angegeben.
    • Widersprüchliche Parameter: mehr als einer der Werte action_id, action_ids und motion_task_id wurde angegeben — sie schließen sich gegenseitig aus.
    • Ungültige Rigging-Aufgabe: Die rig_task_id ist ungültig oder verweist auf eine fehlgeschlagene/nicht existierende Aufgabe.
    • Ungültige Aktions-ID: Eine action_id — oder ein Eintrag von action_ids — entspricht keiner gültigen Animation.
    • Zu viele Aktionen: action_ids enthält mehr als 10 IDs.
    • Doppelte Aktionen: action_ids enthält dieselbe ID mehrfach.
    • Motion-Aufgabe nicht bereit: Die durch motion_task_id referenzierte Aufgabe hat noch nicht den Status SUCCEEDED erreicht.
    • Nicht unterstützter Rig: motion_task_id erfordert einen zweibeinigen Rig; vierbeinige Rigs werden abgelehnt.
  • Name
    401 - Unauthorized
    Description

    Die Authentifizierung ist fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.

  • Name
    402 - Payment Required
    Description

    Unzureichende Credits, um diese Aufgabe auszuführen.

  • Name
    404 - Not Found
    Description

    Die durch rig_task_id angegebene Rigging-Aufgabe wurde nicht gefunden, die durch motion_task_id angegebene Motion-Aufgabe wurde nicht gefunden, oder der Motion-Clip ist abgelaufen (die Assets der Quellaufgabe werden 3 Tage lang aufbewahrt).

  • Name
    429 - Too Many Requests
    Description

    Sie haben Ihre Ratenbegrenzung überschritten.

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 several preset actions and get one file with one clip per 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",
    "action_ids": [10, 25, 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

Eine Animations-Aufgabe abrufen

Dieser Endpunkt ermöglicht es Ihnen, eine Animations-Aufgabe anhand einer gültigen Aufgaben-id abzurufen. Weitere Informationen zu den enthaltenen Eigenschaften finden Sie unter Das Animation-Task-Objekt.

Parameter

  • Name
    id
    Type
    path
    Description

    Eindeutige Kennung der abzurufenden Animations-Aufgabe.

Rückgabewerte

Die Antwort enthält das Animation-Task-Objekt. Details finden Sie im Abschnitt Das Animation-Task-Objekt.

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

Eine Animationsaufgabe löschen

Dieser Endpunkt löscht eine Animationsaufgabe dauerhaft, einschließlich aller zugehörigen Modelle und Daten. Diese Aktion ist unwiderruflich.

Pfadparameter

  • Name
    id
    Type
    path
    Description

    Die ID der zu löschenden Animationsaufgabe.

Aufgabenstatus

Eine Aufgabe, die sich noch im Status PENDING befindet, wird gelöscht, und die zum Erstellungszeitpunkt verbrauchten Credits werden zurückerstattet.

Eine Aufgabe, die sich bereits im Status IN_PROGRESS befindet, kann nicht gelöscht werden: Die Anfrage wird mit 409 Conflict abgelehnt, und die Aufgabe läuft weiter. Credits für eine Aufgabe, die der Worker bereits gestartet hat, sind nicht erstattungsfähig. Ein Löschen während der Ausführung würde Sie also sowohl die Credits als auch das Ergebnis kosten. Warten Sie, bis der Status SUCCEEDED, FAILED oder CANCELED erreicht ist, und löschen Sie sie dann.

Eine Aufgabe in einem Endzustand (SUCCEEDED, FAILED oder CANCELED) wird ohne Rückerstattung gelöscht.

Rückgabewerte

Gibt bei Erfolg 200 OK zurück, oder 409 Conflict, wenn sich die Aufgabe im Status IN_PROGRESS befindet.

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

// 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."
}

GET/openapi/v1/animations

Liste der Animation-Aufgaben

Gibt eine paginierte Liste der Animation-Aufgaben des Aufrufers zurück, neueste zuerst. Standard-Paginierung über page_num und page_size.

Beachten Sie, dass Aufgaben, die über die API erstellt wurden, auch über die API verwaltet werden — sie erscheinen nicht in „Meine Assets“ der Web-App. Verwenden Sie diesen Endpunkt, um eine Aufgabe zu finden, deren ID Sie nicht mehr haben.

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

Streamen einer Animation-Aufgabe

Dieser Endpunkt streamt Echtzeit-Updates für eine Animation-Aufgabe über Server-Sent Events (SSE).

Parameter

  • Name
    id
    Type
    path
    Description

    Eindeutige Kennung der Animation-Aufgabe, die gestreamt werden soll.

Rückgabewerte

Gibt einen Stream von The Animation Task Objects als Server-Sent Events zurück.

Bei Aufgaben mit dem Status PENDING oder IN_PROGRESS enthält der Antwort-Stream nur die notwendigen Felder progress und status.

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
}

The Animation Task Object

Das Animation-Task-Objekt repräsentiert die Arbeitseinheit für das Anwenden einer Animation auf einen gerigten Charakter.

Eigenschaften

  • Name
    id
    Type
    string
    Description

    Eindeutige Kennung für den Task.

  • Name
    type
    Type
    string
    Description

    Typ des Animation-Tasks. Der Wert ist animate.

  • Name
    status
    Type
    string
    Description

    Status des Tasks. Mögliche Werte: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Fortschritt des Tasks (0-100).

  • Name
    created_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit der Epoche), zu dem der Task erstellt wurde.

  • Name
    started_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit der Epoche), zu dem der Task mit der Verarbeitung begonnen hat. 0, falls noch nicht gestartet.

  • Name
    finished_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit der Epoche), zu dem der Task abgeschlossen wurde. 0, falls noch nicht abgeschlossen.

  • Name
    expires_at
    Type
    timestamp
    Description

    Zeitstempel (Millisekunden seit der Epoche), zu dem die Ergebnis-Assets des Tasks ablaufen.

  • Name
    task_error
    Type
    object
    Description

    Fehlerdetails für fehlgeschlagene Tasks. Siehe Fehler für die vollständige Referenz des task_error-Objekts.

  • Name
    consumed_credits
    Type
    integer
    Description

    Die Anzahl der von diesem Task verbrauchten Credits. Vorhanden, wenn der Task-Status PENDING, IN_PROGRESS oder SUCCEEDED ist. Gibt 0 für FAILED-Tasks zurück (Credits werden bei einem Fehlschlag zurückerstattet).

  • Name
    result
    Type
    object
    Description

    Enthält die Ausgabe-Animations-URLs, falls der Task SUCCEEDED ist.

    • Name
      animation_glb_url
      Type
      string
      Description
      Herunterladbare URL für die Animation im GLB-Format. Bei einem Task, der mit action_ids erstellt wurde, enthält diese einzelne Datei jede angeforderte Aktion als separaten Clip.
    • Name
      animation_fbx_url
      Type
      string
      Description
      Herunterladbare URL für die Animation im FBX-Format. Bei einem Task, der mit action_ids erstellt wurde, enthält diese einzelne Datei jede angeforderte Aktion als separaten Clip.
    • Name
      processed_usdz_url
      Type
      string
      Description
      Herunterladbare URL für die verarbeitete Animation im USDZ-Format.
    • Name
      processed_armature_fbx_url
      Type
      string
      Description
      Herunterladbare URL für die verarbeitete Armature im FBX-Format.
    • Name
      processed_animation_fps_fbx_url
      Type
      string
      Description
      Herunterladbare URL für die Animation mit geänderter FPS im FBX-Format (z. B. falls die Operation change_fps verwendet wurde).
  • Name
    preceding_tasks
    Type
    integer
    Description

    Die Anzahl der vorangehenden Tasks in der Warteschlange. Nur relevant, wenn der Status PENDING ist.

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
}

GET/openapi/v1/animations/library

List Animations

Gibt jede Animation in der Bibliothek zurück, sortiert nach action_id. Die Antwort ist eine vollständige Liste und keine Seite, sodass ein einziger Aufruf genügt, um eine Aktionsauswahl zu befüllen. Filter grenzen das Ergebnis ein; lässt man sie alle weg, werden alle Einträge abgerufen.

Um denselben Katalog visuell zu durchsuchen, mit einer animierten Vorschau jeder Aktion, siehe die Animationsbibliothek-Referenz.

Dieser Endpunkt ist kostenlos — er verbraucht keine Credits.

Parameter

  • Name
    search
    Type
    string
    Description

    Groß-/Kleinschreibung ignorierender Teilstring-Abgleich auf name oder key. Wird wörtlich abgeglichen, sodass % und _ gewöhnliche Zeichen sind und keine Platzhalter.

  • Name
    category
    Type
    string
    Description

    Exakter Abgleich auf category.

    Verfügbare Werte:

    • WalkAndRun
    • BodyMovements
    • DailyActions
    • Fighting
    • Dancing
  • Name
    sub_category
    Type
    string
    Description

    Exakter Abgleich auf sub_category. Kann eigenständig verwendet werden — Namen von Unterkategorien sind über Kategorien hinweg nicht eindeutig (Transitioning erscheint sowohl unter Fighting als auch unter DailyActions), sodass der Filter ohne category diese Unterkategorie überall dort trifft, wo sie vorkommt.

  • Name
    action_ids
    Type
    string
    Description

    Durch Kommas getrennte Liste von action_id-Werten, die zurückgegeben werden sollen, um gezielt bestimmte IDs aufzulösen, anstatt zu durchsuchen. Es werden höchstens 200 IDs akzeptiert. IDs, die keine Animation trägt, fehlen einfach in der Antwort, sodass Sie dies auch nutzen können, um zu prüfen, ob von Ihnen gespeicherte IDs noch verfügbar sind.

Kombinieren von Filtern

Filter werden gemeinsam angewendet — jeder grenzt das Ergebnis weiter ein, sodass eine Animation nur zurückgegeben wird, wenn sie alle erfüllt. Innerhalb eines einzelnen Filters treffen mehrere Werte auf jeden von ihnen zu: search trifft auf name oder key, und action_ids trifft auf jede ID in der Liste.

Das bedeutet, dass eine Kombination ohne Überschneidung ein leeres Array statt eines Fehlers zurückgibt. Aktion 92 ist „Double Combo Attack“, eine Fighting-Animation:

  • ?action_ids=92&category=Fighting gibt Aktion 92 zurück.
  • ?action_ids=92&category=Dancing gibt [] zurück — sie ist keine Dancing-Animation.
  • ?action_ids=92&search=walk gibt [] zurück — ihr Name entspricht nicht walk.

Um bestimmte Animationen unabhängig von ihrer Kategorie abzurufen, übergeben Sie action_ids allein.

Rückgabe

Gibt eine Liste von Animationsobjekten zurück.

Request

GET
/openapi/v1/animations/library
curl "https://api.meshy.ai/openapi/v1/animations/library?category=Fighting" \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "action_id": 4,
    "name": "Attack",
    "key": "Attack",
    "category": "Fighting",
    "sub_category": "AttackingwithWeapon",
    "preview_url": "https://cdn.meshy.ai/webapp-assets/feature-demo/animation/preview/biped/Attack.gif"
  },
  {
    "action_id": 92,
    "name": "Double Combo Attack",
    "key": "Double_Combo_Attack",
    "category": "Fighting",
    "sub_category": "AttackingwithWeapon",
    "preview_url": "https://cdn.meshy.ai/webapp-assets/feature-demo/animation/preview/biped/Double_Combo_Attack.gif"
  }
]

Das Animation-Objekt

  • Name
    action_id
    Type
    integer
    Description

    Der Wert, der als action_id beim Erstellen eines Animationsauftrags übergeben werden soll. Eindeutig und stabil, aber nicht fortlaufend — ausgemusterte Animationen hinterlassen Lücken in der Nummerierung, gehen Sie also niemals davon aus, dass ein Bereich von IDs gültig ist.

  • Name
    name
    Type
    string
    Description

    Menschenlesbare Bezeichnung zur Anzeige. Nicht eindeutig: Manche Animationen teilen sich einen Namen mit einer anderen Variante, verwenden Sie also action_id oder key als Identität.

  • Name
    key
    Type
    string
    Description

    Eindeutiger, stabiler Slug für die Animation. Verwenden Sie ihn, wenn Sie einen nicht-numerischen Bezeichner benötigen, um Ihren eigenen Speicher zu indizieren.

  • Name
    category
    Type
    string
    Description

    Übergeordnete Gruppierung, z. B. Fighting.

  • Name
    sub_category
    Type
    string
    Description

    Gruppierung innerhalb der Kategorie, z. B. AttackingwithWeapon.

  • Name
    preview_url
    Type
    string
    Description

    URL eines animierten GIFs zur Vorschau der Aktion, geeignet für die direkte Darstellung in Ihrer eigenen Auswahlkomponente.

Example Animation Object

{
  "action_id": 92,
  "name": "Double Combo Attack",
  "key": "Double_Combo_Attack",
  "category": "Fighting",
  "sub_category": "AttackingwithWeapon",
  "preview_url": "https://cdn.meshy.ai/webapp-assets/feature-demo/animation/preview/biped/Double_Combo_Attack.gif"
}