文档
合作伙伴 API
适用于已获批准的合作伙伴:从您自己的系统(CRM、客户专区、开户流程)为客户生成 Chart Premium 激活码,并查看哪些已被使用。关于合作伙伴计划。
身份验证
在您的合作伙伴页面创建密钥,并通过 Authorization 请求头发送。密钥形如 mdp_pk_3f9a1c07de_…;我们只保留指纹,因此丢失的密钥无法再次显示:请创建新密钥。
curl https://app.marketapi.app/partner/v1/account \
-H "Authorization: Bearer mdp_pk_YOUR_KEY"
无停机轮换:轮换会创建新密钥,并让旧密钥继续有效 24 小时。将新密钥配置到您的系统中,旧密钥会自动过期(或立即撤销)。切勿将密钥放在网页或移动应用中:请从您的服务器调用 API。
限制:每个合作伙伴每分钟 120 次请求;同一地址密钥失败次数过多将被封禁 10 分钟。错误以 JSON 返回:{"error": "…", "code": "invalid"},HTTP 状态为 400、401、405 或 429。
您的席位
GET /partner/v1/account
{"partner_id": "MP-7KQ3TA", "name": "Example Broker", "status": "active",
"seats": [{"plan": "pro", "name": "Pro", "days": 30, "left": 48, "trial": false, "expires_at": null}]}
每个席位是一个对应某套餐和时长(30、91、182 或 365 天)的激活码。在您的合作伙伴页面购买席位套餐(比正常价低 30%,每包 10, 50, 250 个)。
生成代码
POST /partner/v1/codes,请求体为 JSON:
| 字段 | 含义 |
|---|---|
plan | pro 或 proplus |
months | 1、3、6 或 12(席位时长),或 days |
count | 代码数量(1–5000);如提供参考编号可省略 |
customer_refs | 可选:每个代码对应的您自己的参考编号(例如客户的账户号),每个最多 120 个字符。我们以掩码形式(45•••68)配合带密钥的指纹存储,因此您可以用完整参考编号查找代码,但我们从不保留原文。 |
expires_days | 未使用代码的有效期(默认 365;试用席位更早结束)。过期的未使用代码会归还其席位。 |
batch | 可选名称,用于识别批次 |
发送 Idempotency-Key 请求头(任意唯一文本):如果请求被重试,您会得到相同的代码而非新代码(24 小时内)。
curl -X POST https://app.marketapi.app/partner/v1/codes \
-H "Authorization: Bearer mdp_pk_YOUR_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: onboarding-45123468" \
-d '{"plan": "pro", "months": 1, "customer_refs": ["45123468"]}'
201 {"count": 1, "codes": [{"code": "K7QM-3XTP-9RWA-FD2H", "hint": "FD2H", "customer_ref": "45•••68",
"plan": "pro", "days": 30, "expires_at": "2027-10-17T08:00:00+00:00"}]}
代码只在响应中出现一次。将代码分别交给每位客户;客户登录后在 https://app.marketapi.app/premium 输入,套餐立即生效,或在其现有套餐结束后开始。
大批量:超过 100 个代码会由我们的任务队列生成。响应为 202 {"job": 812, "url": "/partner/v1/jobs/812"};请轮询该 URL,直到 status 为 done;代码只在第一次的响应中出现。
GET /partner/v1/jobs/812
{"status": "queued", "position": 2, "eta_s": 4.0} → {"status": "done", "count": 2000, "codes": [ … ]}
查找代码
GET /partner/v1/codes?customer_ref=45123468&status=unused&limit=100&offset=0 — 状态:unused、redeemed 或 cancelled。
{"codes": [{"id": 9134, "hint": "FD2H", "customer_ref": "45•••68", "plan": "pro", "days": 30, "status": "redeemed",
"created_at": "…", "expires_at": "…", "redeemed_at": "…"}]}
取消代码
POST /partner/v1/codes/9134/cancel — 仅限未使用的代码;席位会立即空出。
安全
- 所有调用均通过 HTTPS;密钥以恒定时间比较,仅存储其带密钥的指纹。
- 每当创建或轮换密钥时,我们都会发送邮件到您的联系地址。
- 代码由 32 种字符中的 16 个字符组成(80 位),只显示一次,仅以指纹形式存储,输入时每个账户每小时最多尝试 10 次。