开发者参考文档

跨境外贸工具开放 API

以 HTTP 对外提供 HS 海关编码、外汇汇率、港口、集装箱装载、国别认证、FBA 头程、进出口税率、价格计算、智能归类与货代黄页共 10 个业务域的能力。全部为只读查询或纯计算,采用 AppKey + HMAC-SHA256 签名鉴权。

本地服务 已联通 端到端 21/21 通过 Base URL /openapi/v1
01

概述

10 个业务域均为只读或纯计算接口,不含任何写入 / 运维类操作。外部客户端一律按已登录会员处理,返回完整数据。

基础地址

环境Base URL
开发 (context-path=/api)http://localhost:8882/api/openapi/v1
生产 (context-path=/cloud/api)https://<host>/cloud/api/openapi/v1

统一响应封装

无论成功或失败,服务端都返回统一 JSON 结构。判断是否成功以 meta.code == 200 为准,不要仅依赖 HTTP 状态码。

200 OK · application/json
{
  "meta": {
    "code": 200,
    "message": "操作成功!",
    "error": "",
    "success": true
  },
  "data": { ... }   // 业务数据;失败时为 null
}
!
实测提示:响应为 {meta:{code,message,success}, data} 的嵌套结构,状态码在 meta.code。接入时请从 meta.code 取业务码,data 取数据。
下方每个接口都附带 Python / Java 完整可运行示例,内含签名逻辑,可一键复制下载为独立文件直接运行(Python 需 requests,Java 需 JDK 11+)。
02

鉴权与签名

每次请求都必须携带以下 4 个请求头,缺一不可。服务端依次校验:请求头完整性 → AppKey 有效性 → 时间戳窗口 → Nonce 防重放 → 签名一致性 → 限流。

请求头必填说明
X-Api-Key平台分配的 appKey
X-TimestampUnix 毫秒时间戳字符串,与服务端时差 ≤ 300000ms(5 分钟),否则 40103
X-Nonce随机串(建议 UUID),同一 AppKey 下 300 秒内不可重复,否则 40104
X-SignHMAC-SHA256 签名,Base64 输出,大小写敏感

签名原文 stringToSign

由 6 段用换行符 \n 拼接,顺序固定:

stringToSign
METHOD            # 大写 GET / POST
PATH              # 从 /openapi/v1 开始,生产环境剥离 /cloud/api 前缀
CANONICAL_QUERY   # key 升序、key=value 用 & 连接、value 未编码
X-Timestamp       # 与请求头逐字节一致
X-Nonce           # 与请求头逐字节一致
BODY_SHA256_HEX   # 请求体 SHA-256 十六进制小写;无体取空串常量
i
空请求体(GET / 无体)的 SHA-256 为固定常量 e3b0c442…7852b855。最终 X-Sign = Base64(HMAC_SHA256(appSecret, stringToSign))

可复算的完整示例

以调用 HS 编码搜索为例,测试凭证 appKey test-appkey-0001 / appSecret test-secret-please-change

规范化查询串

query kw=laptop&cat=16 按 key 升序(cat < kw)→ cat=16&kw=laptop

请求体 SHA-256(GET 无体,取空串常量)

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

拼接 stringToSign(行间为单个 \n)

GET
/openapi/v1/hs/search
cat=16&kw=laptop
1754784000000
550e8400-e29b-41d4-a716-446655440000
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

HMAC-SHA256 + Base64 → X-Sign

l2dz9cJRuGrlfoAM/gETAia1kUH89ZNezP3YiuZWFTk= ✓ 已复算验证

curl · 组装请求
curl "http://localhost:8882/api/openapi/v1/hs/search?kw=laptop&cat=16" \
  -H "X-Api-Key: test-appkey-0001" \
  -H "X-Timestamp: 1754784000000" \
  -H "X-Nonce: 550e8400-e29b-41d4-a716-446655440000" \
  -H "X-Sign: l2dz9cJRuGrlfoAM/gETAia1kUH89ZNezP3YiuZWFTk="
03

错误码

所有错误码位于 meta.code,datanull。鉴权类错误码在下方均已端到端验证。

code含义处理建议
200成功正常解析 data
40101缺少鉴权请求头检查 4 个请求头是否齐全
40102无效的 AppKey检查 X-Api-Key 是否正确、已开通
40103时间戳过期或非法校正时钟,毫秒且差值 ≤ 5 分钟
40104重复请求(nonce 已用)每次生成新的随机 Nonce
40105AppKey 已停用联系管理员恢复 status=1
40106签名错误核对 stringToSign / 密钥 / 换行 / 排序
40107请求过于频繁降频或提升 qps_limit,可退避重试
40201余额不足,请先充值会员密钥按次计费,到「我的钱包」充值后重试
40001业务参数错误依 message 修正入参
50000服务器内部错误稍后重试,持续出现请联系平台
04

限流

AppKey 维度、每秒 QPS 计量。服务端以 openapi:rate:{appKey}:{epochSecond} 计数,每秒窗口内超过 qps_limit 即返回 40107。默认 10 QPS,测试客户端 20 QPS。

