Süper GelsinPartner APIv1.0.0
API Referansı
TREN
Başlangıç
  • Hemen Başla
  • Test Ortamı (Sandbox)
  • Yetkilendirme
  • Servis Limitleri
  • Test hesabı başvurusu
Ortak uçlar
  • İşletme
  • Sipariş Yaşam Döngüsü
  • Sipariş Durumları
  • Mali Belge
  • Kurye Firması Entegrasyonu
  • Müşteri Talepleri
  • Değerlendirmeler
  • Webhook
Yemek
  • Menü ve Ürün Eşleme
Çarşı
  • Çarşı'ya genel bakış
  • Katalog
  • Toplama ve Dönüş
Referans
  • Sürümleme ve Hız Sınırı
  • Hata Kodları ve Sorun Giderme
  • Changelog
  • Sıkça Sorulan Sorular
  • API Referansı
Developer Portal/Reference

Error codes & troubleshooting

HTTP codes, the error dictionary, retry rules and common pitfalls.

Error body

Errors are returned as application/problem+json. Machines read error; message is for humans (in Turkish); branch on the code, not on the text. Every error body also carries requestId (the same value as the X-Request-Id header): include it in support requests. Endpoint-specific extra fields (field, reason, current, allowed, accepted, maxItems, maxLength) come at the start of the body.

JSON
{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "error": "too_many",
  "message": "Bir istekte en fazla 1000 kalem gönderilebilir.",
  "requestId": "6f1c2d3e-0000-4000-8000-000000000000",
  "maxItems": 1000
}

HTTP codes

AlanTipAçıklama
200processedOn bulk endpoints and on the dispute response, check the per-item results too; 200 does not mean "everything succeeded".
201createdReturned by POST /orders/test.
202acceptedÇarşı bulk writes. The outcome is not in this response; read it from GET /batches/{id}.
304not modifiedIf-None-Match matched on the menu; use your cached copy.
400bad requestYou get the same result until you fix it; do not retry.
401unauthorizedAuthentication failed or the key does not belong to this environment.
403headerThe X-Integrator header is required on every request.
404not foundThe record does not exist or does not belong to this business; or the endpoint does not exist for this business's vertical (not_available_for_vertical). The error field tells them apart.
405methodUnsupported method. This response is produced by the framework and carries no problem+json body.
409conflictInvalid state transition, or picking not closed. Read allowed and current from the response.
413too largeThe body exceeded the 1 MB limit; for PUT /webhook the limit is 16 KB.
422unprocessableidempotency_key_reuse: the same key was used with another operation or a different body.
429rate limitedWait for Retry-After seconds; reason names which limit applied.
5xxtransientRetry with exponential backoff. For a 500 internal, open a support request with the requestId.

Error dictionary

The tables below are read from the descriptions of the Hata, TopluIsSonucu and ToplamaSonucu schemas in the OpenAPI document; they are the same source. — means the message varies by situation or is empty.

Request errors

