Üretimler

Bir Direct API üretimini uzun yoklamayla son durumuna kadar takip edin, birkaçını aynı anda okuyun ve ne zaman yoklama yapacağınızı bilin.

Üretim, eşzamansız işin bir birimidir: bir görsel, bir video, bir ses parçası, bir render. returns_generation: true olan araçlar bir veya daha fazla üretim başlatır ve kimlikleriyle hemen yanıt verir. Bunları yoklamayla, webhook ile veya her ikisiyle takip edin: ana sinyal olarak bir webhook, güvenlik ağı olarak da ara sıra bir yoklama kullanın.

Durumlar

queued ──► in_progress ──► succeeded
   │             │
   │             ├──────► failed
   └─────────────┴──────► cancelled
DurumSon muAnlamı
queuedhayırkabul edildi, model kapasitesi bekleniyor
in_progresshayırmodel çalışıyor
succeededevetassets çıktıyı içerir
failedevetnedenini error söyler; ücret iade edilir ve ne kadar olduğunu billing.credits_refunded söyler
cancelledevetçıktı üretmeden önce durduruldu; ücret iade edilir

Tanımadığınız herhangi bir durumu son olmayan durum olarak kabul edin ve üretimi takip etmeye devam edin; yeni ara durumlar eklenebilir.

Üretim nesnesi

{
  "object": "generation",
  "id": "0192a7b3-a1c4-7e02-8f9d-1a2b3c4d5e6f",
  "tool": "generate_video",
  "status": "succeeded",
  "project_id": "01928f4e-5b7c-7d2a-9e11-3c4b5a6d7e8f",
  "model_id": "mdl_7rk2pq9vxa4m",
  "created_at": "2026-10-25T09:14:03.120Z",
  "completed_at": "2026-10-25T09:15:41.902Z",
  "error": null,
  "billing": {
    "estimated_credits": 120,
    "credits_charged": 96,
    "credits_refunded": 0,
    "credits_are_final": true,
    "credits_settle_on_output_duration": true
  },
  "assets": [
    {
      "id": "0192a7b4-0f1e-7d3c-9b8a-7c6d5e4f3a2b",
      "type": "video",
      "name": "Bicycle hero shot",
      "mime_type": "video/mp4",
      "width": 1920,
      "height": 1080,
      "duration_seconds": 8,
      "url": "https://mcp.morphic.com/m/Xk29dPq",
      "url_expires_at": null,
      "studio_url": "https://studio.morphic.com/…",
      "final_generation_expires_at": null
    }
  ],
  "content_left_out": [],
  "render_warnings": [],
  "metadata": { "order_id": "4411" },
  "poll_after_seconds": null
}
AlanAnlamı
errornull veya failed durumunda { "error_code": "…", "message": "…" }. Mesaj, kullanıcılarınıza gösterilebilir.
billingbu üretimin maliyeti; bkz. Krediler ve kullanım
assets[].iddiğer araçların girdi olarak aldığı varlık kimliği (image_asset_id, video_asset_id, …)
assets[].urlmedyayı indirmek için kısa bir bağlantı; süresi dolmaz ve url_expires_at değeri null olur
assets[].studio_urlvarlığı ekibiniz için Morphic Studio'da açar
assets[].final_generation_expires_atyalnızca taslak videolar: finalize_video_draft aracının onu tam çözünürlükte render edebileceği son tarih
content_left_out, render_warningsyalnızca birleştirmeler ve zaman çizelgesi dışa aktarımları: çıktının neleri içeremediği ve nedeni
poll_after_secondsson durumda değilken bir sonraki okumadan önce ne kadar bekleneceği; son durumda null

Tek bir üretimi okuyun

GET /v1/direct/generations/{id}, { "generation": { … } } ile 200 yanıtını verir.

curl -s "https://mcp.morphic.com/v1/direct/generations/$ID?wait=45" \
  -H "Authorization: Bearer $MORPHIC_API_KEY"
  • wait isteğe bağlıdır, 0 ile 45 saniye arasındadır. İstek, üretimin durumu değişene veya üretim bitene kadar açık tutulur, ardından hemen yanıt verir.
  • Bekleme süresi dolduğunda güncel durumla yanıt verir. 45'ten büyük bir değer 45'e indirilir.
  • Başka bir kuruluşa ait ya da bu anahtarın okuyamadığı bir üretim, kimlikler yoklanamasın diye hiçbir zaman 403 değil, 404 yanıtını verir.

Birden fazla üretimi okuyun

POST /v1/direct/generations/batch-get, tek bir istekte en fazla 10 üretim okur.

curl -s https://mcp.morphic.com/v1/direct/generations/batch-get \
  -H "Authorization: Bearer $MORPHIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids": ["0192a7b3-…", "0192a7b3-…"], "wait": 30}'
  • wait ile istek, üretimlerden herhangi birinin durumu değiştiği anda veya hepsi son durumdayken yanıt verir.
  • Yanıt, istenen sırayla { "generations": [ … ], "not_found": ["…"] } biçimindedir.

Ne sıklıkla yoklama yapılmalı

Her başlatma ve son durumda olmayan her okuma poll_after_seconds taşır. Bir sonraki okumadan önce en az bu kadar bekleyin, ardından aralığı giderek uzatın.

Çıktıİlk yoklamaSon duruma kadar tipik süre
görsel, görsel düzenleme, yükseltme, görsel işlemleri5 sn sonra5 ila 60 sn
konuşma, ses efekti, transkripsiyon10 sn sonra10 ila 90 sn
müzik, diyalog20 sn sonra30 sn ila 3 dk
video, video düzenleme, dudak senkronu, render'lar30 sn sonra1 ila 10 dk, yoğun yükte daha uzun

Bir uzun yoklama (wait=45) ne kadar uzun tutulursa tutulsun tek bir okuma sayılır; bu yüzden yoklamanın hem en hızlı hem de en ucuz yoludur. HTTP istemcinizin zaman aşımını bekleme süresinin üzerinde ayarlayın: wait=45 için 60 sn.

import time, requests

def wait_for(generation_id, key):
    headers = {"Authorization": f"Bearer {key}"}
    url = f"https://mcp.morphic.com/v1/direct/generations/{generation_id}"
    while True:
        r = requests.get(url, params={"wait": 45}, headers=headers, timeout=60)
        if r.status_code == 429:
            time.sleep(int(r.headers.get("Retry-After", "5")))
            continue
        r.raise_for_status()
        gen = r.json()["generation"]
        if gen["status"] in ("succeeded", "failed", "cancelled"):
            return gen
        # A long-poll already waited; only sleep if the server asks for more.
        time.sleep(max(0, (gen.get("poll_after_seconds") or 0) - 45))

Yoklama sınırları

SınırDeğerAşıldığında
Bir anahtarın tek bir üretimi okumasıdakikada 30429, Retry-After
Bir anahtarın tüm üretimleri okumasıdakikada 1.200429, Retry-After
wait45 saniyesınıra indirilir
Toplu okuma başına kimlik10400

Toplu okuma, her iki sınırda da kimlik başına bir kez sayılır. Önerilen sıklıkta bir anahtar aynı anda yürütülen birkaç yüz üretimi takip edebilir; daha fazlasını takip ediyorsanız webhook'ları kullanın.


Herhangi bir sorun yaşarsanız ya da sorularınız olursa, bizimle iletişime geçmekten çekinmeyin. Yardım etmeye memnuniyet duyarız. Bize şu adresten yazın: support@morphic.com.

Bu sayfada