实测:对测试客户端 1 秒内突发 25 次请求,精确返回 20×200 + 5×40107,与 qps_limit=20 完全吻合。触发后建议指数退避重试。
i
计费:会员自助创建的密钥按次扣钱包余额(默认 ¥0.01/次),在验签与限流全部通过后扣费;海关智能归类接口(/openapi/v1/classify/suggest)按 DeepSeek token 消耗×2 计费(精确到 0.0001 元,响应体 cost 字段返回本次实扣金额);平台内置客户端免费。余额不足返回 40201,请到会员中心「我的钱包」充值。每次扣费可在「我的钱包 → 消费记录」查询。
05 · 业务域

HS 海关编码 /hs

22 大类目、按关键词/类目分页搜索、编码详情(含监管与检疫中文解释)、热门词与字典。

GET /hs/categories 22 大类目(含每类编码数)
请求参数
参数类型必填说明
无参数
响应字段 · data(数组)
字段类型说明
idint类目 ID(1–22),可作为 /hs/search 的 cat 入参
namestring类目中文名
enstring类目英文名
rangestring编码区段,如 "84-85"
romanstring罗马序号
sortint排序值
countint该类目下有效 HS 编码数量
GET /hs/search 按关键词 / 类目分页搜索
请求参数
参数类型必填说明
kwstring关键词,匹配中/英名、编码、别名
catint类目 ID
pageint页码,默认 1
limitint每页 1–200,默认 20
响应字段 · data
字段类型说明
totalint命中总数
pageint当前页码
limitint每页条数
resultsarray结果列表,元素字段如下
results[].codestringHS 编码(8 位带点)
results[].cnstring中文品名
results[].enstring英文品名
results[].catint一级类目 ID(1–22)
results[].rebatedecimal出口退税率 %
results[].vatdecimal增值税率 %
results[].dutydecimalMFN 关税 %
results[].dutyGendecimal普通关税率 %
results[].monstring监管条件代码(配合 /hs/dict/regulation 解读)
results[].ciqstring检验检疫类别代码(配合 /hs/dict/ciq 解读)
results[].unitstring法定计量单位
results[].declarestring申报要素
results[].ftaJsonstring协定/RCEP 税率 JSON:{"fta":{国:税率},"rcep":{国:税率}}
200 · data
{ "total":1, "page":1, "limit":20, "results":[{
  "code":"8471.3000", "cn":"便携式自动数据处理设备",
  "cat":16, "rebate":13.00, "vat":13.00, "unit":"台" }] }
GET /hs/detail/{code} 单编码完整详情 + 相似推荐
请求参数
参数类型必填说明
codestring(path)HS 编码,如 8471.3000;不存在返回 40001
响应字段 · data
字段类型说明
code / cn / enstringHS 编码 / 中文品名 / 英文品名
catint一级类目 ID
rebate / vatdecimal出口退税率 % / 增值税率 %
duty / dutyGendecimalMFN 关税 % / 普通关税 %
mon / ciqstring监管条件 / 检验检疫代码(原始值)
declarestring申报要素
unitstring法定计量单位
validFrom / validTodate税率生效起期 / 止期(yyyy-MM-dd)
monZharray监管条件中文解释列表,元素 {code, name, desc}
ciqZharray检验检疫中文解释列表,元素 {code, name, desc}
similararray同类目相似推荐(最多 5 条),字段同 /hs/search 的 results 元素
GET/hs/hot热门搜索词 Top 10
请求参数
参数类型必填说明
无参数
响应字段 · data(数组)
字段类型说明
kwstring热门搜索词
codestring关联 HS 编码(仅内置兜底词提供)
countint近 7 天搜索次数(兜底词为 0)
GET/hs/dict/regulation监管条件字典
请求参数
参数类型必填说明
无参数
响应字段 · data(数组)
字段类型说明
codestring监管条件代码,如 A / B / t
namestring条件名称
descstring条件说明
sortint排序值
GET/hs/dict/ciq检验检疫字典
请求参数
参数类型必填说明
无参数
响应字段 · data(数组)
字段类型说明
codestring检验检疫类别代码,如 M / R / P
namestring类别名称
descstring类别说明
sortint排序值
业务域

外汇汇率 /fx

52 币种实时牌价、任意币种互换、近 N 日中间价与币种字典。

GET/fx/currencies币种字典(可按 region 切片)
请求参数
参数类型必填说明
regionstring区域切片:major/europe/asia/america/other;缺省返回全部
响应字段 · data(数组,52 外币 + CNY)
字段类型说明
codestring币种 ISO 代码
cn / enstring中文名 / 英文名
flagstring旗帜 emoji
regionstring所属区域
decimalPlacesint小数位
unitint报价单位(如 100 日元)
isQuotedint是否有牌价:1=是 0=否
GET/fx/rates52 币种实时牌价
请求参数
参数类型必填说明
regionstring区域过滤,默认 all
kwstring关键字,匹配币种代码 / 中 / 英文名
响应字段 · data
字段类型说明
updateTimestring整页最新报价时刻(yyyy-MM-dd HH:mm:ss)
totalint条数
resultsarray牌价列表,元素字段如下
results[].code / cn / en / flag / region / unit-同 /fx/currencies
results[].middecimal中间价
results[].cashBuy / cashSelldecimal现汇买入价 / 卖出价
results[].noteBuy / noteSelldecimal现钞买入价 / 卖出价
results[].changedecimal涨跌值
results[].pctdecimal涨跌幅 %
results[].sparkstring近 7 日中间价 JSON 数组(迷你走势)
results[].quoteTimestring该币种报价时刻
GET /fx/convert任意币种互换
请求参数
参数类型必填说明
fromstring源币种 ISO,如 USD(大小写不敏感)
tostring目标币种 ISO,如 CNY
amountdecimal金额,≥ 0
响应字段 · data
字段类型说明
from / tostring源 / 目标币种代码(大写)
amountdecimal输入金额
resultdecimal换算结果(amount × midRate,4 位小数)
midRatedecimal折算汇率:1 from = midRate to
fromMid / toMiddecimal源 / 目标币种对 CNY 的中间价(CNY 固定 1)
quoteTimestring报价时刻(取两侧较新者)
reverseRatedecimal反向汇率:1 to = reverseRate from
200 · data
{ "from":"USD", "to":"CNY", "amount":100,
  "result":675.2286, "midRate":6.752286 }
