跳到主要内容

TMS 运单开放接口-下单

基本信息

  • 方法:POST
  • 路径:/label/create

用途

同步创建 TMS 运单、扣费、并向承运商下单,返回 TMS 运单号、主跟踪号、面单地址、跟踪号列表和费用明细。

公共请求头

所有 TMS 运单开放接口都需要传以下请求头:

Content-Type: application/json
Apikey: {{api_key}}
Apisign: {{api_sign}}
Timestamp: {{timestamp}}

请求参数

请求体顶层是 shipment.Shipment 结构,并通过同一个 body 解析出 accountIdserviceCodeapiUserCode

字段类型必填说明
apiUserCodestring客户编号;必须与鉴权用户一致
serviceCodestring服务代码,例如 UPARCEL_GROUND;为空会返回 serviceCode is required
accountIdint指定账号 ID;当前未消费,预留字段
orderUserReferenceCodestring外部参考号
shipFromobject发件地址
shipToobject收件地址
returnAddressobject退件地址
packagesarray包裹列表,至少 1 条
productsarray商品列表,国际件建议传
optionsobject附加选项
sellerOrderNumberstring卖家订单号;options.isUniqueSellerOrderNumber 为真时不允许重复提交
shipmentTrackingManifestTypeintManifest 类型;用户 ManifestShippingType=2 且未传时默认 2
userobject用户对象;当前未消费

地址对象字段

用于 shipFromshipToreturnAddress 等字段。

字段类型必填说明
codestring地址编码
namestring名称/公司名
attentionNamestring联系人姓名
countryCodestring国家代码,如 US
stateCodestring州/省代码,如 CANY
citystring城市
addressLine1string地址行 1
addressLine2string地址行 2
addressLine3string地址行 3
postalCodestring邮编
phonestring联系电话
phoneExtensionstring电话分机
emailstring邮箱
memostring备注
midstringMID 标识,部分国际件场景使用
isResidentialbool是否住宅地址,默认 false
verifyStatusint地址校验状态,一般由响应回填,请求可不传

说明:Gin 绑定仅校验地址对象本身非空;实际调用时 countryCodeaddressLine1postalCode 为业务必填。

包裹对象字段

用于 packages[] 数组元素,至少 1 条。

字段类型必填说明
idint包裹 ID,内部使用,开放接口可不传
lengthfloat长度,单位由 options.dimensionUnitCode 决定
widthfloat宽度
heightfloat高度
weightfloat重量,单位由 options.weightUnitCode 决定
quantityint数量,默认 1
declaredValuefloat单包裹申报价值
reference1string参考号 1
reference2string参考号 2
reference3string参考号 3
hazMatobject危险品信息
freightClassstring货运等级,LTL 等场景使用
quantityUnitPcsint件数单位

危险品对象字段

嵌套在 packages[].hazMat 中,仅危险品包裹需要传。

字段类型必填说明
Reference_numberstring参考号
shippingNamestring危险品正式运输名称
RegulationSetstring法规集,空运常用 IATA
TransportationModestring运输模式,常用 CAO
classDivisionNumberstring危险等级/分类号
quantitystring危险品数量
IDNumberstringUN/ID 编号
UOMstring计量单位
PackagingTypestring包装类型,如 FIBERBOARD BOX

商品对象字段

用于 products[] 数组元素,国际件建议传。

字段类型必填说明
idint商品 ID,内部使用,开放接口可不传
descriptionstring商品描述
quantityint数量
weightfloat重量
declaredValuefloat申报价值
declaredValueClassint申报价值等级
hsCodestringHS 编码
originCountrystring原产国代码

附加选项对象字段

用于 options 字段。

字段类型必填说明
deliveryConfirmationstring签收确认类型,如 signatureadultSignature
shipDatestring发货日期,格式 YYYY-MM-DD
packageTypestring包装类型,如 YOUR_PACKAGING
dimensionUnitCodestring尺寸单位,常用 INCM
weightUnitCodestring重量单位,常用 LBSKG
declaredValueCurrencyCodestring申报价值币种,如 USD
isUniqueSellerOrderNumberbool卖家订单号是否唯一,默认 false

用户对象字段

用于 user 字段,本接口当前未消费,仅做字段透传。

字段类型必填说明
userCodestring客户编号
userNamestring用户名
labelCustomPrintint面单自定义打印选项
USPSMailingDaysintUSPS 邮寄天数

请求示例

