GPT Pay 开放 API

GPT 套餐充值开放 API v1 接入文档

平台出资 API 与本站卡密

以下 API 使用同一 API Key、积分账户和履约流程,不需要提交银行卡资料。这里只支持后台已配置并开放的商品;不会使用旧卡池。

方法路径功能
GET/api/v1/platform-recharge/quote?planCode=codex_point&country=PH&mode=self&creditQuantity=1000获取总价 priceCredits、priceVersion、可用状态及最大账号数量
POST/api/v1/platform-recharge/orders下单,必须提供 Idempotency-Key
GET/api/v1/platform-recharge/orders/{id}查询本人订单或购买批次;已成功成品订单返回交付凭据

平台代充请求示例:

{"planCode":"codex_point","country":"PH","mode":"self","creditQuantity":1000,"expectedUnitPriceCredits":100,"expectedPriceVersion":1,"session":{"user":{"email":"user@example.test"},"account":{"id":"account_id","planType":"plus"},"accessToken":"<access_token>"}}

expectedUnitPriceCredits 与 expectedPriceVersion 必须复制本次报价;示例金额不是真实售价。平台点数售价和卡内首充按每 250 点配置、随数量线性累加,手续费预留按每单一次。已经受理的订单保留原价格和首充快照。实际成本使用卡台确认的 USD 消费/费用流水,不把充值本金当作消费成本。

成品请求改为 mode:product,传 quantity(1–10 个账号),不提交 Session。成品只支持五种普通订阅,不支持升级或点数;通过返回的各订单 ID 获取已成功账号凭据。平台 API 未传国家时默认 PH。

本站卡密通过现有 /api/redeem/check、/api/redeem/orders 和结果查询流程使用:代充卡密支持全部九项;成品卡密只支持普通订阅。点数数量与国家由管理员在生成批次时固定,兑换端不可改。本站卡密仍走现场开卡及 Direct 充值,不调用上游 card_key 商品接口。

快速开始

  • Base URL:https://gptpay.tokenseek.app/api/v1
  • 请求与响应:JSON、UTF-8、HTTPS
  • API 版本:v1
  • API Key 管理:登录后前往 /settings/apikeys

API Key 默认永久有效,也可选择 30、90、180、365 天或自定义到期日期。Key 原文只在创建成功时显示一次,请立即保存并配置到服务端环境变量中。

套餐、国家与兼容性

当前统一套餐共九项:普通订阅 go、plus、pro5、pro20、pro50;Plus 升级 pro5_up、pro20_up、pro50_up;点数 codex_point。代码直接对应上游 planType,不使用 pro100、pro200、pro500 等金额别名。

升级仅支持当前 Plus;Codex 点数要求已有有效订阅,Free 账号不可购买。Session 明确不符合条件时,本系统在冻结积分、开卡或消耗卡密前拒绝;Session 未携带订阅状态时,不把它当作 Free,上游最终校验资格。点数订单必须传数字整数 creditQuantity(兼容 credit_quantity),范围 250–250000,且为 250 的倍数;同时传两种字段必须一致。其他套餐忽略点数数量。订单只显示请求充值数量,不推测账号实际点数余额。

自带卡点数订单服务费按每单收取,与数量无关。点数订单不适用订阅取消状态,cancellationStatus 为 not_applicable;幂等重放必须保留原点数数量。

pro50_up 的目标订阅为 chatgptpromax。自带卡国家代码为菲律宾 PH、埃及 EG、智利 CL、美国 US、日本 JP。新建订单省略 country 时,仅 pro50 默认 CL,其余套餐(包括 pro50_up)默认 PH;显式国家优先。首尾空格会去除,小写会转为大写;USD、EU 等不在五国范围内的值会被拒绝。每个已开放套餐均支持这五个国家,选择国家不改变服务费。可购买套餐以当前账户报价为准。

原有程序可以继续使用原接口、原请求和原响应。默认账户响应的 plans 返回除 go 外已启用的套餐;默认创建和查询响应不增加国家字段。

需要新能力的程序可以在这三个接口 URL 后添加 ?view=extended:

接口扩展内容
GET /api/v1/user?view=extendedplans 包含已启用的 Go;每项增加 availableCountries、defaultCountry、priceVersion;顶层 data.defaultCountry 保留 PH 作为一般回退
POST /api/v1/gpt-recharge/orders?view=extended订单对象增加 country
POST /api/v1/gpt-recharge/orders/status?view=extended查到的订单对象增加 country;not_found 项保持原样