GET/fx/history近 N 日中间价(最大 30 天)
请求参数
参数类型必填说明
codestring币种 ISO,如 USD;不支持的币种返回 40001
daysint天数,默认 30,最大 30
响应字段 · data(数组,按日期升序)
字段类型说明
datestring日期(yyyy-MM-dd)
middecimal当日中间价
cashBuy / cashSelldecimal现汇买入 / 卖出估算价(按当日价差比例还原)
业务域

港口 /port

全球港口列表、自动建议、详情、船公司直挂矩阵、地图点位与国家分组。

GET/port/list港口列表(分页 + 过滤)
请求参数
参数类型必填说明
regionstring区域过滤(all 或缺省为全部)
countrystring国家 ISO2,如 US
onlyMainbooleantrue 只看基本港
kwstring关键字,匹配代码 / 中英文名 / 国家中文
pageint页码,默认 1
limitint每页条数,默认 20,最大 200
响应字段 · data
字段类型说明
total / page / limitint总数 / 当前页 / 每页条数
resultsarray港口列表,元素字段如下
results[].codestring港口代码(UN/LOCODE 风格)
results[].nameZh / nameEnstring中文名 / 英文名
results[].countryIso / countryCnstring国家 ISO2 / 中文名
results[].citystring所在城市
results[].regionstring所属区域
results[].flagstring国旗 emoji
results[].portTypestring港口类型(sea 等)
results[].isMainint是否基本港:1=是
results[].ipiUsdintIPI 参考价(USD)
results[].daysint参考航程天数
results[].orc / ddc / thcintORC / DDC / THC 附加费参考
GET/port/suggest自动建议下拉
请求参数
参数类型必填说明
kwstring输入关键字;为空返回空数组
limitint返回条数,默认 20,最大 50
响应字段 · data(数组,基本港优先)
字段类型说明
codestring港口代码
cn / enstring中文名 / 英文名
country / countryCnstring国家 ISO2 / 中文名
flagstring国旗 emoji
isMainint是否基本港:1=是
GET/port/detail/{code}港口详情
请求参数
参数类型必填说明
codestring(path)港口代码,如 LAX;不存在返回 40001
响应字段 · data
字段类型说明
code / nameZh / nameEnstring代码 / 中文名 / 英文名
countryIso / countryCn / city / region / flagstring国家与城市信息
portTypestring港口类型
isMain / isOrigin / isDestint基本港 / 可做起运港 / 可做目的港(1=是)
ipiUsd / days / orc / ddc / thcint运价与附加费参考
authoritystring港务局 / 管理方
notestring备注
lng / latdecimal经纬度
linesDetailarray直挂船公司元数据 [{code,nameZh,nameEn,bgColor,fgColor,alliance,isDirect}]
similarPortsarray同国家其它港口(最多 8 个)[{code,nameZh,isMain}]
GET/port/matrix港口 × 船公司直挂矩阵
请求参数
参数类型必填说明
regionstring区域过滤,默认 all;矩阵仅含基本港 + 海港
响应字段 · data
字段类型说明
linesarray9 家船公司元数据 [{code,nameZh,nameEn,bgColor,fgColor,alliance,sort}],固定顺序 MSK/MSC/COSCO/EVA/CMA/HPL/ONE/HMM/ZIM
portsarray每行一个港口
ports[].portMetaobject港口元信息 {code,nameZh,countryCn,flag,region,isMain}
ports[].marksobject直挂标记 {船公司code: true/false}
GET/port/map全球港口分布点位
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,仅含有经纬度的港口)
字段类型说明
codestring港口代码
cnstring中文名
lng / latdecimal经度 / 纬度
isMainint是否基本港
regionstring所属区域
GET/port/countries国家分组(含港口数)
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,按港口数降序)
字段类型说明
countrystring国家 ISO2
countryCnstring国家中文名
flagstring国旗 emoji
portCountint该国家港口数量
GET/port/lines船公司元数据(9 家)
请求参数
参数类型必填说明
无参数
响应字段 · data(数组)
字段类型说明
codestring船公司代码,如 MSK
cn / enstring中文名 / 英文名
bgColor / fgColorstring品牌背景色 / 前景色
alliancestring所属航运联盟
website / logoUrlstring官网 / Logo 地址
sortint排序值
GET/port/hot热门港口
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,固定 11 个常用港口)
字段类型说明
codestring港口代码,如 LAX
clickCountint点击次数(当前固定 0,预留)
sortint排序值(1 起)
业务域

集装箱 /container

集装箱规格、推荐换柜阈值规则,以及装载计算(体积/重量利用率 + 拼箱建议)。

