指南
正文上线清单
在真实用户依赖你的接入之前要检查的事:密钥、重试、Webhook、存储、费用和监控。
演示只需要一个请求,产品却要扛得住超时、重复的 Webhook、过期的链接,以及泄露的密钥。上线前把这份清单过一遍。
密钥
- 密钥放在服务器的密钥管理里,绝不放进浏览器或 App 安装包。
- 每个环境、每个服务各用一个密钥,可以单独吊销。
- 生产密钥只允许调用你用到的模型,并设置了每日消费上限。
- 你知道怎么不停机地轮换密钥(鉴权)。
创建任务
- 每次
createTask都带Idempotency-Key,从你自己的业务 ID 派生,只生成一次,每次重试都沿用。 - 只重试
429、500、503和50301,带退避并遵守Retry-After(错误码)。 -
400、40004这类「改请求才行」的错误会展示或记录下来,而不是重试。 - 如果要展示价格,先报价,再传入
quoteId和expectedCredits,并处理40901。 - 余额不足(
40201)会在用户察觉之前通知到人——告警、邮件或横幅都行。
获取结果
- 任务带了
callBackUrl;你的接收端会校验签名,并拒绝过期的时间戳。 - Webhook 处理程序会尽快返回
2xx,把工作放到后台做。 - 按
request_id忽略重复投递。 - 有定期任务去补读没收到 Webhook 的任务。
- 代码把
succeeded、failed、expired、canceled以外的任何状态都当作「还在运行」。
文件
- 完成的文件会复制到你自己的存储(或素材库),而不是直接引用大约 20 分钟后过期的签名链接。
- 你保存的是
taskId,不是签名链接。 - 下载代码不会把 API 密钥发给签名链接。
- 参考文件是直接指向文件的公开 HTTPS 链接、上传文件或素材——不是分享页。
费用
- 你清楚每个模型的计价单位(按张、按秒、按次),以及哪些设置会让价格变高。
- 预览和测试用最便宜的分辨率和最短的时长。
- 设置了消费上限,能在死循环花光余额之前把它挡住。
- 你会检查
credits和settled,而不是假定扣的就是预估金额。
监控
- 每次失败都记录
request_id、taskId、code和errorCode。 - 你会按模型观察
failed任务的比例;突然升高通常意味着提示词、输入或模型有变化。 - 你会按模型统计从
createTask到收到 Webhook 的耗时,并对异常值告警。 - 团队里有人知道 API 控制台的日志页和用量页在哪。
内容
PopNow 是面向大众的服务。模型有各自的内容规则,被拒绝的请求会以 content_rejected 失败。如果提示词由你的用户来写,请在你自己的界面里说明请求为什么被拒绝,并让他们修改,而不是直接甩出原始错误。