view 只控制响应字段,不影响下单、费用和幂等。购买 Go 或指定国家时,仍在原创建接口中传入 planCode 和 country。默认国家应优先读取当前套餐的 defaultCountry。历史订单没有可靠国家记录时,扩展响应的 country 仍为 null。接入程序需要能识别所购买或查询的套餐代码。

同一用户等级、同一套餐的 API 与自助充值服务费一致,选择国家不改变服务费。successCredits 是成功服务费,failureCredits 是适用的失败处理费;这些费用不是银行卡实际支付金额。创建订单后费用按订单快照执行。

例如,扩展账户响应中的报价项目:

{
  "planCode": "go",
  "successCredits": 80,
  "failureCredits": 20,
  "availableCountries": ["PH", "EG", "CL", "US", "JP"],
  "defaultCountry": "PH",
  "priceVersion": 1
}

示例费用及可用国家仅用于说明结构,实际以账户报价为准。

认证

每个请求都必须使用请求头传入创建得到的完整 API Key:

X-API-Key: <your_api_key>

不要把 API Key 放在 URL、查询参数、请求体、浏览器前端代码或日志中。删除、到期、禁用的 Key 会立即失效。

通用响应

成功响应:

{
  "code": 0,
  "message": "success",
  "data": {},
  "requestId": "req_example"
}

失败响应:

{
  "code": 40101,
  "message": "API Key 无效",
  "data": null,
  "requestId": "req_example"
}

请同时判断 HTTP 状态码和响应体中的 code。排查问题时可向支持人员提供 requestId,但不要提供完整 API Key、银行卡、CVV 或 Session。

限流

接口每分钟10 秒突发
查询账户600—
创建 GPT 充值订单600100
批量查询订单状态3000500

限流按 API Key 计算。超过限制返回 HTTP 429、业务码 42901 和 Retry-After 响应头。幂等重放也计入限流。

API 接口

查询账户

GET /api/v1/user
X-API-Key: <your_api_key>
curl "https://gptpay.tokenseek.app/api/v1/user" \
  -H "X-API-Key: <your_api_key>"

返回当前 Key 所属用户的余额、等级、可用套餐价格、Key 到期时间和限流策略:

{
  "code": 0,
  "message": "success",
  "data": {
    "user": { "id": "user_id", "email": "user@example.test" },
    "wallet": { "availableCredits": 10000, "reservedCredits": 0 },
    "level": { "code": "default", "name": "默认等级" },
    "plans": [
      {
        "planCode": "plus",
        "successCredits": 2000,
        "failureCredits": 100
      }
    ],
    "apiKey": {
      "expiresAt": null,
      "rateLimits": {
        "accountPerMinute": 600,
        "createPerMinute": 600,
        "createPer10Seconds": 100,
        "statusPerMinute": 3000,
        "statusPer10Seconds": 500
      }
    }
  },
  "requestId": "req_example"
}

Credits 均为整数。expiresAt 为 ISO 8601 时间;永久有效时为 null。

创建 GPT 充值订单

POST /api/v1/gpt-recharge/orders
X-API-Key: <your_api_key>
Idempotency-Key: client-order-001
Content-Type: application/json

Idempotency-Key 必填,长度为 8~128 个字符,在同一用户下唯一。网络超时后请使用相同 Key 和完全相同的业务参数重试。

请求体:

{
  "planCode": "plus",
  "cardNumber": "4242424242424242",
  "expMonth": 12,
  "expYear": 2028,
  "cvv": "123",
  "session": {
    "user": { "email": "user@example.test" },
    "account": { "id": "account_id" },
    "accessToken": "<access_token>"
  }
}
字段类型说明
planCodestringgo、plus、pro5、pro20、pro50、pro5_up、pro20_up、pro50_up、codex_point;以账户报价中的可用套餐为准
creditQuantitynumber仅 codex_point 必填;250–250000 的整数,250 的倍数;兼容 credit_quantity
countrystring可选,PH、EG、CL、US、JP;新 pro50 订单默认 CL,其他套餐默认 PH;须在该套餐的 availableCountries 中
expectedPriceVersioninteger可选,传扩展报价的 priceVersion;价格版本已变化时拒绝创建,请重新确认报价
cardNumberstring12~19 位银行卡号,仅用于本次请求
expMonthinteger1~12
expYearinteger四位年份,且卡片未过期
cvvstring3~4 位数字,仅用于本次请求
sessionobject包含用户邮箱、Account ID 和未过期 Access Token

