Muvexa API 文档
授权店铺后,可以在在线控制台测试,也可以从后端调用同一个平台接口。Free 每个平台每天包含 20 次调用。
这份文档面向谁
这份文档面向通过 Muvexa API 连接电商系统的技术团队。
快速开始
授权店铺后,可以在在线控制台测试,也可以从后端调用同一个平台接口。Free 每个平台每天包含 20 次调用。
注册并授权店铺
创建 Muvexa 账号,进入控制台并生成店铺授权链接。授权完成后,Muvexa 会为该店铺签发一对凭证:API Key 与 API Secret。两者都在控制台的授权列表页,默认掩码,点眼睛图标展开或复制。
在 API Console 在线测试
测试阶段,直接在在线 API Console 发起电商平台请求,并查看状态、耗时和响应元数据。
POST https://openapi.muvexa.co/amazon/execute
Content-Type: application/json
X-Api-Key: <your-api-key>
X-Timestamp: 1723795200000
X-Nonce: 7b1f2d0c-5b52-4c74-a615-0d7e3cce8e9c
X-Signature: <hmac-sha256-hex>
{
"method": "GET",
"path": "/orders/v0/orders",
"queryParams": {
"MarketplaceIds": "ATVPDKIKX0DER",
"CreatedAfter": "2026-08-01T00:00:00Z"
}
}连接你的后端系统
在后端使用店铺 API Key 调用对应的平台入口。Free 和 Pro 都支持 API 对接,套餐只影响调用额度。
平台接口地址
每个电商平台使用一个固定的 Muvexa 接口地址,不同平台保持相同的请求协议。
Muvexa API
POST https://openapi.muvexa.co/amazon/execute
Connected commerce platforms
Managed by Muvexa API请求签名
所有服务端到服务端请求都必须使用控制台展示的 API Secret 进行签名。X-Api-Key 明文传输;API Secret 永远不要放进请求里。
规范字符串
六段按此顺序用单个换行符连接。所有十六进制输出均为小写。
HTTP_METHOD + "\n" + // POST
REQUEST_PATH + "\n" + // /amazon/execute (路径,不含域名与查询串)
QUERY_STRING + "\n" + // 网关侧查询串,通常为空行
SHA256_HEX(raw_body) + "\n" + // 原始请求体字节的 SHA-256,小写十六进制
X_TIMESTAMP + "\n" + // 毫秒级 Unix 时间戳
X_NONCE // 本次请求唯一的随机串
X-Signature = HEX(HMAC_SHA256(stringToSign, apiSecret))请求头
每次请求都要带齐这四个头。API Secret 只在本地参与签名计算,不会离开你的服务器。
POST https://openapi.muvexa.co/amazon/execute
Content-Type: application/json
X-Api-Key: <your-api-key>
X-Timestamp: 1723795200000
X-Nonce: 7b1f2d0c-5b52-4c74-a615-0d7e3cce8e9c
X-Signature: <hmac-sha256-hex>常见错误
几乎所有 INVALID_SIGNATURE 都能归到下面四条之一。
API 对接格式
Free 和 Pro 都支持 API 对接。请求需要携带 X-Api-Key 和签名头,再把目标电商平台请求发送到对应的平台入口。
请求体
在这里描述你想调用的电商接口。queryParams 会进入 URL,body 会作为 JSON 请求体发送;两者都按已连接平台的文档填写,Muvexa 不会注入或改写业务字段。
{
"method": "GET",
"path": "/orders/v0/orders",
"queryParams": {
"MarketplaceIds": "ATVPDKIKX0DER",
"CreatedAfter": "2026-08-01T00:00:00Z"
}
}POST 请求示例
创建报表这类接口要求把 reportType 和 marketplaceIds 放在 body 中,不能把它们改放到 queryParams。
{
"method": "POST",
"path": "/reports/2021-06-30/reports",
"body": {
"reportType": "GET_MERCHANT_LISTINGS_ALL_DATA",
"marketplaceIds": ["ATVPDKIKX0DER"]
}
}成功响应:原样透传
拿到的是已连接平台自己的响应体与原始状态码,Muvexa 保持响应契约透明。
{
"payload": {
"Orders": [
{
"OrderId": "902-0000000-0000000",
"OrderStatus": "Shipped",
"PurchaseDate": "2026-08-14T09:12:33Z",
"OrderTotal": { "CurrencyCode": "USD", "Amount": "42.50" }
}
],
"NextToken": "MRjLDgAAAAA..."
}
}网关错误
只有 Muvexa 自身发出的拒绝才用这个外壳:参数不正确、凭证或签名无效、额度用尽。电商平台的错误一律原样透传,响应体就是平台自己的错误结构。
{
"code": 429,
"msg": "当日调用额度已用尽",
"data": null
}代码示例
同一个已签名请求的 Python、Java、TypeScript、Go 与 cURL 版本。每份示例都自包含,只用各语言标准库。
import hashlib, hmac, json, os, time, uuid
from urllib.parse import urlsplit
import requests
ENDPOINT = "https://openapi.muvexa.co/amazon/execute"
API_KEY = os.environ["MUVEXA_API_KEY"]
API_SECRET = os.environ["MUVEXA_API_SECRET"]
# 只序列化一次:下面签的和发的是同一串字节
payload = {
"method": "GET",
"path": "/orders/v0/orders",
"queryParams": {"MarketplaceIds": "ATVPDKIKX0DER", "CreatedAfter": "2026-08-01T00:00:00Z"},
}
body = json.dumps(payload, separators=(",", ":")).encode("utf-8")
timestamp = str(int(time.time() * 1000))
nonce = str(uuid.uuid4())
string_to_sign = "\n".join([
"POST",
urlsplit(ENDPOINT).path,
"", # 查询串为空
hashlib.sha256(body).hexdigest(),
timestamp,
nonce,
])
signature = hmac.new(
API_SECRET.encode("utf-8"), string_to_sign.encode("utf-8"), hashlib.sha256
).hexdigest()
res = requests.post(
ENDPOINT,
headers={
"Content-Type": "application/json",
"X-Api-Key": API_KEY,
"X-Timestamp": timestamp,
"X-Nonce": nonce,
"X-Signature": signature,
},
data=body, # 传 data=body,不要用 json=payload(会重新序列化)
timeout=60,
)
print(res.status_code, res.text)目前还没有 Muvexa SDK,这些示例都是直接走 HTTP 调用。API Key 与 API Secret 请从环境变量或密钥管理服务读取,不要提交进代码仓库。
签名错误码
401 响应体的 code 字段直接指明原因。其他状态码是电商平台的原始响应透传,不做改写。
| 错误码 | 含义 |
|---|---|
| INVALID_API_KEY | API Key 不存在、已作废,或未配置 API Secret。 |
| MISSING_SIGNATURE | X-Timestamp、X-Nonce、X-Signature 三者之一缺失或为空。 |
| INVALID_TIMESTAMP | X-Timestamp 不是数字,或超出允许的时间窗口。先检查服务器时钟。 |
| DUPLICATE_NONCE | 该 X-Nonce 已在 nonce 有效期内被同一个 API Key 使用过。每次请求生成新的。 |
| INVALID_SIGNATURE | 签名不匹配。对照上面的规范字符串逐行核对。 |
隐私与数据
本平台不获取、不存储、不暴露任何买家个人身份信息(PII)。