WaveSpeed API 认证与错误处理:像专业人士一样修复 401、429、5xx

WaveSpeed API 认证与错误处理:像专业人士一样修复 401、429、5xx

你好,我是 Dora——我破解 API 只是为了好玩,这样你就不用了。

上周我一直收到 401 错误。不是神秘的那种——是很蠢的那种,你知道哪里出错了但看不到问题所在。结果我一直在 headers 中使用 X-API-KeyWaveSpeed 要求使用 Authorization: Bearer。小差别。两小时白费了。

这就是 API 认证的特点——当它正确时静默运行,当它错误时大声失败。WaveSpeed 和大多数现代 API 一样,不会给你太多犯错的空间。这是我过去几个月使用 WaveSpeed 的 API 进行图像和视频生成所学到的——当事情出错时真正有帮助的东西。


WaveSpeed API 认证实际工作原理

WaveSpeed 使用持有者令牌认证。每个请求都需要:

  • Authorization: Bearer <YOUR_API_KEY>
  • Content-Type: application/json

格式很简单:

Authorization: Bearer your_api_key_here
Content-Type: application/json

我见过人们尝试 X-API-Key、Api-Key,或者用引号包装它。WaveSpeed 的官方文档和示例始终显示持有者令牌格式。就是这样。没有变化。

获取你的 API 密钥

你的 API 密钥位于 WaveSpeed 仪表板的 wavespeed.ai/accesskey。你需要先充值账户才能生成一个——免费层用户没有密钥。 复制密钥时,注意多余的空格。我做过两次——在末尾抓住一个空格,花了 20 分钟调试才发现。

WaveSpeed API 的认证流程

没有令牌刷新,没有 OAuth,没有中间步骤。你发送持有者令牌,WaveSpeed 验证它,你的请求要么继续,要么被 401 拒绝。 如果认证失败,你会立即收到 401 响应。错误通常说”认证无效”并告诉你验证你的密钥。

处理 401 未授权错误

来自 WaveSpeed 的 401 意味着它查看了你的 Authorization header 并说”我不认识这个”。

常见原因检查表

常见的嫌疑人:

  • 错误的 header 格式(未使用 Authorization: Bearer)
  • API 密钥复制时带有尾部空格或换行符
  • 密钥在仪表板中重新生成,但旧密钥仍在代码中
  • 环境变量未加载
  • 没有账户充值——没有添加余额就不会生成密钥

快速修复

当我收到 401 时,我从这里开始: 首先,记录确切的 header。不是我认为我在发送的——是实际在 HTTP 请求中的内容。通常持有者令牌格式错误或 header 名称略有偏差。 其次,从仪表板重新复制密钥。在将其放入代码之前,使用 curl 立即测试它:

curl -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-dev" \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "test"}'

如果 curl 工作,问题出在我的应用程序代码中。如果 curl 失败,密钥本身是错误的。 第三,检查账户余额。WaveSpeed 运营基于信用的模型——如果你的余额达到零,API 调用可能会失败。

管理 429 速率限制响应

WaveSpeed 的速率限制分层:青铜(基本限制,$100 充值)、白银(更高并发,$1,000 充值)和黄金(自定义,$10,000+)。每个层级有不同的吞吐量和并发任务限制。

具体的数字没有在官方文档中公开,但模式很清楚:发送过多请求太快,就会得到 429。


了解速率限制

根据常见问题解答,示例限制包括青铜每分钟 10 张图像 / 5 个视频,最多 3 个并发任务;白银每分钟 500 张图像 / 60 个视频,最多 100 个并发;**黄金每分钟 2000 张图像 / 120 个视频,最多 200 个并发。

如果你收到**“请求过多”**错误,你可能是触到了你层级的限制。为了防止限流,考虑升级你的计划。


重试的指数退避策略

当我收到 429 时,我在重试前等待。不是立即——那样只会让我再得到一个 429。我使用指数退避:

  • 第一次重试:等待1 秒
  • 第二次重试:等待2 秒
  • 第三次重试:等待4 秒
  • 三次尝试后,停止并记录失败

