开发者
为公开 API 创建与撤销 Key。
管理端点、轮换签名 secret、查看送达日志。
按模型查看积分消耗与当前余额。
当前各模型的积分价格。
公开 API 的交互式文档。
验证 webhook 签名
X-GenStudio-Signature 头里**可能有多个** v1 值。secret 轮换的 24 小时宽限期内会有两个 —— 一个用新 secret 签、一个用旧的。请**逐一尝试、任一命中即通过**。只读取单个 v1 的实现会在整个轮换期拒掉每一封投递。
请拒绝 t 与当前时间相差超过 5 分钟的请求。签名的内容是 "{t}.{rawBody}" —— 时间戳在签名之内,改了它签名就对不上。
X-GenStudio-Signature: t=1785000000,v1=<hex>,v1=<hex>
X-GenStudio-Event: generation.succeeded
X-GenStudio-Delivery: <delivery id>
X-GenStudio-Event-Version: 1轮换签名密钥
POST /api/v1/me/webhook-endpoints/{id}/rotate-secret 会**一次性**返回新 secret。旧 secret 在宽限期内继续有效,好让你从容部署而不丢投递;具体时长在响应里给出。
**宽限期内轮换第二次会让最早那把 secret 立刻失效。**endpoint 只保留一把旧 secret,第二次轮换会把它覆盖掉。请等一次轮换部署完成之后再开始下一次。
endpoint 的要求
webhook URL 必须是 https 且端口为 443。若你自托管在别的端口,请在 443 上用反向代理终结 TLS,或使用 ngrok / Cloudflare Tunnel 这类隧道 —— 两者本就在 443 终结,本地联调无需改动。
轮换 secret 与重新发起归属验证**仅在站内可用**。两者都要求重新输入密码,而 API Key 持有者没有密码上下文。这是 MVP 的一次有意的范围划定,不是端点遗漏。
重试与去重
同一个事件最多投递 9 次,**至少**横跨 31 小时。请照这个跨度设你的去重窗口:同一个 X-GenStudio-Delivery id 在这段时间里可能到达多次。
按 X-GenStudio-Delivery 去重,不要按报文去重。同一事件的每一次重试共用同一个 delivery id,而签名**不同**(每次重试都用新的时间戳重新签)。
回任意 2xx 即算确认。其余情况——**包括响应体回得太慢**——都算这一次投递失败并会重试。用完次数之后这一封被判死,你可以从送达日志里手动重投。
错误码
asset_lost— 410download_timeout— 504endpoint_not_verified— 409forbidden— 403idempotency_key_reuse— 422insufficient_credits— 402insufficient_credits_on_fallback— 402internal_error— 500invalid_credentials— 401invalid_params— 422invalid_state— 422invite_invalid— 422job_stalled— 500job_stuck— 500maintenance— 503not_found— 404provider_auth_failed— 500rate_limited— 429reauth_required— 401submit_unknown— 500unauthorized— 401upload_too_large— 413upstream_error— 502upstream_rate_limited— 502upstream_rejected— 502upstream_timeout— 504upstream_unavailable— 502verification_failed— 422