lowpoly 30 Eki 2026 tarihinde kaldırılıyor. İstek hatalarını önlemek için bu tarihlerden önce model değiştirin.

Animasyon API

Kullanılabilir animasyonları keşfetmek ve bunları rig'li karakterlere uygulamak için endpoint'ler.


POST/openapi/v1/animations

Bir Animasyon Görevi Oluşturun

Bu uç nokta, daha önce rigging işlemi uygulanmış bir karaktere animasyon uygulamak için yeni bir görev oluşturmanıza olanak tanır — animasyon kütüphanesinden önceden tanımlanmış bir aksiyon (action_id), tek bir dosyada birleştirilmiş birden fazla önceden tanımlanmış aksiyon (action_ids) veya Text to Motion API ile oluşturduğunuz bir hareket klibi (motion_task_id). Son işleme seçeneklerini içerir.

Görev arka planda çalışır. Genellikle ne kadar sürdüğü için bkz. İşlem Süreleri.

Parametreler

  • Name
    rig_task_id
    Type
    string
    Zorunlu
    Description

    Başarıyla tamamlanmış bir rigging görevinin id değeri (POST /openapi/v1/rigging üzerinden). Bu görevdeki karakter animasyonlandırılacaktır.

  • Name
    action_id
    Type
    integer
    Description

    Uygulanacak önceden tanımlanmış animasyon aksiyonunun tanımlayıcısı. Mevcut animasyonların tam listesi için Animasyon kütüphanesi Referansı bölümüne bakın. action_id, action_ids veya motion_task_id değerlerinden tam olarak birini sağlayın.

  • Name
    action_ids
    Type
    array of integers
    Description

    Tek seferde uygulanacak birden fazla önceden tanımlanmış animasyon aksiyonu; her aksiyon için bir animasyon klibi içeren tek bir dosya olarak döndürülür — bir oyun motorundaki bir durum makinesinden (state machine) karakteri yönlendirmek için kullanışlıdır. Animasyon kütüphanesi Referansı bölümünden 1 ile 10 arasında action_id değeri sağlayın; id'ler benzersiz olmalıdır. Aksiyon başına 3 kredi tutar. action_id, action_ids veya motion_task_id değerlerinden tam olarak birini sağlayın.

    Tek elemanlı bir action_ids göndermek, bu değeri action_id olarak göndermekle eşdeğerdir.

  • Name
    motion_task_id
    Type
    string
    Description

    Önceden tanımlanmış bir aksiyon yerine uygulanacak, başarıyla tamamlanmış bir Text to Motion görevinin id değeri. Oluşturulan klip, rigging uygulanmış karaktere yeniden hedeflenir ve klip oluşturulma anında anlık görüntüsü alınır; bu nedenle kaynak görev daha sonra sona erer veya silinirse bu görev etkilenmez. Kaynak görevin asset'leri 3 gün boyunca saklanır — klibi süresi dolmadan önce uygulayın. İki ayaklı (biped) bir rig gerektirir. action_id, action_ids veya motion_task_id değerlerinden tam olarak birini sağlayın.

  • Name
    post_process
    Type
    object
    Description

    Animasyon çıktısı için isteğe bağlı son işleme. Standart animasyon dosyalarını almak için bunu atlayın.

Yalnızca şu durumlarda geçerli post_process is set
  • Name
    operation_type
    Type
    string
    Zorunlu
    Description

    Gerçekleştirilecek işlemin türü. Kullanılabilir değerler: change_fps, fbx2usdz, extract_armature.

  • Name
    fps
    Type
    integer
    varsayılan 30
    Description

    Hedef kare hızı. Yalnızca operation_type değeri change_fps olduğunda geçerlidir. İzin verilen değerler: 24, 25, 30, 60.

Dönüş Değerleri

Yanıtın result özelliği, yeni oluşturulan animasyon görevinin id değerini içerir.