许多 API 包含一个重试后 header 告诉你确切要等多长时间。检查它并在可用时使用该值。


设计客户端请求队列

对于批量操作——比如批量生成 100 张图像——我添加了一个尊重我的层级限制的队列:

  • 追踪我在当前时间窗口中发送的请求数
  • 一旦我接近限制(比如,接近我层级吞吐量的 90%),暂停新请求
  • 当时间窗口重置时恢复

这在 429 发生之前阻止了大多数。当多个进程同时运行时我仍然偶尔会得到它们,但重试逻辑处理这些。


处理 5xx 服务器错误

服务器错误是不同的。401 或 429 是我做错了什么。来自 WaveSpeed 的 500 或 503 意味着他们那边出了问题。


安全的重试模式

对于 5xx 错误,重试是安全的——大多数服务器错误在几秒内解决。来自 Microsoft 的文档 的一个好模式是立即重试一次以防它是一个瞬间错误,然后如果它继续就回到指数退避。

我的方法:

  • 立即重试一次(也许它只是一个打嗝)
  • 如果失败,使用与 429 相同的指数退避
  • 限制在总共三次重试
  • 记录失败并继续

对于获取请求(检查生成状态),重试总是安全的。 对于发布请求(启动新生成),我更谨慎——我不想意外启动同一个工作两次。


有效配置超时

我设置两个超时:

  • 连接超时: 5 秒
  • 读超时: 30 秒

WaveSpeed 针对图像目标”不到 2 秒”,针对视频”大约 2 分钟”,尽管实际时间取决于模型、分辨率和负载。

大多数图像生成在5 秒内完成。视频花费更长时间——有时60-90 秒。但我见过甚至图像20+ 秒的偶发峰值

没有超时,慢请求可能无限期挂起。有了超时,我得到一个干净的错误并可以重试。


WaveSpeed API 的日志记录与可观测性

一旦认证和错误处理工作,我需要知道它们一直保持工作。

记录什么

对于每个 WaveSpeed API 调用,我记录:

  • 被调用的模型端点
  • HTTP 状态代码
  • 响应时间(毫秒)
  • 它是否是重试,以及哪个尝试号

当联系 WaveSpeed 支持关于失败的请求时,他们要求工作 ID 和时间戳。将这些保存在你的日志中以便调试。


警报阈值

我为以下设置警报:

  • 401 错误率超过 1%(认证已中断)
  • 429 错误率超过 5%(持续触到速率限制)
  • 任何 5xx 错误(应该很少见)
  • 平均响应时间超过 10 秒(潜在性能问题)

这些不是通用阈值——它们对我的使用有意义。重要的是有一些阈值在用户注意之前触发调查。


WaveSpeed API 认证生产检查清单

上线前:

  • API 密钥存储在环境变量中,不在代码中
  • 正确使用 Authorization: Bearer 格式
  • Content-Type header 设置为 application/json
  • 429 和 5xx 的重试逻辑带指数退避
  • 配置的超时(5 秒连接,30 秒读)
  • 日志记录包括状态代码、响应时间、工作 ID
  • 设置了错误率峰值警报
  • 客户端速率限制以保持在层级限制内
  • 集成了余额监控来追踪信用使用

我仍然在流量峰值期间偶尔收到 429。上个月 WaveSpeed 出现短暂问题时我看到了一些 5xx 错误。但使用这个设置,那些错误不会级联。

认证大多数时候通过有效运行而工作。努力投入处理它不工作的时候——干净地、可预测地、不会因为信用余额达到零而在凌晨 2 点把我吵醒。

💡 遇到问题? 在评论中发布错误代码 + 请求 ID,我们会指导你通过故障排除检查清单来帮助识别根本原因。

**提示:大多数错误是客户端的且可控制的(headers、API 密钥、速率限制),但这个过程也帮你发现需要 WaveSpeed 支持 的问题。