API REFERENCE · V1
开发者文档
用一套清楚、稳定的接口完成余额查询、号码获取、验证码轮询与订单管理。
https://api.gynb6666.com/stubs/handler_api.php
01快速开始
注册并登录客户控制台,复制你的 API Key。管理员设置拿货价并充值后即可取号;实际费用会记录在订单与资金流水中。
02身份验证
推荐通过请求头 X-API-Key(或 Bearer Token)传入密钥,避免密钥进入浏览器历史和服务器访问日志。查询参数 api_key 仅用于兼容旧接入。
03查询余额
curl -H "X-API-Key: YOUR_API_KEY" "https://api.gynb6666.com/stubs/handler_api.php?action=getBalance"
成功时直接返回人民币余额,例如 100.00。
04获取号码
curl -H "X-API-Key: YOUR_API_KEY" "https://api.gynb6666.com/stubs/handler_api.php?action=getNumber&service=dr&country=187&card_code=YOUR_CARD_CODE&operation_id=YOUR_OPERATION_ID"
使用 country=187 获取美国短期号码,必须同时传入你自己生成的 card_code。目前仅开放美国短期服务。
每次准备取一个新号码前,先生成并保存唯一的 operation_id。长度为 1–120 个字符,只能使用字母、数字、下划线、点、冒号和短横线。
请求超时后重试时,必须使用同一个 operation_id,并保持 card_code、service 和 country 完全一致。客户端请求超时建议设置为至少 75 秒。
成功返回:
ACCESS_NUMBER:订单ID:美国手机号码
05查询卡密额度
curl -H "X-API-Key: YOUR_API_KEY" "https://api.gynb6666.com/stubs/handler_api.php?action=getCardUsage&card_code=YOUR_CARD_CODE"
返回 JSON,包括 totalUsed 和 remaining。同一 API 顾客下,每个 card_code 独立统计。页面打开、请求失败或网络恢复后,都应调用 getCardUsage 重新同步;以此接口返回的额度为准,不要只依赖浏览器本地计数。
06查询验证码
curl -H "X-API-Key: YOUR_API_KEY" "https://api.gynb6666.com/stubs/handler_api.php?action=getStatus&id=订单ID"
等待时返回 STATUS_WAIT_CODE;收到后返回 STATUS_OK:验证码。
07完成订单
curl -H "X-API-Key: YOUR_API_KEY" "https://api.gynb6666.com/stubs/handler_api.php?action=setStatus&id=订单ID&status=6"
业务完成后可提交状态 6 结束订单。
08取消订单
curl -H "X-API-Key: YOUR_API_KEY" "https://api.gynb6666.com/stubs/handler_api.php?action=setStatus&id=订单ID&status=8"
未收到验证码且可取消时,费用自动退回账户余额。
09错误状态
| 返回值 | 说明 |
|---|---|
BAD_KEY |
API Key 不正确或账户已停用 |
MISSING_CARD_CODE |
美国短期取号必须传入 card_code |
MISSING_OPERATION_ID |
此账户取号时必须传入 operation_id |
BAD_OPERATION_ID |
operation_id 格式不正确 |
OPERATION_CONFLICT |
同一个 operation_id 被用于不同的取号参数 |
NO_BALANCE |
余额不足或拿货价未设置 |
NO_NUMBERS |
当前暂无可用号码 |
MAX_ACTIVE_ORDERS |
进行中的订单已达到上限 |
EARLY_RATE_LIMIT |
请求速度超过限制 |
ERROR_SERVICE_UNAVAILABLE |
对应号码通道暂时不可用 |
ACCOUNT_PENDING |
账户尚未通过管理员审核 |
长期号码 API
长期号码使用独立的 JSON REST 接口,固定产品为美国 OpenAI Codex。价格由产品接口返回,客户端应以 priceCents 与 durationDays 为准,不要在程序中写死金额。
https://api.gynb6666.com/api/long-numbers
长期号码客户入口开启后,网页 /long-numbers.html 与本组 REST 才可访问;未开放时,页面与本组 API 均返回 404。入口开放不代表当前可提取或续费,请先读取产品的 salesEnabled。
身份验证
浏览器网页使用登录后由服务端设置的 customer_session Cookie,并以同源请求访问;不要手工读取或复制该 Cookie。服务端接入可使用下面任一请求头。三种方式都只代表对应的普通客户账户;若同时发送登录会话与 API Key,两者必须属于同一账户。
X-API-Key: YOUR_API_KEY Authorization: Bearer YOUR_API_KEY
不要把 API Key 放进 URL。所有 POST、PATCH 与 DELETE 请求都必须发送 Content-Type: application/json;使用登录会话执行修改时还必须是同源请求。
产品
GET /api/long-numbers/product 返回 product,公开字段为 code、name、accountNamespace、priceCents、durationDays、retentionDays 与 salesEnabled。每次开通或续费延长 26 天,到期后保留 3 天;保留期内可以续费,但不能接收新验证码。accountNamespace 是当前认证账户的非敏感稳定命名空间,网页用它隔离本地幂等操作记录;调用方不得把它当作认证凭据。当前固定 code 为 us-openai-codex;只有 salesEnabled 为 true 时才应提交新的付费动作。
接口一览
| 接口 | 用途 |
|---|---|
GET /api/long-numbers/product | 读取产品、当前开通价格与有效期 |
POST /api/long-numbers/orders | 开通一个长期号码并开启首次 15 分钟收码窗口 |
GET /api/long-numbers/orders?view=current&page=1 | 分页查询等待首码的订单 |
GET /api/long-numbers/orders?view=mine&page=1 | 分页查询已经绑定的有效号码 |
GET /api/long-numbers/orders?view=history&page=1 | 分页查询当前账户尚可见的记录;不等同于仅查询终态 |
GET /api/long-numbers/orders/{orderId} | 读取一个属于当前账户的订单及验证码 |
POST /api/long-numbers/orders/{orderId}/cancel | 首码前取消符合条件的订单;退款由服务端处理 |
POST /api/long-numbers/orders/{orderId}/receive | 为有效号码开启一个 15 分钟收码窗口 |
POST /api/long-numbers/orders/{orderId}/receive/cancel | 取消当前收码窗口 |
POST /api/long-numbers/orders/{orderId}/renew | 支付当前价格并延长 26 天 |
POST /api/long-numbers/orders/{orderId}/release | 释放已绑定的长期号码;剩余有效期不退款 |
PATCH /api/long-numbers/orders/{orderId}/note | 保存不超过 100 字的订单备注 |
DELETE /api/long-numbers/records | 从当前账户的历史视图隐藏指定记录;不释放或改变有效号码 |
开通号码
每一次新开通都要由调用方生成并持久保存唯一的 operationId,并把刚从产品接口读取的 priceCents 原样作为 expectedPriceCents 提交。请求超时、断网或返回结果待确认时,同一次提取或续费重试必须复用同一个 operationId 和确认价格,不能生成新值;价格已经变化时,应先刷新产品再由用户重新确认。
curl -X POST "https://api.gynb6666.com/api/long-numbers/orders" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"operationId":"create:YOUR_UNIQUE_ID","expectedPriceCents":400}'
成功响应为 JSON,包含 ok 与当前账户可见的 order。手机号、订单和验证码始终按认证所对应的账户隔离。
查询订单与验证码
curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.gynb6666.com/api/long-numbers/orders?view=current&page=1" curl -H "X-API-Key: YOUR_API_KEY" \ "https://api.gynb6666.com/api/long-numbers/orders/ORDER_ID"
view=current 返回 status 为 waiting 的订单;view=mine 返回 status 为 success 的订单;view=history 返回当前账户尚可见且未从历史视图隐藏的记录。列表接口返回 orders、page、pageSize、total 与 totalPages。
订单公开字段包括 id、productCode、phone、status、lifecycle、chargedPriceCents、refundCents、expiresAt、retentionEndsAt、note、messageCount、latestCode、lastMessageAt 与 receive。详情接口还返回 messages;未收到验证码时 latestCode、lastMessageAt 为 null 且 messages 为空。验证码正文默认只保留24小时:到期后 messages 仍保留时间与事件元数据,但 code 为 null。删除历史记录会立即清除该订单已交付的验证码正文,不会释放仍有效的号码。
status:waiting、success、cancelled、failed、released。lifecycle:waiting、active、renewal_due、retention、reconciliation、cancelled、failed、released。是否可取消、开窗或续费应分别读取 canCancel、canReceive 与 canRenew,不要只按状态文字推断。
收码、取消、续费、释放与记录
# 开启或取消当前 15 分钟收码窗口
POST /api/long-numbers/orders/{orderId}/receive
POST /api/long-numbers/orders/{orderId}/receive/cancel
# 续费;operationId 与 expectedPriceCents 规则均与开通相同
POST /api/long-numbers/orders/{orderId}/renew
{"operationId":"renew:YOUR_UNIQUE_ID","expectedPriceCents":400}
# 释放号码;释放后无法恢复,剩余有效期不退款
POST /api/long-numbers/orders/{orderId}/release
# 备注与隐藏历史记录
PATCH /api/long-numbers/orders/{orderId}/note
{"note":"我的备注"}
DELETE /api/long-numbers/records
{"ids":["ORDER_ID"]}
首码前且订单允许取消时,可调用 POST /api/long-numbers/orders/{orderId}/cancel;成功退款会记入账户余额与资金流水。只有 canRelease 为 true 时才能释放号码,释放后无法恢复且剩余有效期不退款。绑定到期后会进入保留期,最终释放状态以订单查询结果为准。
状态码与安全重试
| HTTP 状态 | 处理方式 |
|---|---|
400 | 请求字段或格式错误;修正请求后再提交 |
401 | API Key 缺失或无效 |
403 | 账户未开通或无权访问该资源 |
404 | 订单不存在、无权查看,或长期服务当前关闭 |
405 | 该路径不支持当前请求方法 |
409 | 状态已变化或幂等键与原请求冲突;先重新查询订单 |
413 | JSON 请求体超过服务允许的大小 |
415 | 修改请求未使用 application/json |
429 | 连续超时后的冷却期尚未结束 |
503 | 服务已安全停止当前动作;保留原 operationId 并先查询订单 |
错误响应仍为 JSON:{"ok":false,"error":"..."}。若同时返回 reconciliationRequired: true,表示结果尚未确认,请勿自动重试或更换 operationId;请先查询订单,仍未恢复时联系技术支持。只有响应明确返回 operationTerminal: true 时,才可结束该 operationId 的重试周期。