CodeStatusMessage (Turkish)Explanation (from the OpenAPI document)
invalid_json400Gövde geçerli JSON olmalı.Gövde ayrıştırılamadı.
invalid_body400Geçersiz istek.Gövde şemaya uymuyor; field hatalı alanı gösterir.
invalid_body400name 2–80 karakter olmalı.Kurye gövdesi; field: name.
invalid_body400phone 10–15 rakam olmalı (isteğe bağlı + ile).Kurye gövdesi; field: phone.
invalid_body400externalId en çok 64 karakter.Kurye gövdesi; field: externalId.
invalid_body400latitude -90..90 arası sayı olmalı.Kurye konumu; field: latitude.
invalid_body400longitude -180..180 arası sayı olmalı.Kurye konumu; field: longitude.
invalid_body400heading 0..359 arası sayı olmalı.Kurye konumu; field: heading.
invalid_body400recordedAt ISO 8601 olmalı.Kurye konumu; field: recordedAt.
invalid_query400{ad} {min} ile {max} arasında bir tam sayı olmalı.Sayı sorgu parametresi; field parametreyi gösterir.
invalid_query400{ad} ISO 8601 biçiminde bir zaman olmalı.Zaman sorgu parametresi.
invalid_query400status şu değerlerden biri olmalı: {liste}.GET /orders; allowed izin verilen durumları listeler.
payload_too_large413İstek çok büyük.Gövde tavanı 1 MB; PUT /webhook için 16 KB.
integrator_header_required403X-Integrator başlığı zorunludur: 1–30 karakter; Türkçe karakter içermeyen harf, rakam ve boşluk.Kimlik doğrulamasından önce reddedilir.
invalid_operator400X-Operator en çok 64 karakter olabilir ve yalnız harf, rakam ile . _ : - içerir; e-posta adresi gönderilmez.Kimlik doğrulamasından önce reddedilir.
unauthorized401Kimlik doğrulanamadı.Anahtar ya da parola geçersiz, anahtar kapalı ya da işletme bağı kopmuş.
environment_mismatch401—Anahtar bu ortama ait değil; ileti doğru ortamın adresini verir.
too_many_requests429İstek sınırı aşıldı. Retry-After başlığındaki süre dolunca yeniden deneyin.reason sınırın türünü söyler.
not_available_for_vertical404Bu uç yalnız Çarşı işletmelerinde var.Restoran anahtarıyla Çarşı ucuna istek.
not_available_for_vertical404Bu uç yalnız restoran işletmelerinde var.Çarşı anahtarıyla restoran ucuna istek.
not_found404Kayıt bulunamadı.Kayıt yok ya da bu işletmeye ait değil.
not_found404Toplu iş bulunamadı ya da saklama süresi doldu.GET /batches/{id}.
not_found404Sipariş bulunamadı.POST /orders/{id}/return.
not_found404Restoran bulunamadı.PUT /merchant/working-hours, restoran.
not_found404—PUT /merchant/working-hours, Çarşı; ileti boştur.
not_found404Restoran sahibi bulunamadı.POST /disputes/{id}/respond, restoran.
not_found404Dükkân sahibi bulunamadı.POST /disputes/{id}/respond, Çarşı.
internal500İşlem tamamlanamadı. Lütfen tekrar deneyin.requestId ile destek talebi açılır.
bad_request400invoiceNumber veya invoiceUrl gerekli.PUT /orders/{id}/invoice.
bad_request400invoiceUrl https:// ile başlamalı.PUT /orders/{id}/invoice.
bad_request400—GET /reviews; replyStatus none, pending, approved ya da rejected olmalı, ileti değerleri sıralar.
bad_request400Geçersiz gün: "{gün}". Kabul edilenler: mon, tue, wed, thu, fri, sat, sun.PUT /merchant/working-hours.
bad_request400"{gün}" için saatler "HH:MM" biçiminde olmalı (ör. 09:00).PUT /merchant/working-hours.
bad_request400"{gün}" için açılış ve kapanış aynı olamaz.PUT /merchant/working-hours.
invalid_status400Çarşı işletmesinde durum yalnız open ya da closed olabilir.PUT /merchant/status, Çarşı; accepted kabul edilen değerleri verir.
setup_incomplete400—Restoranın kurulumu tamamlanmadığı için açılamadı; ileti eksiği söyler.
invalid_action400action şu değerlerden biri olmalı: accept, ready, dispatch, deliver, cancel.accepted kabul edilen değerleri verir.
reason_required400cancel için reasonCode zorunludur; geçerli kodlar GET /cancel-reasons yanıtındadır.cancel eylemi.
invalid_reason400Geçersiz iptal sebebi kodu.accepted işletmenin seçebildiği kodları verir.
invalid_prep_minutes400prepMinutes 1 ile 180 arasında bir tam sayı olmalı.Restoranda accept; accepted { min, max } verir.
invalid_occurred_at400occurredAt ISO 8601 olmalı; gelecekte, sipariş açılışından ya da bir önceki aşamadan önce olamaz; en fazla 24 saat geriye gidebilir.reason nedenini verir.
forbidden403—Durum geçiş kapısı eylemi bu kimlik için reddetti.
invalid_transition409{eylem} eylemi {durum} durumundaki siparişte yapılamaz.current ve allowed alanları. Yarış durumunda ileti güncel durumu söyler.
picking_incomplete409Toplama kapanmadan sipariş yola çıkarılamaz. Önce POST /orders/{id}/picking ile toplamayı kapatın.Çarşı; toplama kapanışında kalem sonucu eksikse ileti eksik sayısını söyler.
order_closed409Sipariş '{durum}' durumunda; kurye yazılamaz.PUT /orders/{id}/courier; current durumu verir.
order_closed409Sipariş '{durum}' durumunda; konum yazılamaz.PUT /orders/{id}/courier/location; current durumu verir.
courier_not_set409Önce PUT …/courier ile kuryeyi bildirin.PUT /orders/{id}/courier/location.
dispute_closed409Talep için yanıt süresi doldu ya da talep zaten yanıtlandı.POST /disputes/{id}/respond.
refund_cap_exceeded409İade tutarı bu talep için izin verilen üst sınırı aşıyor.POST /disputes/{id}/respond.
conflict409—Talep başka bir işlemle aynı anda değişti; ileti durumu söyler.
too_long400Yanıt en fazla 1000 karakter olabilir.POST /reviews/{id}/reply; maxLength sınırı verir.
coupon_reward_wording400Yanıt, kuponu değerlendirmenin karşılığı gibi sunamaz. Kupondan söz edebilirsiniz; ancak kuponu yorumun içeriğine ya da puanına bağlamayın, değerlendirmenin değiştirilmesi veya silinmesi koşuluna bağlamayın ve değerlendirme karşılığında kupon vaat etmeyin.POST /reviews/{id}/reply.
not_published409Yalnız yayımlanmış yoruma yanıt verilebilir.current yorumun durumunu verir.
invalid_webhook_url400Webhook adresi kabul edilmedi: {neden}PUT /webhook.
webhook_not_configured409Önce PUT /webhook ile adres tanımlayın.POST /webhook/test.
no_menu_items409Restoranın aktif (satışa açık) menü ürünü yok — test siparişi gerçek menü kalemlerinden üretilir.POST /orders/test, restoran.
no_inventory409Dükkânda satışa açık ürün yok — önce katalog aktarın.POST /orders/test, Çarşı.
too_many_items400Tek istekte en fazla 100 kalem gönderilebilir (gönderilen: {n}).Menü yazım uçları.
empty400En az bir kalem gönderilmeli.Toplu yazma uçları; maxItems sınırı verir.
too_many400Bir istekte en fazla 1000 kalem gönderilebilir.Toplu yazma uçları; maxItems sınırı verir.
idempotency_key_reuse422Bu Idempotency-Key başka bir işlem ya da farklı bir gövdeyle kullanıldı.Toplu yazma uçları.
nothing_found409Hiçbir ürün bulunamadı. Toplama tamamlanamaz; siparişi 'Tedarik yok' sebebiyle iptal edin (müşteriye tam iade yapılır).POST /orders/{id}/picking, kapanışta.
exceeds_band409—Toplama sonucu sipariş tutarını aşıyor; ileti tutarları söyler.
invalid_lines400Dönüş satırları siparişle uyuşmuyor; her ürün için dönen adet ve dönmeyen adedin sebebi gerekli.POST /orders/{id}/return.
not_cancelled409Bu sipariş iptal edilmemiş.POST /orders/{id}/return.
not_failed_delivery409Bu sipariş teslim edilemedi olarak kapatılmamış.POST /orders/{id}/return.
already_confirmed409Bu siparişin dönüşü zaten onaylanmış.POST /orders/{id}/return.

