礼品卡发行/发行 API 与发卡令牌

礼品卡发行 API

发卡令牌让你的发卡平台或脚本自动生成礼品卡、直充和作废,不用每次登录网页手动操作。

发卡令牌只能生成、查询、作废礼品卡和直充,不能调用模型。它和 API 页面上调用模型的 API Key 是两种东西,互不通用。只在网页上手动生成礼品卡,不需要创建发卡令牌。 前往礼品卡页面 →

本页内容expand_more

创建发卡令牌link

  1. 1

    打开发卡令牌标签页

    登录后进入「礼品卡与直充」页面,切到「发卡令牌」标签页,点「新建发卡令牌」。

  2. 2

    填写名称和可选限制

    名称最多 60 个字符,比如「发卡平台」。IP 白名单和每日额度上限都是可选的,留空表示不限。平台不设默认值,由你自己决定。

  3. 3

    立即保存令牌

    令牌以 wkt_ 开头,明文只显示这一次。丢失后只能吊销再新建。创建时会发站内通知和邮件。

Base URL
https://wokey.ai/api/issuer/v1
鉴权
每个请求都带 Authorization: Bearer wkt_…。网页登录会话不能调用这组接口,发卡令牌也不能调用其他任何接口。
请求与响应
请求体和响应都是 JSON。金额在响应里是保留两位小数的字符串(如 "10.00"),时间是 ISO 8601 UTC。

快速开始link

发卡平台每成交一单,就实时调用一次生成接口,count 设为 1,用订单号做幂等键。不需要提前囤码,同一个订单重复调用也只会生成一次。

cURL
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 开头。

GET/api/issuer/v1/balance查询余额

返回各资金来源的可提现余额:provider(没有 Provider 账号时为 null)、referrer,以及 api 来源的开关、是否符合条件和可用余额。查询时会顺带把已过 72 小时冷却期的作废礼品卡退回余额。

POST/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 请求头传。
GET/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。
GET/api/issuer/v1/codes/:id礼品卡详情

返回单张礼品卡,包含兑换码原文 code 和兑换链接 redeemUrl。每次读取原文都会写审计记录。

POST/api/issuer/v1/codes/:id/void作废礼品卡

只能作废未兑换(active)的礼品卡。作废后立即不能兑换,72 小时后面值退回原资金来源。礼品卡不存在或不是未兑换状态时返回 issued_credit_not_found。

POST/api/issuer/v1/codes/:id/void/cancel撤销作废

在 72 小时冷却期内撤销作废,礼品卡恢复为未兑换。不在作废中时返回 issued_credit_not_voiding。

POST/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资金来源说明
providerProvider 收益你作为 Provider 的可提现收益。需要已有 Provider 账号,且结算未被冻结。
referrer返佣邀请返佣的可提现余额。
apiAPI 额度只能生成礼品卡,不能直充。只对符合条件的账号开放:每一笔 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 文本判断。

codeHTTP含义与处理
invalid_issuer_token401没有带令牌、格式不对、令牌不存在或已吊销。
issuer_token_ip_not_allowed403请求来源 IP 不在这把令牌的 IP 白名单里。
issuer_token_daily_limit_exceeded429这把令牌今天(UTC)生成礼品卡和直充的总额会超过它的每日额度上限。
rate_limited429请求过于频繁,稍后用同一个幂等键重试。
issued_credits_disabled403平台暂停了新的发行。已发出的礼品卡照常可兑换,查询、作废和撤销作废照常可用。
issuer_not_eligible403当前账号不能发行礼品卡。
invalid_source_type400sourceType 不是 provider、referrer 或 api。
invalid_amount400金额不在 1 到 1,000,000 之间,或超过两位小数。
invalid_count400张数不是 1 到 500 之间的整数。
invalid_label400备注不是字符串,或超过 120 个字符。
invalid_idempotency_key400没有带幂等键,或超过 100 个字符。
insufficient_withdrawable_balance400Provider 收益或返佣的可提现余额不足。
insufficient_balance400API 额度不足。
api_source_not_eligible403账号不符合用 API 额度发卡的条件,原因见 balance 返回的 api.disqualifiedBy。
api_source_direct_not_supported400API 额度来源不能直充。
provider_profile_not_found404选了 provider 来源,但账号还没有 Provider 账号。
provider_settlement_frozen403Provider 结算已冻结,不能用 Provider 收益发行。
withdrawable_balance_mismatch409余额核对异常,请联系客服。
recipient_required400直充没有填收款人。
recipient_not_found404找不到这个收款码或邮箱对应的账号。
recipient_not_eligible403对方账号暂时不能收款。
cannot_transfer_to_self400不能直充给自己。
idempotency_key_conflict409同一个幂等键已经用于参数不同的请求。
issued_credit_not_found404礼品卡不存在、不属于你,或(作废时)不是未兑换状态。
issued_credit_not_voiding409礼品卡不在作废中,或冷却期已过,不能撤销作废。
code_generation_failed503生成兑换码暂时失败,没有扣款。用同一个幂等键重试。

限制与安全link

  • 生成礼品卡和直充:每个账号每分钟最多 60 次(网页和发行 API 合计)。
  • 读取礼品卡详情(含原文):每个账号每分钟最多 120 次。
  • 每批最多 500 张;单张面值 1 到 1,000,000 USD。
  • 每个账号最多同时有 20 把未吊销的发卡令牌;每把令牌的 IP 白名单最多 20 个 IP。

安全建议

  • 令牌只放在服务端(发卡平台后台或你的服务器),不要写进网页前端、App 或公开仓库。
  • 有固定出口 IP 的,设置 IP 白名单。白名单按单个 IP 精确匹配,不支持网段。
  • 设置每日额度上限,限制令牌泄露时的损失。额度按 UTC 自然日统计,生成礼品卡和直充合计。
  • 修改密码或退出所有会话后,发卡令牌仍然有效。怀疑泄露时,请在「发卡令牌」标签页手动吊销,吊销后立即失效。
  • 「发卡令牌」标签页会显示每把令牌最近一次使用的时间和 IP,可以定期检查。