Hata Modları

  • Name
    400 - Bad Request
    Description

    İstek kabul edilemez durumdaydı. Yaygın nedenler:

    • Eksik parametre: rig_task_id eksik veya action_id, action_ids ve motion_task_id değerlerinden hiçbiri sağlanmamış.
    • Çakışan parametreler: action_id, action_ids ve motion_task_id değerlerinden birden fazlası sağlanmış — bunlar birbirini dışlar.
    • Geçersiz rig görevi: rig_task_id geçersiz veya başarısız/mevcut olmayan bir göreve işaret ediyor.
    • Geçersiz aksiyon ID'si: Bir action_id — veya action_ids içindeki bir girdi — geçerli bir animasyona karşılık gelmiyor.
    • Çok fazla aksiyon: action_ids, 10'dan fazla id içeriyor.
    • Yinelenen aksiyonlar: action_ids, aynı id'yi birden fazla kez içeriyor.
    • Hareket görevi hazır değil: motion_task_id görevi henüz SUCCEEDED durumuna ulaşmamış.
    • Desteklenmeyen rig: motion_task_id, iki ayaklı (biped) bir rig gerektirir; dört ayaklı (quadruped) rig'ler reddedilir.
  • Name
    401 - Unauthorized
    Description

    Kimlik doğrulama başarısız oldu. Lütfen API anahtarınızı kontrol edin.

  • Name
    402 - Payment Required
    Description

    Bu görevi gerçekleştirmek için yetersiz kredi.

  • Name
    404 - Not Found
    Description

    rig_task_id ile belirtilen rigging görevi bulunamadı, motion_task_id ile belirtilen hareket görevi bulunamadı veya hareket klibinin süresi dolmuş (kaynak görev asset'leri 3 gün boyunca saklanır).

  • Name
    429 - Too Many Requests
    Description

    Hız sınırınızı aştınız.

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

Bir Animasyon Görevini Getir

Bu uç nokta, geçerli bir görev id değeri verildiğinde bir animasyon görevini getirmenizi sağlar. Hangi özelliklerin dahil edildiğini görmek için The Animation Task Object bölümüne bakın.

Parametreler

  • Name
    id
    Type
    path
    Description

    Getirilecek animasyon görevinin benzersiz tanımlayıcısı.

Döndürülenler

Yanıt, Animation Task nesnesini içerir. Ayrıntılar için The Animation Task Object bölümüne bakın.

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

Bir Animasyon Görevini Sil

Bu uç nokta, ilişkili tüm modeller ve veriler dahil olmak üzere bir animasyon görevini kalıcı olarak siler. Bu işlem geri alınamaz.

Yol Parametreleri

  • Name
    id
    Type
    path
    Description

    Silinecek animasyon görevinin ID'si.

Görev Durumu

Hâlâ PENDING durumunda olan bir görev silinir ve oluşturma sırasında harcanan kredi iade edilir.

Zaten IN_PROGRESS durumunda olan bir görev silinemez: istek 409 Conflict ile reddedilir ve görev çalışmaya devam eder. Worker'ın zaten başlatmış olduğu bir görev için kredi iadesi yapılmaz, bu nedenle görev çalışırken silinmesi hem kredinizi hem de sonucu kaybetmenize neden olur. SUCCEEDED, FAILED veya CANCELED durumuna ulaşmasını bekleyin, ardından silin.

Son (terminal) bir durumda olan görev (SUCCEEDED, FAILED veya CANCELED) iade yapılmadan silinir.

Dönüş Değerleri

Başarı durumunda 200 OK, görev IN_PROGRESS durumundaysa 409 Conflict döner.

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

Animasyon Görevlerini Listele

Çağıranın animasyon görevlerinin, en yeniden en eskiye doğru sıralanmış, sayfalanmış bir listesini döndürür. page_num ve page_size ile standart sayfalama kullanılır.

API üzerinden oluşturulan görevlerin API üzerinden yönetildiğini unutmayın; bu görevler web uygulamasının My Assets bölümünde görünmez. Artık kimliğine sahip olmadığınız bir görevi bulmak için bu uç noktayı kullanı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

Animasyon Görevini Akışla İletme

Bu uç nokta, Server-Sent Events (SSE) kullanarak bir Animasyon görevi için gerçek zamanlı güncellemeleri akışla iletir.

Parametreler

  • Name
    id
    Type
    path
    Description

    Akışla iletilecek Animasyon görevi için benzersiz tanımlayıcı.

Dönüş Değerleri

Animasyon Görevi Nesnelerini Server-Sent Events olarak akış şeklinde döndürür.

PENDING veya IN_PROGRESS durumundaki görevler için, yanıt akışı yalnızca gerekli progress ve status alanlarını içerecektir.

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
}

