跳到主要内容
开发者文档API 参考装载

预估装载任务费用

执行与 POST /v1/pack 相同的校验并返回价格区间,不创建任务,也不预留积分。

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

免费。无效请求同样返回 200,其中 valid: false,所有问题列在 errors[] 中。

认证

Bearer API 密钥 · 所需权限范围pack:write了解更多

请求体参数

application/json
名称类型必填说明
referencestring
string
否

您自己的参考编号(订单号、货运单号…)。会原样返回在任务中。

≤ 128 chars
vehiclesVehicle[]必填
Vehicle[]
是

车辆定义。每项的 quantity 可大于 1。至少一项。

itemsItem[]必填
Item[]
是

物品定义。每项的 quantity 可大于 1。至少一项。

groupsGroup[]
Group[]
否

可选的分组(客户、站点、订单)。当 options.group_routing 不为 "none" 时,物品引用的每个分组都必须在此列出;否则会按物品中分组名称的出现顺序自动创建分组。

optionsOptions
Options
否

装载选项。所有字段均为可选。

请求示例

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

响应示例

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

响应

  • 200OK校验结果和价格区间。
    名称类型必填说明
    validboolean
    boolean
    否

    请求有效,可直接提交给 POST /v1/pack.

    errorsErrorDetail[]
    ErrorDetail[]
    否

    校验错误(请求有效时为空)。

    warningsWarning[]
    Warning[]
    否

    非阻断性提示。

    itemsinteger
    integer
    否

    物品总件数。

    max_vehiclesinteger
    integer
    否

    该任务最多可装载的车辆数。

    estimated_costCostRange
    CostRange
    否

    以积分计的价格区间。

    estimated_secondsnumber · s
    number · s
    否

    该任务将获得的计算时间预算(为上限值,大多数任务会更早完成)。

    balanceEstimateBalance
    EstimateBalance
    否

    您的可用积分。

  • 400Bad requestinvalid_json
    • invalid_json请求体不是有效的 JSON,或某个字段类型错误。
    名称类型必填说明
    errorErrorBody必填
    ErrorBody
    是
    全部错误码
  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedAPI 密钥缺失、格式错误或无法识别。
    • key_revoked密钥已被撤销。
    • key_expired密钥已过期。
    名称类型必填说明
    errorErrorBody必填
    ErrorBody
    是
    全部错误码
  • 403Forbiddenip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • ip_not_allowed调用方 IP 不在该密钥的 IP 白名单中。
    • subscription_inactive组织没有包含 API 的有效订阅。
    • account_inactive组织已被暂停使用,或其所有者的账户均未处于有效状态。
    • scope_missing密钥缺少此接口所需的权限范围。
    名称类型必填说明
    errorErrorBody必填
    ErrorBody
    是
    全部错误码
  • 413Payload too largepayload_too_large
    • payload_too_large请求体超过 10 MB。
    名称类型必填说明
    errorErrorBody必填
    ErrorBody
    是
    全部错误码
  • 429Too many requestsrate_limited
    • rate_limited当前分钟、小时或天内的请求过多(按密钥或按组织计),或您的 IP 地址每分钟认证失败超过 60 次。
    名称类型必填说明
    errorErrorBody必填
    ErrorBody
    是
    全部错误码
  • 500Internal server errorinternal_error
    • internal_error服务端发生内部错误。
    名称类型必填说明
    errorErrorBody必填
    ErrorBody
    是
    全部错误码
  • 503Service unavailableapi_disabled
    • api_disabledAPI 暂时停用(维护中),或已对该组织关闭。
    名称类型必填说明
    errorErrorBody必填
    ErrorBody
    是
    全部错误码