İçeriğe atla
Geliştirici dokümanlarıAPI referansıYükleme

Maliyet tahmini al

POST /v1/pack ile aynı doğrulamayı yapar ve fiyat aralığını döndürür; iş oluşturmaz, kredi rezerve etmez.

POSThttps://runner.cargoduo.com/v1/estimate

Ücretsiz. Geçersiz bir istek de 200 döner; yanıtta valid: false bulunur ve tüm sorunlar errors[] içinde listelenir.

Kimlik doğrulama

Bearer API anahtarı, gereken yetki:pack:writeDaha fazla bilgi

Gövde parametreleri

application/json
AdTürZorunluAçıklama
referencestring
string
Hayır

Kendi referansınız (sipariş numarası, sevkiyat ID'si…). İşin yanıtında aynen geri döner.

≤ 128 chars
vehiclesVehicle[]zorunlu
Vehicle[]
Evet

Araç tanımları. Her birinde quantity > 1 olabilir. En az bir tane gerekir.

itemsItem[]zorunlu
Item[]
Evet

Öğe tanımları. Her birinde quantity > 1 olabilir. En az bir tane gerekir.

groupsGroup[]
Group[]
Hayır

İsteğe bağlı gruplar (müşteriler, duraklar, siparişler). options.group_routing değeri "none" değilse, öğelerin adını verdiği her grup için zorunludur; aksi halde gruplar, öğelerdeki grup adlarından görülme sırasına göre oluşturulur.

optionsOptions
Options
Hayır

Yükleme seçenekleri. Tüm alanlar isteğe bağlıdır.

Örnek istek

curl -X POST "https://runner.cargoduo.com/v1/estimate" \
  -H "Authorization: Bearer $CARGODUO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reference": "order-1042",
    "vehicles": [
      {
        "id": "trailer",
        "type": "trailer",
        "name": "13.6 m trailer",
        "length": 1360,
        "width": 245,
        "height": 270,
        "max_weight": 24000
      }
    ],
    "items": [
      {
        "id": "pallet-eu",
        "label": "Euro pallet",
        "length": 120,
        "width": 80,
        "height": 140,
        "weight": 450,
        "quantity": 18,
        "stackable": false
      },
      {
        "id": "carton-a",
        "label": "Carton A",
        "length": 60,
        "width": 40,
        "height": 40,
        "weight": 12,
        "quantity": 40,
        "rotation": "upright"
      }
    ],
    "options": {
      "packing_mode": "auto"
    }
  }'

Örnek yanıt

200 OK · Estimate
{
  "valid": true,
  "errors": [],
  "warnings": [],
  "items": 58,
  "max_vehicles": 3,
  "estimated_cost": {
    "min_credits": 0.26,
    "max_credits": 1.11
  },
  "estimated_seconds": 90,
  "balance": {
    "available_credits": 147.75
  }
}

Yanıtlar

  • 200OKDoğrulama sonucu ve fiyat aralığı.
    AdTürZorunluAçıklama
    validboolean
    boolean
    Hayır

    İsteğin şu endpoint tarafından kabul edilip edilmeyeceği: POST /v1/pack.

    errorsErrorDetail[]
    ErrorDetail[]
    Hayır

    Doğrulama hataları (istek geçerliyse boş).

    warningsWarning[]
    Warning[]
    Hayır

    Engelleyici olmayan uyarılar.

    itemsinteger
    integer
    Hayır

    Toplam öğe adedi.

    max_vehiclesinteger
    integer
    Hayır

    İşin yükleyebileceği en fazla araç sayısı.

    estimated_costCostRange
    CostRange
    Hayır

    Kredi cinsinden fiyat aralığı.

    estimated_secondsnumber · s
    number · s
    Hayır

    İşe ayrılacak hesaplama süresi sınırı (bir üst sınırdır; çoğu iş daha erken biter).

    balanceEstimateBalance
    EstimateBalance
    Hayır

    Kullanılabilir kredileriniz.

  • 400Bad requestinvalid_json
    • invalid_jsonGövde geçerli bir JSON değil ya da bir alanın türü yanlış.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedAPI anahtarı eksik, hatalı biçimde ya da tanınmıyor.
    • key_revokedAnahtar iptal edildi.
    • key_expiredAnahtarın geçerlilik süresi doldu.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 403Forbiddenip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • ip_not_allowedİsteği gönderen IP, anahtarın izin listesinde değil.
    • subscription_inactiveOrganizasyonun API'yi içeren etkin bir aboneliği yok.
    • account_inactiveOrganizasyon askıya alınmış ya da hesabı etkin olan bir organizasyon sahibi yok.
    • scope_missingAnahtarda bu endpoint'in gerektirdiği bir yetki eksik.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 413Payload too largepayload_too_large
    • payload_too_largeİstek gövdesi 10 MB sınırını aşıyor.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 429Too many requestsrate_limited
    • rate_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ı.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 500Internal server errorinternal_error
    • internal_errorBizim tarafımızda bir hata oluştu.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları
  • 503Service unavailableapi_disabled
    • api_disabledAPI geçici olarak devre dışı (bakım) ya da organizasyon için kapatılmış.
    AdTürZorunluAçıklama
    errorErrorBodyzorunlu
    ErrorBody
    Evet
    Tüm hata kodları