{
"apiUserCode": "CUST-001",
"serviceCode": "UPARCEL_GROUND",
"accountId": 0,
"orderUserReferenceCode": "REF-001",
"shipFrom": {
"name": "Sender Company",
"attentionName": "Tom",
"countryCode": "US",
"stateCode": "CA",
"city": "Los Angeles",
"addressLine1": "123 Main St",
"addressLine2": "",
"postalCode": "90001",
"phone": "1234567890",
"email": "demo@example.com",
"isResidential": false
},
"shipTo": {
"name": "Receiver Company",
"attentionName": "Jerry",
"countryCode": "US",
"stateCode": "NY",
"city": "New York",
"addressLine1": "456 Madison Ave",
"addressLine2": "",
"postalCode": "10001",
"phone": "1234567890",
"email": "demo@example.com",
"isResidential": false
},
"packages": [
{
"length": 10,
"width": 8,
"height": 6,
"weight": 5.5,
"quantity": 1,
"declaredValue": 120,
"reference1": "BOX-001"
}
],
"products": [
{
"description": "T-shirt",
"quantity": 1,
"weight": 1.2,
"declaredValue": 25,
"hsCode": "610910",
"originCountry": "US"
}
],
"options": {
"deliveryConfirmation": "signature",
"shipDate": "2026-06-26",
"packageType": "YOUR_PACKAGING",
"dimensionUnitCode": "IN",
"weightUnitCode": "LBS",
"declaredValueCurrencyCode": "USD",
"isUniqueSellerOrderNumber": false
},
"sellerOrderNumber": "SO-20260626-001"
}

成功响应示例

{
"code": 200,
"data": {
"masterTrackingNumber": "1Z999AA10123456784",
"shipmentOrderNumber": "S202606260001",
"carrierCode": "UPARCEL",
"serviceCode": "GROUND",
"totalCharge": 15.67,
"currencyCode": "USD",
"chargeItems": [
{ "code": "BASE", "value": 12.5, "currencyCode": "USD" },
{ "code": "FUEL", "value": 3.17, "currencyCode": "USD" }
],
"labelUrl": "https://api.example.com/file/label/shipment_xxx",
"labelFileType": "pdf",
"trackingNumbers": ["1Z999AA10123456784"],
"labels": [
{
"trackingCode": "1Z999AA10123456784",
"labelUrl": "https://api.example.com/file/label/shipment_xxx/1Z999AA10123456784",
"fileType": "pdf"
}
],
"sellerOrderNumber": "SO-20260626-001",
"createLabelTime": "2026-06-26 10:00:00"
},
"message": "success"
}

返回字段说明

字段类型说明
data.masterTrackingNumberstring主跟踪号
data.shipmentOrderNumberstringTMS 运单号
data.carrierCodestring承运商代码
data.serviceCodestring服务代码(来自选中报价)
data.totalChargefloat总费用
data.currencyCodestring币种
data.chargeItemsarray费用明细
data.labelUrlstring主面单地址,格式为 https://{host}/file/label/{shipmentId}
data.labelFileTypestring当前固定 pdf
data.trackingNumbersarray[string]全部跟踪号
data.labelsarray面单简表,元素结构见下方
data.sellerOrderNumberstring卖家订单号
data.createLabelTimestring下单时间,格式 YYYY-MM-DD HH:mm:ss

面单简表对象字段

用于 data.labels[] 数组元素。

字段类型说明
trackingCodestring该面单对应跟踪号
labelUrlstring面单下载地址
fileTypestring面单文件类型,如 pdf

费用明细对象字段

用于 data.chargeItems[] 数组元素。

字段类型说明
codestring费用项代码
valuefloat金额
currencyCodestring币种

接口说明

  • serviceCode 必须是用户可用渠道,否则返回 xxx渠道不存在xxx不支持该订单信息
  • 用户余额不足时返回 账号余额不足,请先充值
  • 下单成功后立即扣费
  • 面单地址格式固定为 https://{host}/file/label/{shipmentId}
  • accountId 当前未消费,仅做字段透传
  • options.isUniqueSellerOrderNumber 为真时,sellerOrderNumber 在同一用户下不允许重复提交

错误响应示例

{
"code": 400,
"data": null,
"message": "serviceCode is required"
}
codemessage场景
401请传入API授权信息缺少 Apikey
401请传入apiSign授权签名信息缺少 Apisign
400由 Gin 绑定错误文本决定参数绑定失败
400serviceCode is required未传 serviceCode
400xxx apiUserCode不匹配apiUserCode 与鉴权用户不一致
400xxx渠道不存在 / xxx渠道无效渠道不存在
400账号余额不足,请先充值用户余额不足
400xxx不支持该订单信息服务不支持该订单

响应码约定:

  • 成功时响应体 code = 200
  • 参数校验或业务失败时,通常返回 code = 400
  • 鉴权失败时,通常返回 code = 401
  • 这套开放接口的成功码不是后台私有接口常见的 0