Animasyon Task Nesnesi

Animasyon Task nesnesi, rigli bir karaktere animasyon uygulama işinin iş birimini temsil eder.

Özellikler

  • Name
    id
    Type
    string
    Description

    Görev için benzersiz tanımlayıcı.

  • Name
    type
    Type
    string
    Description

    Animasyon görevinin türü. Değer animate şeklindedir.

  • Name
    status
    Type
    string
    Description

    Görevin durumu. Olası değerler: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Görevin ilerlemesi (0-100).

  • Name
    created_at
    Type
    timestamp
    Description

    Görevin oluşturulduğu zaman damgası (epoch'tan bu yana geçen milisaniye).

  • Name
    started_at
    Type
    timestamp
    Description

    Görevin işlenmeye başladığı zaman damgası (epoch'tan bu yana geçen milisaniye). Başlamadıysa 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Görevin tamamlandığı zaman damgası (epoch'tan bu yana geçen milisaniye). Tamamlanmadıysa 0.

  • Name
    expires_at
    Type
    timestamp
    Description

    Görev sonucu varlıkların süresinin dolduğu zaman damgası (epoch'tan bu yana geçen milisaniye).

  • Name
    task_error
    Type
    object
    Description

    Başarısız görevler için hata ayrıntıları. Tam task_error nesne referansı için Hatalar sayfasına bakın.

  • Name
    consumed_credits
    Type
    integer
    Description

    Bu görev tarafından tüketilen kredi sayısı. Görev durumu PENDING, IN_PROGRESS veya SUCCEEDED olduğunda mevcuttur. FAILED görevler için 0 döner (başarısızlık durumunda krediler iade edilir).

  • Name
    result
    Type
    object
    Description

    Görev SUCCEEDED olduğunda çıktı animasyon URL'lerini içerir.

    • Name
      animation_glb_url
      Type
      string
      Description
      GLB formatındaki animasyon için indirilebilir URL. action_ids ile oluşturulan bir görev için, bu tek dosya istenen her eylemi ayrı bir klip olarak içerir.
    • Name
      animation_fbx_url
      Type
      string
      Description
      FBX formatındaki animasyon için indirilebilir URL. action_ids ile oluşturulan bir görev için, bu tek dosya istenen her eylemi ayrı bir klip olarak içerir.
    • Name
      processed_usdz_url
      Type
      string
      Description
      USDZ formatında işlenmiş animasyon için indirilebilir URL.
    • Name
      processed_armature_fbx_url
      Type
      string
      Description
      FBX formatında işlenmiş iskelet için indirilebilir URL.
    • Name
      processed_animation_fps_fbx_url
      Type
      string
      Description
      FBX formatında FPS'i değiştirilmiş animasyon için indirilebilir URL (örneğin, change_fps işlemi kullanıldıysa).
  • Name
    preceding_tasks
    Type
    integer
    Description

    Kuyruktaki önceki görevlerin sayısı. Yalnızca durum PENDING olduğunda anlamlıdır.

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

Animasyonları Listele

action_id'ye göre sıralanmış olarak kütüphanedeki her animasyonu döndürür. Yanıt, bir sayfa değil eksiksiz bir listedir; bu nedenle bir eylem seçiciyi doldurmak için tek bir çağrı yeterlidir. Filtreler sonucu daraltır; hepsini her şeyi almak için atlayabilirsiniz.

Aynı kataloğu gözle, her eylemin animasyonlu bir önizlemesiyle birlikte taramak için Animasyon kütüphanesi referansına bakın.

Bu uç nokta ücretsizdir — hiç kredi harcamaz.

Parametreler

  • Name
    search
    Type
    string
    Description

    name veya key üzerinde büyük/küçük harfe duyarsız alt dize eşleşmesi. Değer harfi harfine eşleştirilir, bu nedenle % ve _ joker karakter değil sıradan karakterlerdir.

  • Name
    category
    Type
    string
    Description

    category üzerinde birebir eşleşme.

    Kullanılabilir değerler:

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

    sub_category üzerinde birebir eşleşme. Tek başına kullanılabilir — alt kategori adları kategoriler arasında benzersiz değildir (Transitioning hem Fighting hem de DailyActions altında görünür), bu yüzden bir category olmadan filtre, o alt kategoriyi nerede görünürse görünsün eşleştirir.

  • Name
    action_ids
    Type
    string
    Description

    Belirli kimlikleri çözümlemek, göz atmak yerine döndürülecek virgülle ayrılmış action_id değerleri listesi. En fazla 200 kimlik kabul eder. Hiçbir animasyonun taşımadığı kimlikler yanıtta basitçe bulunmaz, bu yüzden bunu, kayıtlı tuttuğunuz kimliklerin hâlâ kullanılabilir olup olmadığını kontrol etmek için de kullanabilirsiniz.

Filtreleri birleştirme

Filtreler birlikte uygulanır — her biri sonucu daha da daraltır, bu nedenle bir animasyon yalnızca hepsini karşılıyorsa döndürülür. Tek bir filtre içinde birden fazla değer bunlardan herhangi biriyle eşleşir: search, name veya key ile eşleşir ve action_ids listedeki herhangi bir kimlikle eşleşir.

Bu, örtüşmeyen bir kombinasyonun bir hata yerine boş bir dizi döndüreceği anlamına gelir. 92 eylemi, bir Fighting animasyonu olan "Double Combo Attack"tir:

  • ?action_ids=92&category=Fighting, 92 eylemini döndürür.
  • ?action_ids=92&category=Dancing, [] döndürür — bu bir Dancing animasyonu değildir.
  • ?action_ids=92&search=walk, [] döndürür — adı walk ile eşleşmez.

Kategorisinden bağımsız olarak belirli animasyonları almak için action_ids'i tek başına geçirin.

Dönüşler

Animasyon Nesneleri'nin bir listesini döndürür.

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"
  }
]

