REST + OpenAPI 3
JSON gövde, açık hata kodları (application/problem+json). OpenAPI dosyasını indirip istemci kodunu kendi dilinizde üretebilirsiniz.
Sipariş, ERP ya da depo sisteminiz Courino'ya doğrudan bağlansın: fiyatı alın, siparişi açın, teslim edilince imzalı webhook ile haber alın. Kurye firmanızın panelinde sipariş elle girilmiş gibi görünür.
Dokümanın İngilizcesi: API docs (English)
Portalda elle yaptığınız her sipariş işini API'den de yapabilirsiniz. Fiyat, kurye firmanızın size tanımladığı fiyat listesiyle aynı hesapla çıkar.
JSON gövde, açık hata kodları (application/problem+json). OpenAPI dosyasını indirip istemci kodunu kendi dilinizde üretebilirsiniz.
Dokümanda Authorize'a anahtarınızı yapıştırın, her ucu tarayıcıdan gerçek hesabınızla deneyin. Türkçe ve İngilizce.
Alındı, teslim edildi, iptal… her olay X-KOS-Signature (HMAC-SHA256) ile imzalı gelir. Ulaşamazsa yeniden denenir; X-KOS-Delivery denemelerde aynı kalır.
Sipariş açarken ve iptal ederken Idempotency-Key gönderin: ağ koptu diye aynı istek iki sipariş açmaz, ilk yanıt döner.
Tek istekte 1000 satıra kadar gönderi. Önce yalnız denetleyin (dryRun), sonra açın; aynı referans no ikinci kez sipariş olmaz.
Siparişin takip bağlantısını alın, alıcınıza kendi kanalınızdan iletin. Kurye yoldayken konumu siz de API'den okuyabilirsiniz.
Trendyol, Hepsiburada, Shopify, WooCommerce ve diğerleri için kod yazmanız gerekmez; portaldaki E-ticaret mağazam'dan bağlanır.
Her sistem için ayrı anahtar (en çok 5), son kullanım zamanı görünür. Anahtar şifre, kart ve hesap ayarlarına dokunamaz.
Örneklerdeki <semt-id> ve <gidiş-tipi-id> değerlerini GET /me/order-options yanıtından alırsınız. Tutarlar her yerde metin olarak ("185.00") döner; kuruş kaybı olmaz.
# Fiyat teklifi: kaydetmez, yalnız hesaplar curl https://client.courino.com/api/v1/pricing/quote \ -H "Authorization: Bearer $COURINO_KEY" \ -H "Content-Type: application/json" \ -d '{ "payer": "sender", "sender": {}, "recipient": { "districtId": "<semt-id>" }, "deliveryTypeId": "<gidiş-tipi-id>" }'
total: KDV dahil toplam, lines: kırılım (taban, ekstra, bekleme, KDV…).sender boş bırakılabilir.# Sipariş aç: ağ hatasında aynı Idempotency-Key ile tekrarlayın curl https://client.courino.com/api/v1/orders \ -H "Authorization: Bearer $COURINO_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: SIP-48213" \ -d '{ "payer": "sender", "sender": {}, "recipient": { "name": "Ayşe Demir", "phone": "0532 123 45 67", "address": "Moda Cd. No:12 D:3", "districtId": "<semt-id>" }, "deliveryTypeId": "<gidiş-tipi-id>", "reference": "SIP-48213" }'
201 ile siparişin id ve number bilgisi döner; sipariş kurye firmanızın operasyon ekranına düşer.409 IDEMPOTENCY_MISMATCH döner. Anahtar 24 saat saklanır.GET /me/orders/{id} ile okuyun ya da webhook ile dinleyin.import crypto from 'node:crypto' // Ham gövdeyle: app.post('/courino', express.raw({ type: '*/*' }), …) function verify(req, secret) { // secret: whsec_… (tamamı) const sig = req.get('X-KOS-Signature') // t=1761040000,v1=9f2c… const { t, v1 } = Object.fromEntries(sig.split(',').map((p) => p.split('='))) const mac = crypto.createHmac('sha256', secret) .update(`${t}.`).update(req.body).digest('hex') const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300 return fresh && mac.length === v1?.length && crypto.timingSafeEqual(Buffer.from(mac), Buffer.from(v1)) }
{ id, type, occurredAt, data: { order } }; type ör. order.delivered.X-KOS-Delivery değerini saklayıp ikinciyi atlayın.410 Gone dönerseniz o ileti için deneme durur.API, kurye firmanızın Courino müşteri portalındaki hesabınızla çalışır. Ayrı kayıt ya da sözleşme gerekmez.
GET /me/order-options ile semt ve gidiş tipi kimliklerini alın.POST /pricing/quote ile fiyatı görün.POST /orders ile siparişi açın.Adreslerin hepsi https://client.courino.com/api/v1 altındadır. Tam liste, alanlar ve örnekler dokümanda.
/me/order-optionsSemtler ve gidiş tipleri (adreste districtId zorunlu)/pricing/quoteFiyat teklifi (kaydetmez)/ordersSipariş açar · Idempotency-Key/me/orders/batchToplu sipariş, en çok 1000 satır/me/ordersSiparişlerim; referans no, barkod ve tarihle arama/me/orders/{id}Sipariş ayrıntısı ve durumu/me/orders/{id}Siparişi düzenler (henüz havuzdayken)/me/orders/{id}/cancelİptal · Idempotency-Key/me/orders/{id}/trackingCanlı kurye takibi/me/orders/{id}/tracking-linkAlıcıya iletilecek takip bağlantısıHer yanıtta X-RateLimit-Limit, -Remaining ve -Reset; sınır aşılırsa 429 ve Retry-After.
Hesap başına en çok 5 etkin API anahtarı ve 5 webhook aboneliği. Anahtar ve imza sırrı yalnız bir kez gösterilir.
Hesabın şifresi değişince o hesabın anahtarlarının hepsi iptal olur. İptal ettiğiniz anahtar en geç 30 saniyede çalışmaz.
Müşteri kartından hesabına entegrasyon izni verin; müşteriniz anahtarını portaldan kendisi alır. Siparişler panelinize normal sipariş olarak düşer, fiyat müşterinin fiyat listesinden çıkar. Sızdığından şüphelendiğiniz anahtarı müşteri kartından iptal edersiniz.
Firmanızı ücretsiz kaydedin →Portal hesabınıza entegrasyon izni verilmesini firmanızdan isteyin; sonra anahtarınızı oluşturup dokümandan ilerleyin. Takıldığınız yerde destek@courino.com'a yazın.
API dokümanına gidin →Swagger dokümanını açın ya da OpenAPI dosyasını indirip kendi aracınıza (Postman, Insomnia, kod üreticiler) yükleyin.