İçeriğe atla

Hatalar

Tek hata formatı, değişmeyen kodlar, net tekrar deneme kuralları.

2xx dışındaki her yanıt aynı yapıdadır. Hata işleme mantığınızı message alanına göre değil, her zaman error.code alanına göre kurun.

JSON
{
  "error": {
    "code": "validation_failed",
    "message": "The request is invalid.",
    "request_id": "req_8fK2Lq9ZtX4mN7bV1cW3yH6p",
    "details": [
      {
        "path": "items[3].length",
        "code": "out_of_range",
        "message": "length must be greater than 0."
      }
    ]
  }
}
Alanİçerik
codeDeğişmez, snake_case
messageİngilizce, loglar için
request_idX-Request-Id header'ında da bulunur. Destek ekibine iletin
details[]400/422 yanıtlarında: her sorun için path, code, message

Kodlar

DurumKodAnlamıNe yapılmalıTekrar denenebilir
400invalid_jsonGövde geçerli bir JSON değil ya da bir alanın türü yanlış.İstek gövdesini düzeltin.Hayır
401unauthorizedAPI anahtarı eksik, hatalı biçimde ya da tanınmıyor.Authorization: Bearer cd_live_… gönderin; anahtarın eksiksiz kopyalandığını kontrol edin.Hayır
401key_revokedAnahtar iptal edildi.Geliştirici konsolunda yeni bir anahtar oluşturun.Hayır
401key_expiredAnahtarın geçerlilik süresi doldu.Geliştirici konsolunda yeni bir anahtar oluşturun.Hayır
402insufficient_creditsKullanılabilir krediler, bu işin olabilecek en düşük maliyetini bile karşılamıyor.Kredi paketi satın alın ya da aylık kredileri bekleyin; herhangi bir ücret alınmadı.Hayır
403ip_not_allowedİsteği gönderen IP, anahtarın izin listesinde değil.İsteği izin verilen bir IP'den gönderin ya da IP izin listesini düzenleyin.Hayır
403subscription_inactiveOrganizasyonun API'yi içeren etkin bir aboneliği yok.Aboneliği yenileyin.Hayır
403account_inactiveOrganizasyon askıya alınmış ya da hesabı etkin olan bir organizasyon sahibi yok.Destek ekibiyle iletişime geçin.Hayır
403scope_missingAnahtarda bu endpoint'in gerektirdiği bir yetki eksik.Gerekli yetkiye sahip bir anahtar kullanın (pack:write, jobs:read, account:read, resources:read, resources:write).Hayır
403preset_read_onlyHazır araçlar değiştirilemez ve silinemez.Kendi aracınızı oluşturun: POST /v1/vehicles.Hayır
403plan_limit_reachedOrganizasyonun paketi daha fazla proje ya da yük öğesine izin vermiyor.Artık ihtiyaç duymadığınız projeleri silin ya da daha büyük bir pakete geçin.Hayır
404not_foundBu metoda ve yola sahip bir /v1 endpoint'i yok.Metodu ve yolu endpoint listesiyle karşılaştırın.Hayır
404job_not_foundOrganizasyonunuzda bu ID'ye sahip bir iş yok.ID'yi kontrol edin.Hayır
404vehicle_not_foundHazır araçlar ve organizasyonunuzun araçları arasında bu ID'ye sahip bir araç yok.ID'yi şu listeyle karşılaştırın: GET /v1/vehicles.Hayır
404template_not_foundOrganizasyonunuzda bu ID'ye sahip bir şablon yok.ID'yi şu listeyle karşılaştırın: GET /v1/templates.Hayır
404project_not_foundOrganizasyonunuzda bu ID'ye sahip bir proje yok.ID'yi şu listeyle karşılaştırın: GET /v1/projects.Hayır
409job_not_finishedİş hâlâ sırada ya da çalışıyor.status değeri succeeded olana kadar GET /v1/jobs/{id} ile sorgulayın.Evet
409project_busyProje şu anda hesaplanıyor (uygulamada ya da başka bir iş tarafından).Bu hesaplamanın bitmesini bekleyin, sonra tekrar deneyin.Evet
409job_failedİş başarısız oldu; sonucu yok.job.error alanına bakın; bizden kaynaklanan hatalar ücretlendirilmez (time_limit_exceeded, iptal edilen bir iş gibi ücretlendirilir). Neden geçiciyse yeniden gönderin.Hayır
409job_canceledİş iptal edildi; sonucu yok.Gerekirse yeniden gönderin.Hayır
409job_already_finishedİş zaten bitti, iptal edilemez.Yapılacak bir şey yok.Hayır
400idempotency_key_invalidIdempotency-Key header'ı 128 karakterden uzun.Daha kısa bir anahtar kullanın (UUID uygundur).Hayır
410result_expiredSonucun saklama süresi doldu ve sonuç silindi.Plana yeniden ihtiyacınız varsa işi yeniden gönderin.Hayır
413payload_too_largeİstek gövdesi 10 MB sınırını aşıyor.Daha az ya da daha basit öğe gönderin.Hayır
422validation_failedİstek geçerli bir JSON ama geçersiz bir iş tanımlıyor. Tüm sorunlar details[] içinde listelenir.details[].path ile belirtilen her alanı düzeltin; doğrulama hataları ücretsizdir.Hayır
429rate_limitedGeçerli dakika, saat ya da gün içinde çok fazla istek gönderildi (anahtar ya da organizasyon başına) veya IP adresinizden gelen başarısız kimlik doğrulama denemeleri dakikada 60 sınırını aştı.Retry-After header'ında belirtilen saniye kadar bekleyin, ardından artan bekleme süreleriyle (backoff) tekrar deneyin.Evet
429too_many_jobsOrganizasyonun sıradaki + çalışan iş sayısı zaten üst sınırda.Çalışan işlerin bitmesini bekleyin, sonra tekrar deneyin.Evet
500internal_errorBizim tarafımızda bir hata oluştu.Artan bekleme süreleriyle (backoff) tekrar deneyin; sorun sürerse destek ekibine request_id değerini iletin.Evet
503api_disabledAPI geçici olarak devre dışı (bakım) ya da organizasyon için kapatılmış.Daha sonra tekrar deneyin.Evet