Animasyon Nesnesi

  • Name
    action_id
    Type
    integer
    Description

    Bir animasyon görevi oluştururken action_id olarak iletilecek değer. Benzersiz ve sabittir, ancak ardışık değildir — kullanımdan kaldırılan animasyonlar numaralandırmada boşluklar bırakır, bu yüzden bir id aralığının geçerli olduğunu asla varsaymayın.

  • Name
    name
    Type
    string
    Description

    Görüntüleme için insan tarafından okunabilir etiket. Benzersiz değildir: bazı animasyonlar farklı bir varyantla aynı adı paylaşır, bu yüzden kimlik için action_id veya key kullanın.

  • Name
    key
    Type
    string
    Description

    Animasyon için benzersiz ve sabit bir slug. Kendi depolamanızı anahtarlamak için sayısal olmayan bir tanımlayıcıya ihtiyaç duyduğunuzda bunu kullanın.

  • Name
    category
    Type
    string
    Description

    Üst düzey gruplama, örn. Fighting.

  • Name
    sub_category
    Type
    string
    Description

    Kategori içindeki gruplama, örn. AttackingwithWeapon.

  • Name
    preview_url
    Type
    string
    Description

    Eylemin önizlemesini sunan, doğrudan kendi seçicinizde görüntülenmeye uygun animasyonlu bir GIF'in URL'si.

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