GET/container/specs规格列表(可按 cat 过滤)
请求参数
参数类型必填说明
catstring类型分组:sea/reefer/open/frame/air,默认 all
响应字段 · data(数组,17 种海/空运规格)
字段类型说明
idstring主键(雪花 ID,JSON 序列化为字符串)
codestring规格编码:20GP / 40HQ / LD3 等
namestring规格中文名
catstring类型分组:sea / reefer / open / frame / air
innerLMm / innerWMm / innerHMmint内长 / 内宽 / 内高(mm)
volM3decimal理论容积(m³)
maxWeightKgint最大载重(kg)
sortint排序值
enabledint是否启用:1=启用
createTime / updateTimestring创建 / 更新时间
GET/container/recommend-rules推荐换柜阈值规则
请求参数
参数类型必填说明
无参数
响应字段 · data(数组)
字段类型说明
idstring主键(雪花 ID)
ruleKeystring规则键,如 upgrade_20gp / overweight / lcl
ruleNamestring规则名(中文)
targetSpecstring触发该规则的源规格 code,空为全局规则
thresholddecimal触发阈值(%)
actionTextstring建议文案,支持 {pct} 占位符
sort / enabledint排序 / 是否启用
createTime / updateTimestring创建 / 更新时间
POST /container/calc装载计算

请求体 ContainerCalcDTO:specCode + cargos[](1–20 行,每行含 L/W/H/weight/qty,可选 stackable/fragile)。

请求参数(JSON 请求体)
参数类型必填说明
specCodestring集装箱规格 code,如 20GP / 40HQ / LD3
cargosarray货物清单,1–20 行
cargos[].namestring货物名称
cargos[].L / W / Hint单件长 / 宽 / 高(cm),1–2000
cargos[].weightdecimal单件重量(kg)
cargos[].qtyint件数,1–100000
cargos[].stackableboolean是否可堆码,默认 true;false 利用率折扣 -15%
cargos[].fragileboolean是否易碎品,默认 false(仅影响建议文案)
POST · 请求体
{ "specCode":"40HQ", "cargos":[{
  "name":"纸箱A", "L":60, "W":40, "H":40,
  "weight":12.5, "qty":300 }] }
响应字段 · data
字段类型说明
specCode / specNamestring所选规格 code / 中文名
volPct / weightPct / overallPctdecimal体积 / 重量 / 综合利用率(%;综合取两者较大值)
loadedQty / totalDemandQtyint实装件数 / 需求总件数
loadedQtyPctdecimal装载率 %
loadedVol / loadedWeightdecimal已装体积(m³)/ 已装重量(kg)
totalCargoVol / totalCargoWeightdecimal货物总体积(m³)/ 总重量(kg)
containerVoldecimal集装箱理论容积(m³)
containerMaxWeightint集装箱最大载重(kg)
remainVoldecimal剩余空间(m³)
badgestring等级:ok / warn / danger
badgeTextstring等级文案:装载合理 / 建议拼箱 / 需换大柜 等
tipsarray<string>智能建议列表(含 emoji)
200 · data(节选)
{ "specName":"40英尺高箱(HC)", "volPct":37.9,
  "weightPct":14.2, "overallPct":37.9,
  "badge":"warn", "tips":["…"] }
业务域

国别认证 /cert

按品类 × 目的国查认证清单、国家×认证矩阵、7 大地区全景与办理机构介绍。

GET/cert/categories品类下拉
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,10 类)
字段类型说明
codestring品类代码,如 electronic;可作 /cert/search 的 category 入参
nameZh / nameEnstring品类中文名 / 英文名
sortint排序值
GET/cert/countries国家下拉(可按 region)
请求参数
参数类型必填说明
regionstring区域过滤:major/europe/americas/asia/middle-east/oceania/africa/other
响应字段 · data(数组,仅含已录入认证条目的国家)
字段类型说明
isostring国家 ISO2(EU 等区域代码兜底补入)
nameZh / nameEnstring中文名 / 英文名
flagstring国旗 emoji
regionCodestring大区代码
sortint排序值
GET/cert/search品类 × 目的国认证清单
请求参数
参数类型必填说明
categorystring品类代码,取值见 /cert/categories
countrystring目的国 ISO2,如 US
响应字段 · data
字段类型说明
summary.countint认证条目总数
summary.totalDaysint累计办理周期(工作日)
summary.totalCostUsdint累计参考费用(USD)
itemsarray认证条目明细,元素字段如下
items[].idstring条目 ID(雪花)
items[].certstring认证代号,如 CE / FCC
items[].fullstring英文全称
items[].country / categorystring适用国家 ISO / 品类代码
items[].mandatorybooleantrue=强制 / false=自愿
items[].validYearsint有效期年(0=长期/一次性)
items[].processDaysint办理周期(工作日)
items[].costUsdint参考费用(USD)
items[].agenciesarray<string>推荐办理机构短代码列表
items[].notestring中文备注 / 法规依据
GET/cert/matrix国家 × 认证矩阵
请求参数
参数类型必填说明
categorystring品类代码,默认 electronic
响应字段 · data
字段类型说明
categorystring品类代码
certsarray<string>列:该品类下出现过的认证 code(去重)
countriesarray行:每个国家一行(默认 22 国 + 数据中出现的其它国家)
countries[].iso / name / flag / regionCodestring国家 ISO2 / 中文名 / 国旗 / 大区
countries[].cellsobject认证覆盖标记 {cert_code: true/false}
GET/cert/regions-overview7 大地区分组全景
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,7 大地区)
字段类型说明
namestring地区名,如 欧盟 / 欧洲、北美、中东 / GCC
countriesarray该组国家列表
countries[].iso / nameZh / flagstring国家 ISO2 / 中文名 / 国旗
countries[].certsarray<string>该国出现过的认证 code 列表(不限品类)
GET/cert/agencies办理机构介绍卡
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,5 大机构)
字段类型说明
idstring机构 ID(雪花)
codestring机构短代码,如 SGS / TUV
nameZh / nameEnstring中文名 / 英文名
hqCountrystring总部国家
foundedYearint成立年份
branchCountint分支机构数
descZhstring中文介绍
colorClassstring前端着色 class
isMajor / sortint是否主要机构(1=是)/ 排序值
业务域

