İçeriğe geç
siparis.app geliştiriciAnahtarları yönet ↗

Kargo

Kargo fiyatı sor

POST/v1/orders/{id}/shipments/quote

Gönderi açmadan önce açık kargo firmalarının fiyatını ve gönderim engellerini görün.

Gereken izin

Bearer anahtarı ve shipments:write

Maliyet

10 puan (bağlantı başına 60 saniyede 600 puan)

Tekrar anahtarı

Gerekmez; istek hiçbir şeyi değiştirmez.

İstek

Temel adres: https://api.siparis.app/v1

Yol parametreleri

AlanTürZorunluAçıklamaÖrnek
idmetinEvetOkunacak kaynağın ord_ önekli dış kimliği."ord_1234567890abcdef1234567890abcdef"

Gövde (application/json)

AlanTürZorunluAçıklamaÖrnek
merge_ordersliste: metin (en çok 99 öğe)HayırAynı marka, alıcı, adres ve depodaki diğer ord_ siparişleri; birleştirme açık seçimdir.
packagenesne · null olabilirHayırYalnız bu sorgu için ölçüler; sorgu siparişi değiştirmez. Açarken aynı ölçüleri gönderin.
boxesliste: nesne (en çok 99 öğe)EvetGerçek ölçülmüş koliler; toplam en çok 99 koli.
depthsayı (en çok 1000)EvetBir kolinin boyu, cm.20
heightsayı (en çok 1000)EvetBir kolinin yüksekliği, cm.20
weightsayı (en çok 10000)EvetBir kolinin ağırlığı, kg.1
widthsayı (en çok 1000)EvetBir kolinin eni, cm.20
counttam sayı (en az 1; en çok 99)HayırAynı ölçüdeki koli sayısı.1
versionmetin (en çok 32 karakter) · null olabilirHayırFiyat yanıtındaki package_version; verilirse değişen koli bilgisi reddedilir."0123456789abcdef"

Örnek istek

curl --fail-with-body --silent --show-error --request POST \
  "${SIPARIS_API_URL:-https://api.siparis.app/v1}/orders/ord_1234567890abcdef1234567890abcdef/shipments/quote" \
  -H "Authorization: Bearer $SIPARIS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{}
JSON
import json
import os
from urllib.request import Request, build_opener, HTTPRedirectHandler
from urllib.error import HTTPError