Çarşı bulk job: item errors, pending items and warnings

The values of errors[].errorCode, pending[].pendingReason and warnings[].code; the field column says which array they come from. Branch on the code.

CodeArrayMessage (Turkish)Explanation (from the OpenAPI document)
invalid_nameerrorsname zorunlu ve boş olamaz.POST /products.
invalid_priceerrorsprice sıfırdan büyük bir SAYI olmalı (dizge kabul edilmez).Üst sınır ve yuvarlama kuralı fiyat kapısındandır; ileti sınırı söyler.
invalid_barcodeerrorsbarcode 8-14 rakam olmalı. Barkodsuz ürün için sku kullanın.POST /products.
invalid_barcodeerrorsbarcode 8-14 rakam olmalı.Fiyat-stok ve durum uçları.
invalid_stockerrorsstock negatif olmayan bir TAM SAYI olmalı.Ekleme ve fiyat-stok uçları.
missing_identityerrorsbarcode ya da sku zorunlu — kalıcı kimlik olmadan aynı ürün her gönderimde yeniden yaratılır.POST /products.
missing_identityerrorsbarcode, sku ya da clientReferenceId alanlarından en az biri zorunlu.Fiyat-stok ve durum uçları.
invalid_referenceerrorsclientReferenceId en çok 64 karakter olabilir ve yalnız harf, rakam, _ ve - içerir.POST /products.
invalid_categoryerrorscategoryId, GET /categories yanıtında leaf: true olan bir kategori olmalı.POST /products.
duplicate_referenceerrorsBu clientReferenceId dükkânda başka bir üründe kullanılıyor.POST /products.
ambiguous_identityerrorsbarcode, sku ve clientReferenceId farklı ürünleri gösteriyor; tek ürünü gösteren kimlik gönderin.Fiyat-stok ve durum uçları; gönderilen anahtarlar farklı ürünleri gösteriyor.
ambiguous_identityerrors{alan} dükkânda birden çok ürüne uyuyor; tek ürünü gösteren bir kimlik gönderin.Fiyat-stok ve durum uçları; tek anahtar birden çok ürüne uyuyor.
tax_rate_requirederrorstaxRate zorunludur; ürünün KDV oranını işletme belirler (izin verilen oranlar: 1, 10, 20).POST /products.
invalid_tax_rateerrorstaxRate şunlardan biri olmalı: 1, 10, 20.POST /products.
already_existserrorsÜrün bu dükkânda zaten kayıtlı; fiyat ve stok için PUT /products/price-and-stock kullanın.POST /products; bu uç oluşturur, güncellemez. Fiyat ve stok PUT /products/price-and-stock, satış durumu PUT /products/status ile değişir.
not_founderrorsBu dükkânda böyle bir ürün yok. Yeni ürün için POST /products kullanın.Fiyat-stok ve durum uçları.
empty_updateerrorsprice ya da stock alanlarından en az biri gönderilmeli.Fiyat-stok ucu.
invalid_statuserrorsonSale alanı true ya da false olmalı.Durum ucu.
invalid_reasonerrors—Durum ucu; onSale: false iken reason kapalı listeden olmalı. İleti geçerli sebepleri sıralar.
update_failederrors—Fiyat-stok ve durum uçları; kalem yazılamadı, ileti hatayı kısaltarak söyler.
ingest_failederrors—POST /products; kalem yazılamadı, ileti hatayı kısaltarak söyler.
rejectederrors—POST /products; kalem kabul edilmedi.
new_master_reviewpending—Yeni ürün kaydı incelemede.
missing_attributepending—Kategorinin zorunlu niteliği eksik; ürün kaydedildi ama satışa çıkmadı.
restricted_productpending—Ürün yasaklı ürün şüphesiyle incelemede.
image_ignoredwarningsGörsel adresi kabul edilmedi; ürün görseli işletme panelinden yüklenir.POST /products; kalem yazıldı.

