Ana içeriğe atla
Bir çağrı iki noktada başarısız olabilir. İstek bir HTTP hatasıyla hemen reddedilebilir ya da kabul edilip daha sonra status: "failed" ile sonuçlanabilir. Başarısız ve iptal edilen işler için ücret alınmaz. Yalnızca tamamlanan işler için ödeme yaparsınız. Bir node uygulamasında, uygulamanın kendi işi hiçbir zaman ücretlendirilmez. Her üretim veya LLM node’u, kendi işi tamamlandığında ücretlendirilir. Bir başarısızlık paralel node’ları veya diğer dalları iptal etmez; bu nedenle uygulama zaten başarısız olduktan sonra tamamlanan bir node da ücretlendirilir ve bu ücretler iade edilmez. Başarısız olan, iptal edilen veya hiç başlamayan bir node ücretlendirilmez. Bkz. API Anahtarları ve Faturalandırma.

İstek Anındaki Hatalar ve Başarısız İşler

İstek anındaki hatalar bir 4xx veya 5xx durum kodu döndürür. Hiçbir iş oluşturulmaz. Yanıt gövdesini aşağıda açıklandığı gibi okuyun. Başarısız işler gönderim anında başarılı bir durum kodu döndürür. GET /jobs/{id} ile sorgulayın veya bir webhook bekleyin. İş bittiğinde status değeri "failed" olur ve hata, üst düzey error nesnesinde yer alır. Başarısız bir işte result alanını okumayın: bu alan dahil edilmez (veya null olur). Çıktıyı yalnızca status değeri "completed" olduğunda içerir. cancelled durumundaki bir işte ne result ne de error bulunur. error.code değerine göre dallanın. message atlanabilir; provider_error ve internal için ise serbest biçimli sağlayıcı metnidir. message alanını ayrıştırmayın.

Yanıt Gövdeleri

Generate, jobs, assets, styles ve node apps uç noktalarında, gövde JSON olduğunda message ?? error değerini okuyun. Bu iki alandan biri özeti taşır. Bazı 5xx gövdeleri JSON değildir; buna gövdesi düz metin error code: 502 olan bir 502 de dahildir. Savunmacı bir şekilde ayrıştırın: gövde JSON değilse HTTP durum koduna göre dallanın. Çoğu hata { "message": "..." } yapısını kullanır; bazen ek alanlarla (limit, jobType, modelAccessDenial). Geçersiz JSON ve aşağıdaki birkaç işleyici bunun yerine { "error": "..." } kullanır. /mcp gibi MCP uç noktaları, bu sayfadaki HTTP gövdelerini değil, JSON-RPC hatalarını ({ "jsonrpc", "id", "error": { "code", "message" } }) döndürür.

Accept: application/json Gönderin