成功创建返回 HTTP 201;相同幂等请求重放返回 200;订单已受理但提交状态仍在确认时返回 202。

{
  "code": 0,
  "message": "success",
  "data": {
    "id": "order_id",
    "orderNo": "GPT-EXAMPLE",
    "status": "processing",
    "settlementStatus": "reserved",
    "cancellationStatus": "waiting",
    "planCode": "plus",
    "reservedCredits": 2000,
    "chargedCredits": 0,
    "releasedCredits": 0,
    "targetEmail": "us***@example.test",
    "cardLast4": "4242",
    "failureReason": null,
    "createdAt": "2026-08-14T00:00:00.000Z",
    "updatedAt": "2026-08-14T00:00:00.000Z"
  },
  "requestId": "req_example"
}

国家属于业务参数;新请求省略国家与显式传入该套餐的默认国家等价。重放已有订单时,省略国家始终沿用原订单国家,不随当前默认值变化;历史国家为空的订单按原 PH 语义校验,存储及扩展响应仍保留 country:null。显式传原国家可重放,显式切换国家或套餐则冲突。网络超时后也应复用原幂等键,避免第二次支付。

相同 Idempotency-Key 配合不同业务参数会返回 HTTP 409,不会创建新订单、重复冻结 Credits 或重复提交充值请求。

批量查询订单状态

POST /api/v1/gpt-recharge/orders/status
X-API-Key: <your_api_key>
Content-Type: application/json

每次可查询 1~50 个订单 ID,重复 ID 会自动去除:

curl "https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders/status" \
  -X POST \
  -H "X-API-Key: <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"orderIds":["order_1","order_2"]}'
{
  "code": 0,
  "message": "success",
  "data": {
    "orders": [
      {
        "id": "order_1",
        "orderNo": "GPT-EXAMPLE",
        "status": "success",
        "settlementStatus": "settled",
        "cancellationStatus": "success",
        "planCode": "plus",
        "reservedCredits": 2000,
        "chargedCredits": 2000,
        "releasedCredits": 0,
        "targetEmail": "us***@example.test",
        "cardLast4": "4242",
        "failureReason": null,
        "createdAt": "2026-08-14T00:00:00.000Z",
        "updatedAt": "2026-08-14T00:01:00.000Z"
      },
      { "id": "order_2", "status": "not_found" }
    ]
  },
  "requestId": "req_example"
}

不存在或不属于当前用户的订单统一返回 not_found,不会暴露其他用户的订单信息。

状态枚举

订单 status:

  • created、submitting、processing:处理中。
  • success:充值成功。
  • failed:最终失败。
  • submission_unknown:无法确认是否已提交,等待核查。
  • manual_review:需要人工核查。
  • not_found:仅用于批量查询结果,订单不存在或不属于当前用户。

响应继续使用原 failureReason 字段。failed 或 manual_review 时,优先返回完整脱敏的上游失败说明并保留换行;没有可用说明时回退原安全原因。成功订单始终返回 null;提交结果不明时使用本站核查提示。展示说明不决定费用、重试或换卡行为,客户端应以纯文本渲染。

上游 pending_verification 仍对外表示为 processing。升级只有确认目标订阅生效后才会成功;等待验证期间继续轮询,不要重复支付。

结算 settlementStatus:reserved、settled、manual_review。

自动取消续费 cancellationStatus:waiting、pending、success、failed、manual_review。

状态查询返回平台已持久化的最新订单状态。订单由后台异步处理,不依赖状态查询推进;即使客户端停止轮询,订单仍会继续执行,提高查询频率也不会加快处理。

建议创建后的第一分钟每 5 秒查询一次,之后每 15 秒查询一次;订单进入 success 或 failed,且取消续费不再是 waiting 或 pending 后停止轮询。

HTTP 状态与业务错误码

