LEAPERone 文档

错误代码

了解常见的 LEAPERone API 错误代码、HTTP 状态响应、计费失败、速率限制、重试处理和客户端恢复方法。

所有 API 错误都会返回包含 error 对象的 JSON 响应体。请结合 HTTP 状态码和 error.code 字段判断错误原因。

错误响应格式

错误响应示例
{
  "error": {
    "message": "Rate limit exceeded. Please slow down.",
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded"
  }
}

错误代码参考

状态码含义处理方法
400请求错误检查请求体格式和必填字段。
401未授权检查 API 密钥是否有效,并确认已放入 Authorization 请求头。
402余额不足前往 Dashboard 充值。
404未找到检查端点 URL 和相关资源 ID。
410资源已失效资源已经过期,例如超过 30 天的图像生成任务。
429触发速率限制降低请求速度并实现退避重试。参阅速率限制
500服务器错误稍后重试。如果问题持续存在,请联系支持团队。

重试策略

并非所有错误都适合重试。可以参考下表:

状态码可重试?说明
400修正请求后再重试。
401修正 API 密钥或身份验证配置。
402充值后再重试。
404修正 URL 或资源 ID。
410资源已经永久失效。
429按照 Retry-After 请求头指定的时长等待。
500使用指数退避。

指数退避

对于可重试错误,请使用指数退避,避免给 API 造成过大压力:

使用指数退避重试
async function requestWithRetry(fn, maxRetries = 5) {
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    const response = await fn();

    if (response.ok) return response;

    // Only retry on 429 or 5xx
    if (response.status !== 429 && response.status < 500) {
      throw new Error(`Request failed with status ${response.status}`);
    }

    if (attempt < maxRetries) {
      const backoff = Math.min(1000 * 2 ** attempt, 30000);
      const jitter = Math.random() * 1000;
      await new Promise((r) => setTimeout(r, backoff + jitter));
    }
  }

  throw new Error("Max retries exceeded");
}

退避等待时间应始终加入随机抖动,避免大量客户端在同一时刻同时重试。