# İmzalı indirme hedefine Bearer taşımamak için yönlendirme kendiliğinden izlenmez.
class NoRedirect(HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

base = os.environ.get("SIPARIS_API_URL", "https://api.siparis.app/v1")
headers = {
    "Authorization": "Bearer " + os.environ["SIPARIS_API_KEY"],
    "Content-Type": "application/json",
}
request = Request(base + "/orders/ord_1234567890abcdef1234567890abcdef/shipments/quote", headers=headers, method="POST",
    data="{}".encode("utf-8"))
try:
    with build_opener(NoRedirect).open(request, timeout=30) as response:
        print(response.read().decode("utf-8"))
except HTTPError as error:
    print(error.code, error.read().decode("utf-8"))
    raise
// Node.js 22+; anahtar yalnız sunucunun ortam değişkenindedir.
const base = process.env.SIPARIS_API_URL ?? "https://api.siparis.app/v1";
if (!process.env.SIPARIS_API_KEY) throw new Error("SIPARIS_API_KEY gerekli");
const response = await fetch(base + "/orders/ord_1234567890abcdef1234567890abcdef/shipments/quote", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.SIPARIS_API_KEY}`,
    "Content-Type": "application/json",
  },
  redirect: "manual", // 307 hedefini Bearer olmadan ayrı istekte okuyun.
  signal: AbortSignal.timeout(30_000),
  body: JSON.stringify({}),
});
const text = await response.text();
if (!response.ok) throw new Error(`${response.status}: ${text}`);
console.log(text);

Kimlik içeren yollarda örnek kimliği kendi liste yanıtınızdan alın. SIPARIS_API_KEY sunucu ortamında tanımlı olmalı; yerelde SIPARIS_API_URL ile /v1 içeren adresi değiştirin. Üretimde tekrar kurallarını uygulayın.

Yanıt

200 İstek başarıyla tamamlandı.

İçerik türü: application/json

{
  "boxes": [
    {
      "depth": 20,
      "height": 20,
      "weight": 1,
      "width": 20
    }
  ],
  "carriers": [
    {
      "available": true,
      "cod_fee": "29.90",
      "code": "YURTICI",
      "detail": null,
      "fee": "124.80",
      "name": "Yurtiçi Kargo",
      "note": null,
      "problem_code": null
    }
  ],
  "cod_amount": "120.00",
  "cod_type": "cash",
  "default_carrier": "YURTICI",
  "order": "ord_1234567890abcdef1234567890abcdef",
  "package_version": "0123456789abcdef",
  "package_warning": null,
  "payment_warning": null
}
Yanıt alanları (23)
AlanTürZorunluAçıklamaÖrnek
boxesliste: nesneEvetHesapta kullanılan koliler; ağırlık kg, ölçüler cm.
depthsayı (en çok 1000)EvetBir kolinin boyu, cm.20
heightsayı (en çok 1000)EvetBir kolinin yüksekliği, cm.20
weightsayı (en çok 10000)EvetBir kolinin ağırlığı, kg.1
widthsayı (en çok 1000)EvetBir kolinin eni, cm.20
counttam sayı (en az 1; en çok 99)HayırAynı ölçüdeki koli sayısı.1
carriersliste: nesneEvetPanelin açık firma seçenekleri ve ücretleri.
availabletrue/falseEvetÜcret, adres ve bakiye yönünden gönderim uygunsa true; açılışta yeniden denetlenir.true
cod_feemetin · null olabilirEvetÜcrete dahil kapıda tahsilat bedeli, TRY; bilinmiyorsa null."29.90"
codemetinEvetGönderi açarken carrier alanına gönderilecek firma kodu."YURTICI"
detailmetin · null olabilirEvetEngelin Türkçe açıklaması; yoksa null.null
feemetin · null olabilirEvetBu fiziksel gönderinin TRY ücreti; bilinen kapıda tahsilat bedeli dahil. null ise açılamaz."124.80"
namemetinEvetKargo firmasının adı."Yurtiçi Kargo"
notemetin · null olabilirEvetVarsa kapıda ödeme bedeli uyarısı.null
problem_codemetin · null olabilirEvetGönderim engelinin kararlı kodu; yoksa null.null
cod_amountmetin · null olabilirEvetKurye tarafından tahsil edilecek TRY tutarı; kapora düşülür, ortak gönderide üyelerin kalanları toplanır."120.00"
cod_typemetin (seçenekler: cash, card) · null olabilirEvetKapıda nakit veya kart; kapıda ödeme yoksa null."cash"
default_carriermetin · null olabilirEvetPanelin varsayılan firma kodu."YURTICI"
ordermetinEvetFiyat sorulan ord_ siparişi."ord_1234567890abcdef1234567890abcdef"
package_versionmetinEvetKalıcı koli düzeltmesinde kullanılabilecek görülen sürüm."0123456789abcdef"
package_warningmetin · null olabilirEvetÖlçüsü eksik ürünler için panelin uyarısı.null
payment_warningmetin · null olabilirEvetKapıda ödeme dışındaki kalan ödeme uyarısı.null
currencysabit "TRY"HayırÜcretlerin para birimi."TRY"

Hatalar

HTTPcodeAnlamıNasıl düzelir?
403forbiddenMevcut ticari kural bu işlemi yapmanıza izin vermiyor.Gerekli kapsamları ve siparişin durumunu kontrol edin.
409shipment_not_allowedGönderinin veya siparişin durumu bu işleme uygun değil.Güncel gönderiyi ve siparişi okuyun; bekleyen işlemin sonuçlanmasını izleyin.
400shipping_balance_insufficientKargo bakiyesi yetersiz.BasitKargo bakiyesini yükleyin; yeni tekrar anahtarıyla deneyin.
400shipping_address_invalidAlıcı adresi eksik veya geçersiz.Siparişin il, ilçe, mahalle ve açık adresini düzeltin; yeni tekrar anahtarı kullanın.
400shipping_carrier_disabledKargo firması kapalı veya seçilemez.Fiyat yanıtındaki açık firma kodunu seçin.
400shipping_cod_unavailableKapıda ödeme bu hesapta veya firmada kullanılamıyor.BasitKargo kapıda ödeme ayarlarını ve siparişin ödeme yöntemini kontrol edin.
400shipping_quote_unavailableBu paket ve ödeme yöntemi için ücret bulunamadı.Koli ölçülerini ve firma seçimini kontrol edin.
409shipping_not_connectedBasitKargo hesabı bağlı değil.İşletme ayarları > Kargo’dan hesabı bağlayın.
429shipping_rate_limitedKargo sağlayıcısının istek sınırına ulaşıldı.Retry-After saniye bekleyin; gönderi açılışında aynı anahtarı koruyun.
503shipping_unavailableKargo hizmetine şu an ulaşılamıyor.Retry-After saniye bekleyin; aynı anahtar/gövdeyle tekrar edin.
429quote_rate_limitedİşletmenin kargo fiyatı sorgulama sınırına ulaşıldı.Retry-After saniye bekleyin; 60 saniyede 20 sorgu bütün bağlantı ve markalarda ortaktır. Gönderi açma bu sayaçtan etkilenmez.

Ortak hatalar (anahtar, izin, istek biçimi, hız sınırı, tekrar anahtarı) her uçta aynıdır: Hata kodları › Ortak hatalar.