Bỏ qua đến nội dung
CargoDuo logoCargoDuo
Bảng giá
Tài liệu cho nhà phát triểnTham chiếu APIXếp hàng

Ước tính chi phí tác vụ xếp hàng

Chạy cùng bước kiểm tra như POST /v1/pack và trả về khoảng giá, không tạo tác vụ và không tạm giữ credit.

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

Miễn phí. Yêu cầu không hợp lệ vẫn nhận về 200, kèm valid: false và mọi lỗi trong errors[].

Xác thực

Khóa API dạng Bearer, phạm vi quyềnpack:writeTìm hiểu thêm

Tham số body

application/json
TênKiểuBắt buộcMô tả
referencestring
string
Không

Mã tham chiếu riêng của bạn (số đơn hàng, mã lô hàng…). Được trả lại trên tác vụ.

≤ 128 chars
vehiclesVehicle[]bắt buộc
Vehicle[]
Có

Định nghĩa xe. Mỗi định nghĩa có thể có quantity > 1. Ít nhất một.

itemsItem[]bắt buộc
Item[]
Có

Định nghĩa kiện hàng. Mỗi định nghĩa có thể có quantity > 1. Ít nhất một.

groupsGroup[]
Group[]
Không

Nhóm (không bắt buộc): khách hàng, điểm dừng, đơn hàng. Phải khai báo mọi nhóm mà kiện hàng tham chiếu khi options.group_routing khác "none"; nếu không, nhóm được tạo từ tên nhóm của các kiện hàng theo thứ tự xuất hiện.

optionsOptions
Options
Không

Tùy chọn xếp hàng. Mọi trường đều không bắt buộc.

Yêu cầu mẫu

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"
    }
  }'

Phản hồi mẫu

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
  }
}

Phản hồi

  • 200OKKết quả kiểm tra và khoảng giá.
    TênKiểuBắt buộcMô tả
    validboolean
    boolean
    Không

    Yêu cầu này sẽ được chấp nhận bởi POST /v1/pack.

    errorsErrorDetail[]
    ErrorDetail[]
    Không

    Lỗi kiểm tra hợp lệ (rỗng khi yêu cầu hợp lệ).

    warningsWarning[]
    Warning[]
    Không

    Ghi chú không chặn tác vụ.

    itemsinteger
    integer
    Không

    Tổng số kiện.

    max_vehiclesinteger
    integer
    Không

    Số xe tối đa tác vụ có thể xếp.

    estimated_costCostRange
    CostRange
    Không

    Khoảng giá tính bằng credit.

    estimated_secondsnumber · s
    number · s
    Không

    Thời gian tính toán tối đa tác vụ sẽ được cấp (giới hạn trên; phần lớn tác vụ xong sớm hơn).

    balanceEstimateBalance
    EstimateBalance
    Không

    Credit khả dụng của bạn.

  • 400Bad requestinvalid_json
    • invalid_jsonNội dung không phải JSON hợp lệ hoặc có trường sai kiểu.
    TênKiểuBắt buộcMô tả
    errorErrorBodybắt buộc
    ErrorBody
    Có
    Tất cả mã lỗi
  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedThiếu khóa API, khóa sai định dạng hoặc không xác định.
    • key_revokedKhóa đã bị thu hồi.
    • key_expiredKhóa đã quá ngày hết hạn.
    TênKiểuBắt buộcMô tả
    errorErrorBodybắt buộc
    ErrorBody
    Có
    Tất cả mã lỗi
  • 403Forbiddenip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • ip_not_allowedIP gọi đến không nằm trong danh sách IP được phép của khóa.
    • subscription_inactiveTổ chức không có gói đăng ký đang hoạt động nào bao gồm API.
    • account_inactiveTổ chức bị tạm ngưng, hoặc không có chủ sở hữu nào có tài khoản đang hoạt động.
    • scope_missingKhóa thiếu phạm vi quyền mà endpoint này yêu cầu.
    TênKiểuBắt buộcMô tả
    errorErrorBodybắt buộc
    ErrorBody
    Có
    Tất cả mã lỗi
  • 413Payload too largepayload_too_large
    • payload_too_largeNội dung yêu cầu vượt quá 10 MB.
    TênKiểuBắt buộcMô tả
    errorErrorBodybắt buộc
    ErrorBody
    Có
    Tất cả mã lỗi
  • 429Too many requestsrate_limited
    • rate_limitedQuá nhiều yêu cầu trong phút, giờ hoặc ngày hiện tại (theo khóa hoặc theo tổ chức), hoặc có hơn 60 lần xác thực thất bại mỗi phút từ địa chỉ IP của bạn.
    TênKiểuBắt buộcMô tả
    errorErrorBodybắt buộc
    ErrorBody
    Có
    Tất cả mã lỗi
  • 500Internal server errorinternal_error
    • internal_errorĐã xảy ra lỗi ở phía chúng tôi.
    TênKiểuBắt buộcMô tả
    errorErrorBodybắt buộc
    ErrorBody
    Có
    Tất cả mã lỗi
  • 503Service unavailableapi_disabled
    • api_disabledAPI tạm thời bị tắt (bảo trì) hoặc đã bị tắt cho tổ chức.
    TênKiểuBắt buộcMô tả
    errorErrorBodybắt buộc
    ErrorBody
    Có
    Tất cả mã lỗi