FBA 头程 /fba

起运地/目的国/仓库字典、旺季 PSS 表、内部费率表,以及海/空/快三档比价。

GET/fba/origins起运地列表
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,7 个起运地)
字段类型说明
idstring主键 ID(雪花)
codestring起运港代码:SZX/SHA/NGB/YIW/CAN/XMN/TAO/TSN
cityZhstring城市中文名
portZhstring港区中文名
sortint排序值
isActiveint是否启用:1=启用
GET/fba/destinations目的国列表
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,7 个目的国)
字段类型说明
isostring目的国代码:US/EU/JP/UK/CA/AU/MX
namestring中文名
sortint排序值
GET/fba/warehouses按目的国查 FBA 仓库
请求参数
参数类型必填说明
deststring目的国代码,如 US;为空返回 40001
响应字段 · data(数组)
字段类型说明
idstring主键 ID(雪花)
areastring所属目的国代码
codestringFBA 仓库码,如 ONT8
cityZhstring城市中文名
stateCodestring州 / 省代码
countryIsostring国家 ISO
isRemoteint是否偏远仓:1=是
remoteNotestring偏远说明
sortint排序值
GET/fba/peak-table12 月旺季 PSS 表
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,按月份 1–12)
字段类型说明
idstring主键 ID(雪花)
monthint月份(1–12)
seaPct / airPct / expPctint海运 / 空运 / 快递旺季附加费 %
labelstring月份标签,如 "9月 · 备货旺季"
GET/fba/rates内部费率表
请求参数
参数类型必填说明
originstring起运港代码过滤,如 SZX
deststring目的国代码过滤,如 US
响应字段 · data(数组)
字段类型说明
idstring主键 ID(雪花)
originCode / destIsostring起运港代码 / 目的国代码
seaM3decimal海运单价(CNY/m³)
seaEtastring海运时效文案,如 "35-42 天"
airKgdecimal空运单价(CNY/kg)
airEtastring空运时效文案
expKgdecimal快递单价(CNY/kg)
expEtastring快递时效文案
POST /fba/calc海/空/快三档比价

请求体 FbaCalcDTO:origin/dest/warehouse/weight/volume/month 必填,battery/powder/brand/ddp 可选。

请求参数(JSON 请求体)
参数类型必填说明
originstring起运港 code,取值见 /fba/origins
deststring目的国(US/EU/JP/UK/CA/AU/MX),须与仓库所属区域一致
warehousestringFBA 仓库码,取值见 /fba/warehouses
weightdecimal实重 kg,≥ 1
volumedecimal体积 m³(体积重按 1m³=167kg 折算)
monthint月份 1–12,决定旺季 PSS
batteryboolean是否带电池,默认 false(叠加敏感货系数)
powderboolean是否粉末 / 液体,默认 false
brandboolean是否品牌货,默认 false
ddpboolean是否 DDP 包税,默认 true
POST · 请求体
{ "origin":"SZX", "dest":"US", "warehouse":"ONT8",
  "weight":200, "volume":1.2, "month":9, "ddp":true }
响应字段 · data
字段类型说明
chargeWeightdecimal计费重 kg = max(实重, 体积×167)
originNamestring起运港中文名
dest / warehousestring目的国 / 仓库 code(回显)
isRemoteboolean是否偏远仓
peakobject当月 PSS:{month, seaPct, airPct, expPct, label}
sea / air / expobject三档渠道结果,结构相同,字段如下
sea.channelstring渠道标识:sea / air / exp
sea.totaldecimal该档总价(CNY,取整)
sea.unitdecimal单价 CNY/kg(按实重)
sea.etastring时效文案,如 "35-42 天"
sea.etaDaysMinint时效下限天数(fastest 判定用)
sea.linesarray费用明细行 [{key, value, show}];show=false 为未触发项
badgesobject角标:{cheapest, fastest},值为 sea/air/exp
业务域

税率测算 /tax

HS 下拉、国家税率、HS × 国家联合税率(含 FTA)、税率矩阵,以及报税利润计算器。