Doğrulama ayrıntıları

422 validation_failed yanıtındaki details[].code değerleri:

KodAnlamı
requiredZorunlu bir alan eksik
invalid_valueTür yanlış ya da değer izin verilenlerden biri değil
out_of_rangeÇok küçük, çok büyük ya da çok uzun
duplicate_idBir ID iki kez kullanılmış
unknown_vehicleBu vehicle_id ile bir hazır araç ya da size ait bir araç yok
unknown_templateBu template_id ile size ait bir şablon yok
type_not_allowedAraç türü organizasyonunuz için etkin değil
unknown_groupBir öğe, listede olmayan bir gruba başvuruyor
does_not_fitÖğe, listelenen hiçbir araca sığmıyor
too_many_itemsÖğe adedi işin limitini aşıyor
too_many_vehiclesAraç sayısı işin limitini aşıyor
unknown_fieldAPI'nin tanımadığı bir alan

İş hataları

failed ya da canceled durumundaki bir işin nedeni job.error.code alanında yer alır:

KodAnlamı
canceledİş şu çağrıyla iptal edildi: DELETE /v1/jobs/{id}. Ücret: iş ücreti + kullanılan hesaplama süresi.
time_limit_exceededHiçbir araç yüklenmeden hesaplama süresi sınırı doldu. İptal edilen bir iş gibi ücretlendirilir: iş ücreti, büyük yük ek ücreti ve kullanılan hesaplama süresi; araç başı ücret hiçbir zaman alınmaz.
engine_failedYükleme algoritması hata verdi. Ücret alınmaz.
queue_timeoutİş, hesaplama kapasitesi için çok uzun süre bekledi. Ücret alınmaz.
server_restartedİş sıradayken ya da çalışırken servis yeniden başlatıldı. Ücret alınmaz.

Tekrar denemeler

429, 500 ve 503 yanıtlarını Retry-After değerine uyarak üstel artan bekleme süreleriyle (exponential backoff) tekrar deneyin. Aynı Idempotency-Key değerini gönderin (Idempotency). Diğer 4xx yanıtlarında isteği değiştirmeden asla tekrar denemeyin.

İlgili