Accept: application/json olmadan bazı hatalar bir HTML sayfası olarak döner ve JSON ayrıştırıcınız başarısız olur.
401 ve 404 dahil { "message" } hataları, Accept değeri application/json veya */* olduğunda JSON’dur. Accept eksik olduğunda veya text/html olduğunda bu durum kodları bir HTML sayfası (Content-Type: text/html) olarak döner ve JSON ayrıştırıcınız başarısız olur. Bu, Accept başlığı göndermeyen istemciler için önemlidir. Python’un urllib modülü bunlardan biridir. curl varsayılan olarak Accept: */* gönderir, Node’un fetch işlevi de öyle; bu nedenle Accept değerini geçersiz kılmadığınız sürece ikisi de JSON alır. Kimlik doğrulaması yapılmamış POST /generate/..., GET /jobs/{id}, GET /styles ve GET /assets istekleri, */* ve application/json için 401 {"message":"Unauthorized"}, eksik Accept veya text/html için ise bir HTML sayfası döndürür. Bilinmeyen bir id için kimliği doğrulanmış bir GET /jobs/{id} isteği de durum koduyla aynı şekilde davranır: Accept JSON istediğinde 404 JSON {"message":"Job not found or unauthorized"}, Accept eksik olduğunda ise 404 text/html. Geçersiz JSON (400) ve doğrulama (422) hataları { "error" } kullanır ve Accept eksik olsa bile JSON olarak kalır. Aynısı kaldırılmış alan 422’si, sunset 410’u, Zero Data Retention 402’si, node uygulaması { "error" } yanıtları ve eşlenmiş Agent İşlem API’si hataları için de geçerlidir. Bir POST /generate/... işinin kabulü sırasında dönen 402 ve 429 da, tarayıcı Accept değeri dahil, JSON’dur. 413 ve 500, { "message" } kullanır ve 401 ile 404 gibi Accept değerini izler.

Doğrulama (422)

details her sorunu listeler. field, . ile birleştirilmiş yoldur ("image_style_references.0.url"). Nesne düzeyindeki hatalar, yukarıdaki bilinmeyen anahtarda olduğu gibi boş bir dize kullanır. Birden fazla bilinmeyen anahtar Unrecognized keys: ... ve aynı boş field değerini üretir. expected yalnızca code değeri "invalid_type" olduğunda eklenir. Geçersiz bir X-Webhook-URL başlığı da aynı 422’yi kullanır. Geçersiz sorgu parametreleriyle yapılan GET /jobs isteği de bu 422’yi döndürür. Bu bir 400 değildir. Araç içinde başarısız olan bir Zero Data Retention girdi kontrolü, açıklamayı message içinde taşıyan bir 422 döndürür ({ "message" } yapısı; bu yüzden Accept önemlidir). Bkz. Zero Data Retention.

Kaldırılmış ve Kullanımdan Kaldırılmış Alanlar (422)

Kaldırılmış batchSize / batch_size alanı farklı bir 422 kullanır. details dizisi yoktur:
batch_size da aynı şekilde kaldırılmıştır. field, gönderdiğiniz addır. Kullanımdan kaldırılmış bir alan takma adı, reason olarak "deprecated_field" veya "conflicting_fields" değerini ve uygun olduğunda replacement, sunset_date ve migration_url alanlarını kullanır. error ve reason değerlerine göre dallanın. Bir kişiye gösterilecek cümle message alanıdır.

Sunset Modeller (410)

Sunset tarihini geçmiş bir model, Deprecation: true ve bir Sunset başlığıyla (RFC 1123 tarihi) 410 döndürür:
error, sabit "model_unavailable" değeridir. Önerilen bir yedek model olmadığında replacement ve migration_url dahil edilmez. Aynı modeli yeniden denemek 410 döndürmeye devam eder. Ayarlandığında replacement modeline geçin ve Kullanımdan Kaldırmalar sayfasına bakın. Kullanımdan kaldırılmış ancak hâlâ çalışan bir model, hatalar dahil her yanıtta Deprecation ve Sunset gönderir. Kullanımdan kaldırılmış bir alan takma adı kullanmak da, kendi 422’si dahil, aynı sonucu verir. Bir geçiş kılavuzu mevcut olduğunda Link: <migration_url>; rel="deprecation" başlığı da gönderilir.

Durum Kodları

400

Generate üzerindeki geçersiz JSON, Accept başlığı gerektirmeden her zaman JSON’dur:
Node uygulaması execute, kullanamadığı bir girdi URL’si için { "error" } kullanır: Invalid URL for input "<key>" veya Failed to download URL for <key>: …. İndirme mesajı geçici hataları da kapsar; bu nedenle generate’in aksine (bkz. Girdi İndirmeleri) bir node uygulaması indirme hatası her zaman 400’dür. URL geçerliyse bir kez yeniden deneyin. POST /node-apps/{id}/execute üzerindeki geçersiz JSON, yukarıdaki generate 400’ü değildir. İstisna metni olmadan 500 { "message": "Internal Error" } olur ve Accept değerini izler. Asset’ler ve node uygulamalarındaki diğer 400 yanıtları, kısa bir açıklamayla { "message": "..." } biçimindedir; örneğin presigned yüklemede No file provided veya node uygulaması sürümlerinde Invalid pagination parameters. Başarısız bir asset yüklemesi, yükleme hizmetinin durum kodunu (400, 401, 404 veya 500) aynen iletir ve hizmetin yanıt metnini message içine koyabilir. Bu metin bazen bir JSON dizesidir. GET /jobs üzerindeki geçersiz sorgu parametreleri 400 değil, 422 döndürür.

401

Generate, jobs, assets, styles ve node apps:
Presigned yüklemeler { "message": "Presigned upload URL expired" } veya { "message": "Invalid presigned upload URL" } döndürür.

402 Ödeme Gerekli

API bakiyesi işi karşılamayan, API üzerinden faturalandırılan bir istemci için (bir API anahtarı veya API anahtarı kullanan MCP):
krea.ai/app/api/ ↗ adresinden bakiye yükleyin. Devam eden işler tamamlanır. Bkz. API Anahtarları ve Faturalandırma. Herkese açık API’deki diğer 402 message değerleri: Zero Data Retention’ın etkin olmadığı bir çalışma alanında Zero Data Retention ile yapılan bir generate çağrısı, her zaman JSON olan şu gövdeyi döndürür:
Agent İşlem API’si kendi 402 gövdelerini kullanır. Bunlar API bakiyesinden değil, çalışma alanı işlem bakiyesinden düşer.

403

404

Her 404, { "message" } biçimindedir; örneğin bilinmeyen bir iş id’si için:
Eksik bir Accept başlığı bunları HTML yapar; anahtarınızın veya planınızın kullanamadığı bir model için dönen Endpoint not found ise istisnadır ve her zaman JSON’dur. Bilinmeyen bir id için Accept olmadan yapılan kimliği doğrulanmış bir GET /jobs/{id} isteği 404 text/html döndürür. Bilinmeyen bir Agent işlemi de Agent { "error", "code" } yapısını değil, 404 { "message": "Endpoint not found" } döndürür.

405

Gövde, Accept değeri application/json olduğunda bile JSON değil, Content-Type başlığı olmayan düz metindir. Metin, yöntem adı ve ardından method not allowed ifadesinden oluşur; örneğin GET method not allowed. Bir Allow başlığı, yolun kabul ettiği yöntemleri listeler.

413 Yük Çok Büyük

Çok büyük bir istek gövdesi 413 ile reddedilir. API’nin kendisinden geldiğinde gövde Accept değerini izler:
Çok büyük bir gövde, API’ye ulaşmadan önce bir HTML 413 sayfasıyla reddedilebilir. Dosyaları satır içi göndermeyin. Dosyayı POST /assets ile yükleyin ve dönen URL’yi generate isteğinde iletin.

Girdi İndirmeleri

404 veya 410 döndüren bir sunucu, kalıcı bir 422 ile sonuçlanır. Gövde JSON’dur ve Accept önemlidir:
Sunucudan gelen bir 410, aynı cümleyi 410 ile kullanır. Diğer kalıcı retler Input file rejected: … kullanır. Yeniden denenebilir bir indirme hatası 502 veya 504’tür. Gövdeye değil durum koduna göre dallanın ve yeniden deneyin. Aynı URL için tekrarlanmaya devam eden bir 502, büyük olasılıkla URL’nin engellendiği veya bozuk olduğu anlamına gelir. URL’yi değiştirin. 3D dışa aktarma dönüştürme hataları da 502’dir. Bu yol canlı olarak test edilmedi; bu nedenle gövde de Cloudflare düz metni error code: 502 olarak gelebilir. Durum koduna göre dallanın ve yeniden deneyin. Aynı model URL’si için tekrarlanmaya devam eden bir 502, büyük olasılıkla URL’nin engellendiği veya bozuk olduğu anlamına gelir.

429 Eşzamanlılık

İş backlog’a alınamadığında, eşzamanlılık sınırını aşan bir istek 429 ve Content-Type: application/json ile reddedilebilir:
limit, bu tür bir iş için eşzamanlılık sınırınızdır. Çalışma alanı başına değil, kullanıcı başına sayılır. Yaklaşıktır: kısa bir istek patlaması sınırın üzerinde kabul edilebilir, bu yüzden başarısız olanın limit + 1 numaralı istek olacağına güvenmeyin. jobType herkese açık model yolu değil, dahili bir iş kategorisidir. Buna göre dallanmayın. Krea 2, paylaşılan kuyruğu dolu olduğunda limit veya jobType olmadan yalnızca { "message": "CONCURRENCY_LIMIT_REACHED" } da döndürebilir. Bu sizin sınırınız değildir. Geri çekilin ve yeniden deneyin. Backlog yalnızca plan bunu içerdiğinde (Pro ve üzeri), model desteklediğinde ve istek Zero Data Retention olmadığında açıktır. Krea 2 istekleri şu anda hiçbir planda backlog’a alınmaz; bu nedenle sınırın üzerinde 429 döndürür. Backlog açık olduğunda ek iş status: "backlogged" ile kabul edilir ve bir yer boşaldığında başlar. Ayrı bir backlog sınırı yoktur. Bkz. Hız Sınırları. API, Retry-After veya X-RateLimit-* göndermez. Yanıt cf-ray içerir. 429 aldığınızda, devam eden işler tamamlandıktan sonra üstel geri çekilmeyle yeniden deneyin (GET /jobs/{id} ile sorgulayın veya bir webhook kullanın). Daha sonraki bir tamamlanma bakiyeyi tüketirse, hâlâ backlog’da bekleyen işler error.code "insufficient_balance" ile başarısız olur. Bu bir HTTP 402 değil, başarısız bir iştir. Bu işler webhook göndermez; bu yüzden backlog’daki işler için GET /jobs/{id} ile sorgulama yapın.

Agent İşlem API’si

POST /agent/{operation} ve GET /agent/session/{sessionId}, { "error", "code"?, "allowedModels"? } döndürür. Yalnızca error zorunludur. allowedModels camelCase’dir. Kabul edildikten sonra başarısız olan bir tur, bu HTTP hatalarından biri olarak değil, oturumda status: "failed" olarak görünür. Bkz. Agent. Tanınmayan bir Agent hata kodu yine { "error", "code" } ile 422 döndürür. Bilinmeyen işlem 404’ü ve işlenmemiş bir 500, { "message" } kullanır ve Accept değerini izler.

Başarısız İş error.code Değerleri

GET /jobs ve GET /jobs/{id}, error alanını yalnızca status değeri "failed" olduğunda ayarlar. Kullanılabilir bir result yoktur:
error.code değerine göre dallanın. message alanını asla ayrıştırmayın.message atlanabilir. provider_error ve internal mesajları serbest biçimlidir ve bir internal mesajı, failed to download media from the provided URL gibi ham sağlayıcı metni olabilir. Tanımadığınız her code değerini internal olarak ele alın.
Başarısız bir iş için webhook teslimatları, error dahil aynı iş nesnesini kullanır. İptal edilmiş bir teslimatta error bulunmaz. 256 KiB’den büyük bir yük gönderilmez ve o iş için başka teslimat yapılmaz; bu nedenle bunun yerine GET /jobs/{id} ile sorgulayın. Gövdeye güvenmeden önce imzayı doğrulayın. Bkz. Webhooks.

Hata Ayıklama

Krea’ya ait bir istek kimliği başlığı yoktur. Her yanıt Cloudflare’in cf-ray başlığını içerir. Retry-After veya X-RateLimit-* başlığı gönderilmez. support@krea.ai adresine yazdığınızda şunları ekleyin:
  • Çağrı bir iş oluşturduysa veya bir işi hedeflediyse job_id
  • Zaman ve uç nokta
  • İstek anındaki bir hata için cf-ray değeri
Access-Control-Allow-Origin değeri *’dır. Generate, jobs, assets, styles ve node apps uç noktalarında Access-Control-Expose-Headers ayarlı değildir; bu nedenle tarayıcı fetch işlevi cf-ray, Deprecation veya Sunset değerlerini okuyamaz. cf-ray değerini ağ günlüğünden veya sunucu tarafı bir istemciden kopyalayın. Herhangi bir yanıtta, model çağrı kabul etmeyi bırakmadan önce Deprecation ve Sunset başlıklarını kontrol edin. Bkz. Kullanımdan Kaldırmalar.

Sonraki Adımlar

İş Yaşam Döngüsü

İş tamamlanana, başarısız olana veya iptal edilene kadar durumu sorgulayın

Webhooks

Başarısız iş teslimatındaki imzayı doğrulayın

Hız Sınırları

Ek işlerin ne zaman backlog’a alındığı ve ne zaman 429 döndürdüğü

API Anahtarları ve Faturalandırma

402 sonrasında API bakiyesini yükleyin