HTTP业务码含义
40040001请求格式、银行卡或 Session 无效
40140101API Key 缺失、无效、过期或已删除
40240201Credits 不足
40340301当前账号或服务不可用
40940901幂等键与原请求冲突
40940902目标账号已有未完成任务
41341301请求体超过 120 KB
42942901超过限流
50350301服务维护中或暂时不可用

代码示例

JavaScript

const response = await fetch(
  'https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.GPT_PAY_API_KEY,
      'Idempotency-Key': crypto.randomUUID(),
    },
    body: JSON.stringify(orderInput),
  }
);
const result = await response.json();
if (!response.ok || result.code !== 0) throw new Error(result.message);

Python

import os
import uuid
import requests

response = requests.post(
    "https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders/status",
    headers={"X-API-Key": os.environ["GPT_PAY_API_KEY"]},
    json={"orderIds": ["order_1", "order_2"]},
    timeout=15,
)
result = response.json()
response.raise_for_status()
if result["code"] != 0:
    raise RuntimeError(result["message"])

安全与轮换

  • API Key 应只保存在服务端 Secret 或环境变量中。
  • 为不同系统创建不同 Key,轮换时先创建新 Key,完成切换后删除旧 Key。
  • 不记录请求体;请求体包含银行卡、CVV 和 Session。
  • 不要通过消息或工单发送完整 API Key、银行卡、CVV、Session 或 Token。
  • 自带卡充值的开放 API 不会保存完整银行卡、CVV、Session 或 Access Token。

Go 与国家选择示例

curl "https://gptpay.tokenseek.app/api/v1/gpt-recharge/orders?view=extended" \
  -X POST \
  -H "X-API-Key: <your_api_key>" \
  -H "Idempotency-Key: client-go-eg-001" \
  -H "Content-Type: application/json" \
  -d '{"planCode":"go","country":"EG","cardNumber":"4242424242424242","expMonth":12,"expYear":2032,"cvv":"123","session":{"user":{"email":"user@example.test"},"account":{"id":"account_id"},"accessToken":"<access_token>"}}'

先确认该套餐已开放,再选择充值国家。示例卡号与 Session 仅为占位数据。新 Go 订单省略国家与显式 PH 等价,新 pro50 订单省略国家与显式 CL 等价。

创建响应表示本站订单已建立,充值是否成功以查询结果为准。processing 包含排队、支付及等待验证;继续轮询即可。submission_unknown 或 manual_review 表示结果待确认,不要更换幂等键重复提交。建议创建后的第一分钟每 5 秒查询一次,之后每 15 秒查询一次;success 或 failed 为支付终态。取消续费结果可能晚于支付成功更新,可以在成功约一分钟后补查,不要因此重新充值。

卡密兑换接口

兑换服务地址为 https://redeem.tokenseek.app,接口仅供该兑换站点的同源流程使用。它们不使用开放 API 的 API Key 或通用响应封装,失败返回非成功 HTTP 状态及 { "error": "错误说明" }。请求均为 JSON POST。

路径请求成功响应
/api/redeem/check{ "code": "<card_key>" }未开始时返回 inProgress:false、planCode、country、mode;已开始时返回 inProgress:true 和 statusToken
/api/redeem/orders{ "code": "<card_key>", "sessionJson": "<Session JSON 字符串>" }{ "statusToken": "<status_token>" };成品号卡密无需提交 Session
/api/redeem/orders/status{ "statusToken": "<status_token>" }{ "order": { ... } },包含套餐、国家及兑换状态
/api/redeem/orders/session{ "statusToken": "<status_token>", "sessionJson": "<新的 Session JSON 字符串>" }{ "order": { ... } };仅允许需要补交 Session 的订单,且必须属于原账号
/api/redeem/orders/delivery{ "statusToken": "<status_token>" }成功成品号订单的交付数据

卡密在发行时固定套餐和国家,兑换者不能改变。创建兑换请求不需要 country;若传入与绑定国家不同的值,返回 HTTP 409。重复兑换会恢复原订单。重新通过卡密查询可能更新 statusToken,请使用最新令牌;不得在日志或公开链接中泄露令牌。

这些接口用于本站发行的卡密。代充卡密支持全部九项套餐;成品卡密仅支持五项普通订阅。支持 PH、EG、CL、US、JP,须由后台开放对应国家的履约配置。上游独立的 orderType=card_key 接口不通过本站这些接口提供。