Picking: item results

The values of results[].error in the POST /orders/{id}/picking response. The 409 codes returned on closing (picking_incomplete, nothing_found, exceeds_band) are in the request-errors table above.

CodeArrayMessage (Turkish)Explanation (from the OpenAPI document)
order_not_pickableresults—Sipariş toplanabilir durumda değil.
picking_closedresultsToplama tamamlandı; kalem değiştirilemez.Toplama kapandı.
not_foundresultsKalem bulunamadı.clientReferenceId siparişte yok.
invalid_weightresults—Gram tam sayı ve sıfırdan büyük olmalı.
weight_above_bandresults—Tartı kabul edilen aralığın üstünde.
weight_below_bandresults—Tartı kabul edilen aralığın altında.
not_weighableresultsBu kalem tartılı değil — kısmi ADET gir.Tartılı olmayan kalemde gram.
partial_not_shortresults—Kısmi tartı beklenenden az olmalı.
note_requiredresults—Kısmi tartıda not zorunlu.
invalid_quantityresults—Kısmi adet 1 ile sipariş adedi arasında olmalı.
substitution_not_allowedresults—Müşteri bu üründe ikame istemedi.
approval_requiredresults—Müşteri onayı gerekli; customerApproved ile işaretlenir.
substitute_requiredresultsİkame ürünü seçilmedi.substituted için substituteClientReferenceId.
substitute_not_foundresultsİkame ürün bu markette bulunamadı.İkame ürün dükkânda yok.
order_changedresults—Sipariş toplama sırasında değişti; yeniden okunur.
Restaurant menu item results (status)
AlanTipAçıklama
appliedstatusApplied and live.
pending_reviewstatusAccepted but under review; on an above-threshold price increase the live price does not change, and a suspicious product does not appear on sale until approved. Show it as "pending" on your side.
not_foundstatusNo such record for this business; refresh the menu.
invalidstatusThe value is invalid; message gives the reason. Do not resend without fixing it.

Retry rules

Apply the same classification we use for webhook delivery:

  • Retry: 5xx, 408, 429, network errors, timeouts, with exponential backoff and jitter.
  • Do not retry: other 4xx. The same request yields the same result.
The quota is 50 requests per 10 seconds per service group and key; your remaining budget arrives on every response that reaches authentication in RateLimit-Remaining. Details: Service limits.

Common pitfalls

  • Every request returns 403. The X-Integrator header must be 1–30 characters: letters, digits and spaces without Turkish characters (example: Ornek POS).
  • My webhook signature fails. The secret starts with whsec_; what follows must be base64-decoded and used as raw bytes. See Webhooks.
  • I cannot map an order line to my product. Map by identifier, never by name: items[].id on a restaurant, clientReferenceId on Çarşı. See Order lifecycle.
  • I updated a price and nothing changed. The item result may be pending_review: increases above a threshold go to review and the live price is kept.
  • I received the same order twice. Delivery is at-least-once. Deduplicate on webhook-id; there is no ordering guarantee, and order.status in the body is authoritative (exception: with deliveryFailed.completedSale: true, cancelled is not a cancellation but a sale paid online).
  • My Çarşı bulk job completed but the products are missing. Check the pending[] array: a product missing a required attribute is written but not put on sale. Resending does not help; supply the missing field.
PreviousVersioning & rate limitsNextChangelog
On this page
  • Error body
  • HTTP codes
  • Error dictionary
  • Retry rules
  • Common pitfalls