GET/tax/hs-codesHS 编码下拉(按品类)
请求参数
参数类型必填说明
catstring品类过滤(对应 HS 一级类目,如 电子电器)
kwstring关键字,匹配编码 / 中 / 英名
响应字段 · data(数组,最多 200 条)
字段类型说明
codestringHS 8 位编码
namestring品名(优先中文)
catstring所属品类
rebate / vatdecimal出口退税率 % / 增值税率 %
GET/tax/countries国家/地区税率列表
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,38 国/地区)
字段类型说明
isostring国家 ISO2
name / flagstring中文名 / 国旗 emoji
regionstring所属区域
curstring当地货币代码
mfndecimalMFN 平均关税 %
vat / vatNamedecimal / string增值税率 % / 当地称谓(如 VAT / GST)
cTaxdecimal消费税率 %(无细分品类时取国家级)
fta / ftaClsstring协定代码 / 协定分类(rcep/wto/cn-asean 等)
isFta / isRcepint是否 FTA / RCEP 成员:1=是
notestring备注
GET/tax/rateHS × 国家联合税率
请求参数
参数类型必填说明
hsCodestringHS 8 位编码,如 8517.1200;不存在返回 40001
isostring目的国 ISO2,如 US;不存在返回 40001
响应字段 · data
字段类型说明
cn.rebate / cn.vatdecimal中国出口侧:退税率 % / 增值税率 %
cn.hsCode / cn.hsName / cn.hsCatstringHS 编码 / 名称 / 大类(回显)
dest.mfndecimal估算 MFN 关税 %(mfn_avg × 品类倍率 × FTA/RCEP 折扣)
dest.vat / dest.cTaxdecimal目的国 VAT % / 消费税 %
dest.totaldecimal综合税负 % = mfn + vat×(1+mfn/100) + cTax
dest.vatName / currency / isostringVAT 称谓 / 当地货币 / ISO2
dest.countryLabelstring国名(含国旗 emoji 前缀)
fta.name / fta.descstring协定优惠标题 / 说明(如 "★ RCEP 优惠适用")
fta.clsstring着色 class:rcep/wto/cn-asean/cn-kr/cn-pak/cn-au/cn-nz
fta.isFta / fta.isRcepboolean是否 FTA / RCEP
notestring综合备注
GET/tax/matrix国家税率矩阵
请求参数
参数类型必填说明
regionstring区域过滤(all 或缺省为全部)
isFtabooleantrue 只看 FTA 国家
isRcepbooleantrue 只看 RCEP 国家
vatRangestringVAT 区间:high(≥20%)/ low(≤10%)
响应字段 · data(数组)
字段类型说明
元素字段与 /tax/countries 完全相同(iso/name/flag/region/cur/mfn/vat/vatName/cTax/fta/ftaCls/isFta/isRcep/note)
POST /tax/profit-calc报税利润计算器

请求体 TaxProfitCalcDTO:hs/iso/unit/qty 必填,term/costPct/fx/freightPct 可选。

请求参数(JSON 请求体)
参数类型必填说明
hsstringHS 8 位编码,如 8517.1200;不存在返回 40001
isostring目的国 ISO2,如 US;不存在返回 40001
unitdecimal出口单价(USD/件),负数按 0 处理
qtydecimal数量(件),负数按 0 处理
termstring贸易术语 FOB/CFR/CIF,默认 CIF;FOB 时叠加 freightPct
costPctdecimal采购成本占售价 %(含进项 VAT),默认 0
fxdecimal即期汇率 USD→CNY,缺省 7.21
freightPctdecimal海运费占货值 %(仅 FOB 生效),默认 0
POST · 请求体
{ "hs":"8517.1200", "iso":"US", "unit":50, "qty":1000,
  "term":"FOB", "costPct":70, "fx":7.21 }
响应字段 · data
字段类型说明
outTotalUSDdecimal销售总额(USD)= unit × qty
outTotalCNYdecimal销售总额(CNY,按 fx 折算)
outCostCNYdecimal采购成本(CNY,含进项 VAT)
outRebatedecimal出口退税回流(CNY)
outDestCIFdecimal目的国 CIF 货值(USD)
outDestDuty / outDestVAT / outDestCTaxdecimal目的国关税 / VAT / 消费税(USD)
outRetaildecimal终端零售估算(当地币)
outProfitdecimal出口商毛利(CNY)
outMargindecimal综合毛利率 %(1 位小数)
total / margindecimal兼容字段,分别 = outTotalCNY / outMargin
destCurstring当地货币代号,如 USD / JPY
calcCurUnitstring计价币,固定 USD
usedMfn / usedVat / usedCTax / usedRebatedecimal调试用:本次计算采用的税率 %
业务域

价格计算 /price

外贸报价工具:Incoterms 2020 全部 11 种贸易术语(EXW/FCA/FAS/FOB/CFR/CIF/CPT/CIP/DAP/DPU/DDP)一次性报价对比,计入出口退税抵扣与汇率换算。

GET/price/terms11 种术语元数据(中文名/运输方式/卖方费用责任)
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,Incoterms 2020 共 11 条)
字段类型说明
codestring术语代码,如 FOB / CIF / DDP
nameZhstring中文名,如 装运港船上交货
modestring适用运输方式:any=任何方式 / sea=海运及内河
sellerCoststring卖方费用责任说明
POST /price/calc11 种术语报价对比计算

请求体 PriceCalcDTO:profitMargin/exchangeRate 必填;商品明细二选一 —— items 多行商品(单价/数量/箱规/毛净重,整票汇总) 或 unitCostRmb/quantity 单商品快捷方式;vatRate/rebateRate/insuranceRate/importDutyRate/importVatRate/inlandFeeRmb/portFeeRmb/freightFeeRmb/destFeeRmb/targetCurrency 可选。费用为整票 RMB,按总数量摊薄;汇率为 1 CNY = X 目标币种。

