Başlangıç

Hatalar ve limitler

Başarısız her istek tutarlı bir JSON gövdesi ve anlamlı bir HTTP durum koduyla döner.

Hata biçimi

400 — örnek yanıt
{
  "error": {
    "code": "invalid_request",
    "message": "Ürün adı gerekli",
    "param": "name"
  }
}

Programatik karar için code alanını kullan; message insan okurdur ve değişebilir.

Hata kodları

HTTPKodAnlamı
400invalid_jsonGövde geçerli bir JSON değil.
400invalid_requestAlan eksik ya da hatalı. param hangi alan olduğunu söyler.
400invalid_carrierGeçersiz kargo firması kodu.
400variant_requiredÜrünün varyantları var; variantId gönderilmeli.
400variant_invalidSeçilen varyant bu ürüne ait değil ya da pasif.
400min_quantityAdet, ürünün minimum sipariş adedinin altında.
400coupon_invalidKupon kodu yok ya da pasif.
401invalid_api_keyAnahtar geçersiz, hatalı yazılmış veya iptal edilmiş.
403insufficient_scopeAnahtarda bu işlem için gereken yetki yok.
404store_not_foundMağaza bulunamadı (X-Odecik-Store değerini kontrol et).
404product_not_foundÜrün bulunamadı.
404product_unavailableÜrün satışta değil (taslak veya arşivlenmiş).
404order_not_foundSipariş bulunamadı.
404coupon_not_foundKupon bulunamadı.
404webhook_not_foundWebhook endpoint'i bulunamadı.
409coupon_existsBu kupon kodu zaten kullanımda.
409invalid_stateSipariş mevcut durumunda bu işleme uygun değil.
409payout_completedSiparişin ödemesi IBAN'a aktarılmış; iade için destek ekibine yaz.
409out_of_stockYeterli stok yok.
409out_of_keysLisans stoğu tükendi.
429rate_limitedHız sınırı aşıldı.
502payment_provider_errorÖdeme sağlayıcısına ulaşılamadı; biraz sonra tekrar dene.
500internal_errorBeklenmeyen hata. Tekrarlanırsa destekle iletişime geç.

Hız sınırı

Her anahtar dakikada 120 istek yapabilir. Her yanıtta kalan hakkını görürsün:

yanıt başlıkları
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117

Sınır aşıldığında 429 ve Retry-After (saniye) başlığı döner. Bu süre kadar bekleyip yeniden dene; üstel geri çekilme (exponential backoff) kullanman önerilir.

Sayfalama

Liste uç noktaları imleç (cursor) tabanlı sayfalama kullanır. limit en fazla 100'dür (varsayılan 25).

json
{
  "object": "list",
  "data": [ /* … */ ],
  "hasMore": true,
  "nextCursor": "cm9x2k1a30042"
}

hasMore true ise sonraki sayfayı ?cursor=cm9x2k1a30042 ile iste. Sonuçlar en yeniden en eskiye sıralıdır.