Ü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| Durum | Son mu | Anlamı |
|---|---|---|
queued | hayır | kabul edildi, model kapasitesi bekleniyor |
in_progress | hayır | model çalışıyor |
succeeded | evet | assets çıktıyı içerir |
failed | evet | nedenini error söyler; ücret iade edilir ve ne kadar olduğunu billing.credits_refunded söyler |
cancelled | evet | çı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
}| Alan | Anlamı |
|---|---|
error | null veya failed durumunda { "error_code": "…", "message": "…" }. Mesaj, kullanıcılarınıza gösterilebilir. |
billing | bu üretimin maliyeti; bkz. Krediler ve kullanım |
assets[].id | diğer araçların girdi olarak aldığı varlık kimliği (image_asset_id, video_asset_id, …) |
assets[].url | medyayı indirmek için kısa bir bağlantı; süresi dolmaz ve url_expires_at değeri null olur |
assets[].studio_url | varlığı ekibiniz için Morphic Studio'da açar |
assets[].final_generation_expires_at | yalnızca taslak videolar: finalize_video_draft aracının onu tam çözünürlükte render edebileceği son tarih |
content_left_out, render_warnings | yalnızca birleştirmeler ve zaman çizelgesi dışa aktarımları: çıktının neleri içeremediği ve nedeni |
poll_after_seconds | son 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"waitisteğe bağlıdır,0ile45saniye 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
403değil,404yanı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}'waitile 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 yoklama | Son duruma kadar tipik süre |
|---|---|---|
| görsel, görsel düzenleme, yükseltme, görsel işlemleri | 5 sn sonra | 5 ila 60 sn |
| konuşma, ses efekti, transkripsiyon | 10 sn sonra | 10 ila 90 sn |
| müzik, diyalog | 20 sn sonra | 30 sn ila 3 dk |
| video, video düzenleme, dudak senkronu, render'lar | 30 sn sonra | 1 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ır | Değer | Aşıldığında |
|---|---|---|
| Bir anahtarın tek bir üretimi okuması | dakikada 30 | 429, Retry-After |
| Bir anahtarın tüm üretimleri okuması | dakikada 1.200 | 429, Retry-After |
wait | 45 saniye | sınıra indirilir |
| Toplu okuma başına kimlik | 10 | 400 |
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.
Bir aracı çağırma
Herhangi bir Direct API aracını tek bir istek biçimiyle çağırın, sonucunu ve faturalandırmasını okuyun ve ücretli çağrıları bir Idempotency-Key ile güvenle yeniden deneyin.
Webhook'lar
Bir Direct API üretimi bittiğinde imzalı bir bildirim alın, imzayı doğrulayın ve ayrıntılar için üretimi okuyun.