请求参数(JSON 请求体)
参数类型必填说明
profitMargindecimal预期利润率(对报价的 margin),0–0.9
exchangeRatedecimal汇率:1 CNY = X 目标币种,> 0
itemsarray条件多行商品明细(整票汇总);与 unitCostRmb/quantity 二选一
items[].unitCostRmbdecimal含税采购单价(元/件),> 0
items[].quantityint数量(件),≥ 1
items[].namestring品名
items[].unitsPerCartonint每箱数量(件/箱),填了才统计箱数
items[].cartonLengthCm / cartonWidthCm / cartonHeightCmdecimal外箱三边(cm),齐全才计体积
items[].grossWeightPerCartonKg / netWeightPerCartonKgdecimal毛重 / 净重(kg/箱)
unitCostRmbdecimal条件单商品模式:含税采购成本(元/件),> 0
quantityint条件单商品模式:数量(件),≥ 1
vatRatedecimal增值税率,默认 0.13,0–1
rebateRatedecimal出口退税率,默认 0.13,0–1
inlandFeeRmbdecimal国内段费用总额(内陆运费+出口报关,整票 RMB),默认 0
portFeeRmbdecimal起运港杂费总额(THC/文件费等,整票 RMB),默认 0
freightFeeRmbdecimal国际运费总额(整票 RMB),默认 0
insuranceRatedecimal保险费率,默认 0.003(按 CIF×110% 投保),0–0.2
destFeeRmbdecimal目的港本地+派送费总额(整票 RMB,DAP/DPU/DDP 用),默认 0
importDutyRatedecimal进口关税率(DDP 用),默认 0,0–1
importVatRatedecimal进口增值税率(DDP 用),默认 0,0–1
targetCurrencystring目标币种,默认 USD
POST · 请求体
{ "unitCostRmb":100, "quantity":1000, "profitMargin":0.15,
  "inlandFeeRmb":2000, "portFeeRmb":1500, "freightFeeRmb":12000,
  "exchangeRate":0.1387, "targetCurrency":"USD" }
响应字段 · data
字段类型说明
itemsarray11 个术语各一条报价(按风险递增),元素字段如下
items[].term / termNamestring术语代码 / 中文名
items[].costRmbdecimal单件成本 RMB(未含利润)
items[].quoteRmb / quoteForeigndecimal单件报价(RMB / 目标币种)
items[].profitRmbdecimal单件利润 RMB
items[].totalQuoteRmb / totalQuoteForeigndecimal整票报价(RMB / 目标币种)
items[].stepsarray成本累加明细 [{label, amount}]
actualCostdecimal实际成本(退税抵扣后,元/件)
rebatePerUnitdecimal退税额(元/件)
exchangeRate / targetCurrency / quantity-入参回显:汇率 / 目标币种 / 数量
cargo.totalQuantityint整票总数量(件)
cargo.totalCartonsint总箱数(仅统计填了每箱数量的行)
cargo.totalCbmdecimal总体积 m³(仅统计箱规三边齐全的行)
cargo.totalGwKg / totalNwKgdecimal总毛重 / 总净重(kg)
cargo.linesarray逐行明细 [{name,unitCostRmb,quantity,cartons,cbm,gwKg,nwKg}]
业务域

海关智能归类 /classify

商品归类建议:规则引擎基于 HS 编码库(品名/别名/英文名 + 申报要素)打分给出 Top 5 候选(含退税/增值税/关税/监管/检疫/申报要素),并可选叠加 DeepSeek AI 依据归类总规则复核。未配置 AI 密钥或复核失败时 ai 字段为 null,不影响规则结果。

POST /classify/suggest智能归类建议(规则引擎 Top 5 + AI 复核)

请求体 ClassifySuggestDTO:productName 商品名称必填;material 材质 / usage 用途 / process 加工方式 / spec 规格型号 / composition 成分含量均可选,填写越充分匹配越准。响应 data.candidates 为按 score 降序的候选数组(code/nameZh/nameEn/score/matchReasons/rebate/vat/duty/dutyGen/mon/ciq/unit/declare),data.ai 为 AI 复核结果(suggestedCode/suggestedName/reasoning/rules/caveat/model),可空。

请求参数(JSON 请求体)
参数类型必填说明
productNamestring商品名称,如 "蓝牙耳机"
materialstring材质,如 "塑料"
usagestring用途,如 "音频播放"
processstring加工方式
specstring规格型号
compositionstring成分含量
POST · 请求体
{ "productName":"蓝牙耳机", "material":"塑料", "usage":"音频播放" }
响应字段 · data
字段类型说明
candidatesarray规则引擎 Top 5 候选(按 score 降序),元素字段如下
candidates[].codestringHS 编码(8 位带点)
candidates[].nameZh / nameEnstring中文 / 英文品名
candidates[].scoreint匹配得分(0–100)
candidates[].matchReasonsarray<string>命中说明,如 品名命中:蓝牙 / 属性命中:材质=塑料
candidates[].rebate / vatdecimal出口退税率 % / 增值税率 %
candidates[].duty / dutyGendecimalMFN 关税 % / 普通关税 %
candidates[].mon / ciqstring监管条件 / 检验检疫类别
candidates[].unitstring法定计量单位
candidates[].declarestring申报要素
aiobject | nullDeepSeek AI 复核结果;未配置密钥或调用失败时为 null
ai.suggestedCode / suggestedNamestringAI 建议的 HS 编码 / 对应品名
ai.reasoningstring归类理由
ai.rulesarray<string>引用的归类总规则
ai.caveatstring免责提示
ai.modelstring调用的模型名
业务域

