API

面板的全部功能都可以通过两套独立的 API 使用。两者用的是同一个账户、同一份余额、同一个服务目录,区别在于格式和能力。

面板的全部功能都可以通过两套独立的 API 使用。两者用的是同一个账户、同一份余额、同一个服务目录,区别在于格式和能力。

为什么有两套 API

整个行业通用的经典分销商 API (v2) 向单一端点提交表单,并且始终返回 HTTP 200。现成的面板软件期待的正是这种格式,所以它原封不动地保留下来。而自己写系统的开发者一直卡在这种格式的限制上:错误无法区分,服务目录整块返回,订单状态只能不停地轮询。v3 就是为这类需求而写的。

旧版 API 不会被关闭。它没有停用日期,你无需改动已经跑通的对接。

对比

特性旧版 (v2)新版 (v3)
格式单一端点、表单提交、action 参数面向资源的 REST,JSON 正文
HTTP 状态码即使失败也始终是 200真实状态码(400、401、402、404、409、429、502)
错误自由文本type + 固定的 code + 本地化消息 + param + doc_url
订单状态只有本地化文本固定的机器值,另外还有单独的展示标签
服务说明没有10 种语言的说明、平均耗时、平台、分类
订单字段靠类型名称推测每个服务发布自己的字段结构
价格单位未标明(套餐类服务出现 1000 倍误差的根源)明确标为 per_1000 或 per_order
服务目录一次响应返回全部服务筛选条件加游标分页
重复下单防护没有Idempotency-Key
状态通知持续轮询带签名的 Webhook 或事件流
接口描述没有OpenAPI 3.1
语言英语和土耳其语(分属不同地址)10 种语言(用标头或参数指定)

我该选哪一个

旧版 (v2)

如果你用的是现成的面板软件、机器人或分销面板,请选旧版 API。多数软件只要求你改一下 API 地址和密钥,几分钟就能跑起来。

新 API (v3)

如果你在写自己的应用、商店或自动化流程,请选 v3。错误处理、重复下单防护和通知机制都是现成的,订单表单也可以直接由服务字段结构生成。

开始使用

  1. 1在“密钥”标签页创建一个 API 密钥。
  2. 2拉取服务列表,查看要用的服务的 id 和字段结构。
  3. 3先用 preview 校验订单,然后再正式创建。
  4. 4注册一个 Webhook,或读取事件流,来跟踪状态变化。

错误 (48)

代码状态说明
missing_api_key401未提供 API 密钥。请通过 'Authorization: Bearer <key>' 发送。
invalid_api_key401提供的 API 密钥无效。
revoked_api_key401该 API 密钥已被吊销,无法再使用。
account_banned403该账户已被封禁。
account_suspended403该账户已被暂停。
insufficient_scope403该 API 密钥没有访问此端点的权限。
invalid_json400请求体不是有效的 JSON。
unsupported_content_type415不支持的 Content-Type。请使用 application/json 或 application/x-www-form-urlencoded。
method_not_allowed405此端点不允许使用该 HTTP 方法。
payload_too_large413请求体过大。
missing_parameter400缺少必填参数。
invalid_parameter400参数值无效。
invalid_quantity400数量不是有效的正整数。
quantity_out_of_range400数量超出该服务允许的范围。
invalid_comments400评论字段为空或行数过多。
invalid_username400该用户名对此服务无效。
invalid_subscription400订阅参数无效。
invalid_runs400分批投放的 'runs' 值无效。
invalid_interval400分批投放的 'interval' 值无效。
dripfeed_not_supported400该服务不支持分批投放。
missing_required_field400此服务类型所需的字段缺失或无效。
service_inactive400该服务当前无法下单。
invalid_cursor400分页游标无效。
invalid_limit400'limit' 参数超出允许范围。
invalid_webhook_url400Webhook 网址必须是公开的 https:// 地址。
invalid_events400请求的事件类型中有一个或多个未知。
batch_too_large400单次批量请求中的条目过多。
cancel_not_supported400该服务不支持取消。
refill_not_supported400该服务不提供补量。
unknown_endpoint404未知端点。可用路由请参阅 API 参考文档。
service_not_found404不存在该 id 的服务。
order_not_found404您的账户中不存在该 id 的订单。
refill_not_found404您的账户中不存在该 id 的补量记录。
webhook_not_found404您的账户中不存在该 id 的 Webhook 端点。
order_not_cancelable409由于当前状态,该订单已无法取消。
cancel_rejected409供应商拒绝了取消请求。
order_not_completed409只能为已完成的订单申请补量。
idempotency_key_reuse409该 Idempotency-Key 已用于其他请求体。
idempotency_in_progress409使用该 Idempotency-Key 的请求仍在处理中。请稍后重试。
webhook_limit_reached409您已达到 Webhook 端点数量上限。
insufficient_balance402余额不足以支付该订单。
rate_limit_exceeded429超出速率限制。请参阅 Retry-After 响应头。
provider_error502供应商返回了错误。请重试。
refill_failed502补量请求被供应商拒绝。
service_temporarily_unavailable503该服务暂时不可用。请稍后重试。
internal_error500我方发生了意外错误。