礼品卡发行/发行 API 与发卡令牌
礼品卡发行 API
发卡令牌让你的发卡平台或脚本自动生成礼品卡、直充和作废,不用每次登录网页手动操作。
发卡令牌只能生成、查询、作废礼品卡和直充,不能调用模型。它和 API 页面上调用模型的 API Key 是两种东西,互不通用。只在网页上手动生成礼品卡,不需要创建发卡令牌。 前往礼品卡页面 →
创建发卡令牌link
- 1
打开发卡令牌标签页
登录后进入「礼品卡与直充」页面,切到「发卡令牌」标签页,点「新建发卡令牌」。
- 2
填写名称和可选限制
名称最多 60 个字符,比如「发卡平台」。IP 白名单和每日额度上限都是可选的,留空表示不限。平台不设默认值,由你自己决定。
- 3
立即保存令牌
令牌以 wkt_ 开头,明文只显示这一次。丢失后只能吊销再新建。创建时会发站内通知和邮件。
- Base URL
- https://wokey.ai/api/issuer/v1
- 鉴权
- 每个请求都带 Authorization: Bearer wkt_…。网页登录会话不能调用这组接口,发卡令牌也不能调用其他任何接口。
- 请求与响应
- 请求体和响应都是 JSON。金额在响应里是保留两位小数的字符串(如 "10.00"),时间是 ISO 8601 UTC。
快速开始link
发卡平台每成交一单,就实时调用一次生成接口,count 设为 1,用订单号做幂等键。不需要提前囤码,同一个订单重复调用也只会生成一次。
curl -X POST https://wokey.ai/api/issuer/v1/codes \
-H "Authorization: Bearer wkt_YOUR_ISSUING_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20261017-0001" \
-d '{ "sourceType": "provider", "amountUsd": 10, "count": 1, "label": "order-20261017-0001" }'{
"batch": {
"id": "icb_…",
"sourceType": "provider",
"amountUsd": "10.00",
"count": 1,
"totalUsd": "10.00",
"label": "order-20261017-0001",
"createdAt": "2026-10-17T08:00:00.000Z"
},
"replayed": false,
"codes": [
{
"id": "ic_…",
"batchId": "icb_…",
"kind": "code",
"sourceType": "provider",
"amountUsd": "10.00",
"codeHint": "7K2M",
"status": "active",
"label": "order-20261017-0001",
"createdAt": "2026-10-17T08:00:00.000Z",
"redeemedAt": null,
"redeemedByMaskedEmail": null,
"voidRequestedAt": null,
"voidEffectiveAt": null,
"voidedAt": null,
"frozenAt": null,
"code": "WK-4F9Q-T3XA-8HRB-7K2M",
"redeemUrl": "https://wokey.ai/redeem#WK-4F9Q-T3XA-8HRB-7K2M"
}
]
}code 是兑换码,redeemUrl 是兑换链接,二选一发给买家即可。买家登录 Wokey 后兑换,面值进入其 API 额度。
接口列表link
所有路径都以 https://wokey.ai 开头。
/api/issuer/v1/balance查询余额返回各资金来源的可提现余额:provider(没有 Provider 账号时为 null)、referrer,以及 api 来源的开关、是否符合条件和可用余额。查询时会顺带把已过 72 小时冷却期的作废礼品卡退回余额。
/api/issuer/v1/codes生成礼品卡从指定资金来源扣款,生成一批面值相同的礼品卡。返回 batch(批次信息)、replayed(是否为幂等重放)和 codes(每张礼品卡,含 code 和 redeemUrl)。面值在生成时立即从余额扣除。
| 参数 | 必填 | 说明 |
|---|---|---|
| sourceType | 是 | provider、referrer 或 api,见「资金来源」。 |
| amountUsd | 是 | 单张面值(USD),1 到 1,000,000,最多两位小数。 |
| count | 否 | 张数,1 到 500,默认 1。 |
| label | 否 | 备注,最多 120 个字符,比如订单号或渠道名,可用于列表搜索。 |
| idempotencyKey | 是 | 幂等键,最多 100 个字符。也可以用 Idempotency-Key 请求头传。 |
/api/issuer/v1/codes礼品卡列表按生成时间倒序返回 { items, nextCursor }。列表不含兑换码原文,只有末 4 位 codeHint;已兑换的礼品卡带脱敏后的兑换者邮箱 redeemedByMaskedEmail。
| 参数 | 必填 | 说明 |
|---|---|---|
| status | 否 | active、voiding、voided、redeemed 或 frozen。 |
| sourceType | 否 | 按资金来源筛选。 |
| batchId | 否 | 只看某个批次。 |
| search | 否 | 按备注或兑换码末 4 位搜索。 |
| code | 否 | 完整兑换码,精确查找,用于处理买家纠纷。 |
| cursor | 否 | 上一页返回的 nextCursor。 |
| limit | 否 | 每页条数,默认 50,最大 200。 |
/api/issuer/v1/codes/:id礼品卡详情返回单张礼品卡,包含兑换码原文 code 和兑换链接 redeemUrl。每次读取原文都会写审计记录。
/api/issuer/v1/codes/:id/void作废礼品卡只能作废未兑换(active)的礼品卡。作废后立即不能兑换,72 小时后面值退回原资金来源。礼品卡不存在或不是未兑换状态时返回 issued_credit_not_found。
/api/issuer/v1/codes/:id/void/cancel撤销作废在 72 小时冷却期内撤销作废,礼品卡恢复为未兑换。不在作废中时返回 issued_credit_not_voiding。
/api/issuer/v1/direct-topups直充不生成兑换码,直接把金额充进对方的 API 额度,对方会收到通知。返回 { direct, replayed }。
| 参数 | 必填 | 说明 |
|---|---|---|
| sourceType | 是 | provider 或 referrer。API 额度来源不支持直充。 |
| recipientIdentifier | 是 | 对方的收款码(PAY-XXXX-XXXX)或注册邮箱。不能是自己。 |
| amountUsd | 是 | 金额(USD),1 到 1,000,000,最多两位小数。 |
| label | 否 | 备注,最多 120 个字符。 |
| idempotencyKey | 是 | 幂等键,最多 100 个字符。也可以用 Idempotency-Key 请求头传。 |
资金来源link
| sourceType | 资金来源 | 说明 |
|---|---|---|
| provider | Provider 收益 | 你作为 Provider 的可提现收益。需要已有 Provider 账号,且结算未被冻结。 |
| referrer | 返佣 | 邀请返佣的可提现余额。 |
| api | API 额度 | 只能生成礼品卡,不能直充。只对符合条件的账号开放:每一笔 API 额度都来自链上充值,或来自你自己的 Provider 收益、返佣转入。是否可用看 balance 返回的 api.enabled 和 api.eligible。 |
幂等键link
- 生成礼品卡和直充都必须带幂等键。推荐直接用你的订单号。
- 幂等键在整个账号内唯一,网页操作和发行 API 共用,不区分是哪把令牌发起的。
- 同一个键重复请求、参数也相同时,不会再扣款,直接返回第一次的结果,replayed 为 true;生成礼品卡的重放会再次返回同一批兑换码。
- 同一个键但参数不同(sourceType、amountUsd、count,直充还有收款人)时,返回 409 idempotency_key_conflict。
- 网络超时或返回 5xx 时,用同一个键重试即可,不会重复扣款。
礼品卡状态与作废link
| status | 含义 |
|---|---|
| active | 未兑换,可以兑换。 |
| redeemed | 已兑换,面值已进入兑换者的 API 额度。 |
| voiding | 作废中,已不能兑换;72 小时冷却期内可以撤销作废。 |
| voided | 已作废,面值已退回原资金来源。 |
| frozen | 已被平台冻结,不能兑换,也不能由你作废。如有疑问请联系客服。 |
- 面值在生成时就已扣除。active、voiding、redeemed、frozen 状态都算已扣款,只有 voided 时才回到余额。
- 已经卖出或送出的礼品卡,作废后对方将无法兑换。
- 冷却期满后的退款由平台自动结算,退回时会发站内通知;调用 balance 也会顺带结算到期的作废。
错误码link
错误响应的格式是 { "error": { "code": "…", "message": "…", "type": "invalid_request_error" } }。请按 code 判断,不要按 message 文本判断。
| code | HTTP | 含义与处理 |
|---|---|---|
| invalid_issuer_token | 401 | 没有带令牌、格式不对、令牌不存在或已吊销。 |
| issuer_token_ip_not_allowed | 403 | 请求来源 IP 不在这把令牌的 IP 白名单里。 |
| issuer_token_daily_limit_exceeded | 429 | 这把令牌今天(UTC)生成礼品卡和直充的总额会超过它的每日额度上限。 |
| rate_limited | 429 | 请求过于频繁,稍后用同一个幂等键重试。 |
| issued_credits_disabled | 403 | 平台暂停了新的发行。已发出的礼品卡照常可兑换,查询、作废和撤销作废照常可用。 |
| issuer_not_eligible | 403 | 当前账号不能发行礼品卡。 |
| invalid_source_type | 400 | sourceType 不是 provider、referrer 或 api。 |
| invalid_amount | 400 | 金额不在 1 到 1,000,000 之间,或超过两位小数。 |
| invalid_count | 400 | 张数不是 1 到 500 之间的整数。 |
| invalid_label | 400 | 备注不是字符串,或超过 120 个字符。 |
| invalid_idempotency_key | 400 | 没有带幂等键,或超过 100 个字符。 |
| insufficient_withdrawable_balance | 400 | Provider 收益或返佣的可提现余额不足。 |
| insufficient_balance | 400 | API 额度不足。 |
| api_source_not_eligible | 403 | 账号不符合用 API 额度发卡的条件,原因见 balance 返回的 api.disqualifiedBy。 |
| api_source_direct_not_supported | 400 | API 额度来源不能直充。 |
| provider_profile_not_found | 404 | 选了 provider 来源,但账号还没有 Provider 账号。 |
| provider_settlement_frozen | 403 | Provider 结算已冻结,不能用 Provider 收益发行。 |
| withdrawable_balance_mismatch | 409 | 余额核对异常,请联系客服。 |
| recipient_required | 400 | 直充没有填收款人。 |
| recipient_not_found | 404 | 找不到这个收款码或邮箱对应的账号。 |
| recipient_not_eligible | 403 | 对方账号暂时不能收款。 |
| cannot_transfer_to_self | 400 | 不能直充给自己。 |
| idempotency_key_conflict | 409 | 同一个幂等键已经用于参数不同的请求。 |
| issued_credit_not_found | 404 | 礼品卡不存在、不属于你,或(作废时)不是未兑换状态。 |
| issued_credit_not_voiding | 409 | 礼品卡不在作废中,或冷却期已过,不能撤销作废。 |
| code_generation_failed | 503 | 生成兑换码暂时失败,没有扣款。用同一个幂等键重试。 |
限制与安全link
- 生成礼品卡和直充:每个账号每分钟最多 60 次(网页和发行 API 合计)。
- 读取礼品卡详情(含原文):每个账号每分钟最多 120 次。
- 每批最多 500 张;单张面值 1 到 1,000,000 USD。
- 每个账号最多同时有 20 把未吊销的发卡令牌;每把令牌的 IP 白名单最多 20 个 IP。
安全建议
- 令牌只放在服务端(发卡平台后台或你的服务器),不要写进网页前端、App 或公开仓库。
- 有固定出口 IP 的,设置 IP 白名单。白名单按单个 IP 精确匹配,不支持网段。
- 设置每日额度上限,限制令牌泄露时的损失。额度按 UTC 自然日统计,生成礼品卡和直充合计。
- 修改密码或退出所有会话后,发卡令牌仍然有效。怀疑泄露时,请在「发卡令牌」标签页手动吊销,吊销后立即失效。
- 「发卡令牌」标签页会显示每把令牌最近一次使用的时间和 IP,可以定期检查。