文档

合作伙伴 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:

字段含义
planpro 或 proplus
months1、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 — 仅限未使用的代码;席位会立即空出。

安全