货代黄页 /forwarder

货代列表查询、详情(含报价历史与评价),以及航线/服务类型/港口字典。

GET/forwarder/list货代列表(分页 + 过滤 + 排序)
请求参数
参数类型必填说明
linestring航线:美西/美东/欧基港/地中海/东南亚/中东/南美/非洲/澳新
originstring出运港代码(SHA/YTN 等)或中文名,映射到城市模糊匹配
deststring目的港代码(UN/LOCODE),取值见 /forwarder/destinations
typestring服务类型:海运/空运/快递/拖车/报关/仓储/跨境海派双清
minRatingint最小评级 0/3/4/5,默认 0=不过滤
sortstring排序:rating(默认)/price/review/year
pageint页码,默认 1
limitint每页条数,默认 20,最大 200
响应字段 · data
字段类型说明
total / page / limitint总数 / 当前页 / 每页条数
resultsarray货代列表(已脱敏),元素字段如下
results[].idstring货代 ID(雪花,序列化为字符串)
results[].namestring公司中文全称
results[].citystring注册城市
results[].ratingdecimal综合评分(满分 5)
results[].reviewCountint累计评价数
results[].midPriceint历史报价中位数(CNY)
results[].foundYearint成立年份
results[].nvocc / fiatabooleanNVOCC 资质 / FIATA 会员
results[].lines / typesarray<string>主营航线 / 服务类型代码列表
results[].addrstring地址(列表复用为出运港展示)
results[].maskedTel / maskedEmailstring脱敏电话 / 邮箱
results[].notestring一句话特长
GET/forwarder/detail/{id}详情 + 报价历史 + 评价
请求参数
参数类型必填说明
idlong(path)货代雪花 ID;不存在或已下线返回 40001
响应字段 · data
字段类型说明
id / name / city-ID(字符串)/ 公司名 / 注册城市
rating / reviewCountdecimal / int综合评分 / 评价数
midPriceint历史报价中位数(CNY)
foundYearint成立年份
nvocc / fiatabooleanNVOCC 资质 / FIATA 会员
addr / addressstring完整地址(address 为兼容字段,同 addr)
maskedTel / maskedEmailstring脱敏电话 / 邮箱
notestring备注 / 特长
lines / typesarray<string>主营航线 / 服务类型
priceHistoryarray报价历史 [{month(yyyy-MM), price(CNY), lineCode}];库无数据时按 midPrice 派生 12 个月
reviewsarray已通过审核的评价 [{user(脱敏), score(0-5), content, createdAt}],最多 20 条
GET/forwarder/lines航线字典
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,9 大航线)
字段类型说明
code / namestring航线代码与名称(相同):美西/美东/欧基港/地中海/东南亚/中东/南美/非洲/澳新
sortint排序值
GET/forwarder/types服务类型字典
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,7 类服务)
字段类型说明
code / namestring服务类型:海运/空运/快递/拖车/报关/仓储/跨境海派双清
sortint排序值
GET/forwarder/origins出运港字典
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,9 大出运港)
字段类型说明
idstring主键 ID(雪花)
codestring港口代码:SHA/NGB/YTN/SKU/NSH/TAO/XMN/TSN/DLC
name / nameEnstring中文名 / 英文名
countryIsostring国家 ISO
sortint排序值
GET/forwarder/destinations目的港字典
请求参数
参数类型必填说明
无参数
响应字段 · data(数组,36 个主要目的港,按航线分组)
字段类型说明
idstring主键 ID(雪花)
codestring目的港代码(UN/LOCODE)
name / nameEnstring中文名 / 英文名
countryIsostring国家 ISO
lineCodestring所属航线代码
sortint排序值
附录

签名示例代码 · Python

与第 2 节完全一致的 stringToSign 实现,可直接互操作,也可复算示例签名。POST 的 BODY_SHA256_HEX 必须对实际发送的请求体字节计算。

openapi_client.py
import hashlib, hmac, base64, time, uuid, requests

EMPTY = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"

def canonical(q):
    return "&".join(f"{k}={q[k]}" for k in sorted(q)) if q else ""

def call(method, path, query=None, body=None):
    ts, nonce = str(int(time.time()*1000)), str(uuid.uuid4())
    bh = hashlib.sha256(body.encode()).hexdigest() if body else EMPTY
    sts = "\n".join([method, "/openapi/v1"+path,
                     canonical(query), ts, nonce, bh])
    sign = base64.b64encode(hmac.new(SECRET.encode(),
                sts.encode(), hashlib.sha256).digest()).decode()
    headers = {"X-Api-Key":KEY, "X-Timestamp":ts,
               "X-Nonce":nonce, "X-Sign":sign}
    return requests.request(method, BASE+path, params=query,
                            data=body, headers=headers).json()
i
Java 版实现见仓库 docs/开放API接入文档.md §7.1。端到端测试脚本 docs/openapi_e2e.py 覆盖 21 项检查(8 域正向 + 鉴权负向 + 防重放 + 限流),可直接运行做回归。