Skip to Content
API 参考错误码

错误码

本文档列出智能采购平台 API 的所有错误码及其说明。

错误码格式

错误码由 5 位数字组成,格式为:XYZNN

  • X - 错误类别(4=客户端错误,5=服务端错误)
  • YZ - HTTP 状态码的后两位(如 01=401,04=404)
  • NN - 具体错误编号(01-99)

HTTP 状态码映射

HTTP 状态码说明错误码范围
400Bad Request40001-40099
401Unauthorized40101-40199
403Forbidden40301-40399
404Not Found40401-40499
409Conflict40901-40999
429Too Many Requests42901-42999
500Internal Server Error50001-50099
503Service Unavailable50301-50399

客户端错误(4xxxx)

400 Bad Request - 请求参数错误

错误码错误消息说明解决方案
40001请求参数错误请求参数格式或值不正确检查请求参数是否符合 API 文档规范
40002必填参数缺失缺少必填的请求参数补充缺失的必填参数
40003参数格式错误参数类型或格式不符合要求按照文档要求的格式传递参数
40004参数值超出范围参数值不在允许的范围内检查参数的最大/最小值限制
40005JSON 格式错误请求体不是有效的 JSON 格式确保请求体是有效的 JSON 字符串
40006请求体过大请求体大小超过限制(1MB)减小请求体大小或分批请求
40007URL 过长请求 URL 超过最大长度限制使用 POST 请求或减少查询参数
40008不支持的内容类型Content-Type 不支持使用 application/json
40009字段验证失败字段值不符合验证规则检查字段的验证规则(如正则表达式)

示例响应:

{ "code": 40001, "message": "请求参数错误", "data": { "field": "price", "reason": "价格必须大于0", "value": -100 } }

401 Unauthorized - 认证失败

错误码错误消息说明解决方案
40101签名验证失败HMAC 签名计算错误检查签名算法和参数顺序
40102时间戳过期请求时间戳与服务器时间相差超过 5 分钟同步本地时间或使用 NTP 服务
40103App ID 不存在提供的 App ID 无效确认 App ID 是否正确
40104App Secret 错误使用的密钥不正确确认 App Secret 是否正确
40105认证头缺失缺少必需的认证请求头添加 X-App-Id、X-Timestamp、X-Signature
40106时间戳格式错误时间戳不是有效的毫秒级时间戳使用 Date.now() 生成毫秒级时间戳
40107签名格式错误签名不是有效的十六进制字符串确保使用 hex 编码的签名

示例响应:

{ "code": 40101, "message": "签名验证失败", "data": { "reason": "签名计算错误,请检查签名算法", "expectedFormat": "HMAC-SHA256(secret, METHOD + PATH + TIMESTAMP + BODY)" } }

403 Forbidden - 权限不足

错误码错误消息说明解决方案
40301IP 不在白名单请求来源 IP 未配置白名单在控制台配置 IP 白名单
40302权限不足当前应用没有访问该资源的权限联系管理员分配相应权限
40303应用已禁用应用已被停用或删除联系管理员恢复应用
40304资源访问受限该资源不允许当前用户访问确认资源所有权或申请访问权限
40305操作不允许当前状态下不允许该操作检查资源状态是否允许该操作

示例响应:

{ "code": 40301, "message": "IP 不在白名单", "data": { "clientIp": "192.168.1.100", "reason": "请在控制台添加该 IP 到白名单" } }

404 Not Found - 资源不存在

错误码错误消息说明解决方案
40401资源不存在请求的资源 ID 不存在确认资源 ID 是否正确
40402接口不存在请求的 API 路径不存在检查 API 路径是否正确
40403用户不存在指定的用户 ID 不存在确认用户 ID 是否正确
40404意图不存在指定的采购意图不存在确认意图 ID 是否正确

示例响应:

{ "code": 40404, "message": "意图不存在", "data": { "intentId": "intent_123456", "reason": "该采购意图可能已被删除或 ID 错误" } }

409 Conflict - 资源冲突

错误码错误消息说明解决方案
40901资源已存在尝试创建已存在的资源使用更新接口或检查资源是否已创建
40902状态冲突资源当前状态不允许该操作检查资源状态后再执行操作
40903并发冲突资源被其他请求修改刷新资源状态后重试
40904版本冲突资源版本已更新获取最新版本后重试

示例响应:

{ "code": 40902, "message": "状态冲突", "data": { "intentId": "intent_123", "currentStatus": "COMPLETED", "reason": "已完成的意图不能被取消" } }

429 Too Many Requests - 请求频率超限

错误码错误消息说明解决方案
42901请求频率超限超过 QPS 限制降低请求频率或联系支持提升限额
42902并发请求过多同时进行的请求数超限控制并发请求数
42903配额已用尽API 调用配额已用完等待配额重置或升级套餐

示例响应:

{ "code": 42901, "message": "请求频率超限", "data": { "limit": 100, "current": 105, "retryAfter": 60, "resetTime": "2026-02-25T10:31:00Z" } }

重试建议:

async function retryWithBackoff(fn: () => Promise<Response>, maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { const response = await fn(); if (response.status === 429) { const retryAfter = parseInt(response.headers.get('Retry-After') || '60'); await sleep(retryAfter * 1000); continue; } return response; } throw new Error('Max retries exceeded'); }

服务端错误(5xxxx)

500 Internal Server Error - 服务器内部错误

错误码错误消息说明解决方案
50001服务器内部错误服务器处理请求时发生未知错误联系技术支持,提供 Request ID
50002数据库错误数据库操作失败稍后重试,如持续出现联系技术支持
50003第三方服务错误调用外部服务失败稍后重试
50004配置错误服务配置异常联系技术支持
50005数据处理错误数据处理过程中出错检查数据格式或联系技术支持

示例响应:

{ "code": 50001, "message": "服务器内部错误", "data": { "requestId": "req_1708851000000_abc123", "reason": "服务器处理请求时发生错误,请联系技术支持" } }

503 Service Unavailable - 服务不可用

错误码错误消息说明解决方案
50301服务暂时不可用服务正在维护或升级等待服务恢复,关注公告
50302服务过载服务器负载过高稍后重试
50303依赖服务不可用依赖的外部服务不可用等待服务恢复

示例响应:

{ "code": 50301, "message": "服务暂时不可用", "data": { "reason": "系统正在进行维护升级", "estimatedRecoveryTime": "2026-02-25T12:00:00Z", "retryAfter": 3600 } }

特定业务错误

采购意图相关错误

错误码错误消息说明解决方案
41001不支持的电商平台platform 字段值无效使用 TAOBAO、JD 或 PDD
41002商品 URL 无效productUrl 格式错误或无法访问提供有效的商品链接
41003价格异常商品价格超出合理范围检查价格是否正确
41004数量超限采购数量超过单次最大限制减少数量或分批采购
41005收货地址无效地址格式不正确或不支持配送提供有效的收货地址
41006手机号格式错误手机号不符合规范使用 11 位有效手机号
41007商品已下架商品链接对应的商品已下架更换其他商品
41008库存不足商品库存不足减少采购数量

示例响应:

{ "code": 41002, "message": "商品 URL 无效", "data": { "field": "productUrl", "value": "https://invalid-url", "reason": "无法访问该商品链接,请检查 URL 是否正确" } }

错误处理最佳实践

1. 错误重试策略

async function apiCallWithRetry<T>( fn: () => Promise<T>, options = { maxRetries: 3, backoffMs: 1000 } ): Promise<T> { const { maxRetries, backoffMs } = options; for (let i = 0; i < maxRetries; i++) { try { return await fn(); } catch (error) { const shouldRetry = error.code >= 50000 || // 服务器错误 error.code === 42901; // 频率限制 if (!shouldRetry || i === maxRetries - 1) { throw error; } // 指数退避 const delay = backoffMs * Math.pow(2, i); await sleep(delay); } } }

2. 错误日志记录

function logApiError(error: ApiError, requestContext: any) { console.error('API Error:', { code: error.code, message: error.message, requestId: error.data?.requestId, endpoint: requestContext.endpoint, method: requestContext.method, timestamp: new Date().toISOString(), }); }

3. 用户友好的错误提示

function getUserFriendlyMessage(errorCode: number): string { const messages: Record<number, string> = { 40001: '请检查输入的信息是否正确', 40101: '登录信息已过期,请重新登录', 40404: '未找到相关信息', 42901: '操作过于频繁,请稍后再试', 50001: '服务暂时不可用,请稍后再试', }; return messages[errorCode] || '操作失败,请稍后再试'; }

4. 错误监控和告警

interface ErrorMetrics { errorCode: number; count: number; lastOccurrence: Date; } class ErrorMonitor { private metrics = new Map<number, ErrorMetrics>(); track(errorCode: number) { const metric = this.metrics.get(errorCode) || { errorCode, count: 0, lastOccurrence: new Date() }; metric.count++; metric.lastOccurrence = new Date(); this.metrics.set(errorCode, metric); // 触发告警 if (metric.count > 100) { this.alert(`Error ${errorCode} occurred ${metric.count} times`); } } alert(message: string) { // 发送告警通知 console.warn('ALERT:', message); } }

获取帮助

如果您遇到无法解决的错误:

  1. 查看 Request ID:每个响应都包含 X-Request-Id 请求头,提供此 ID 可以帮助技术支持快速定位问题

  2. 检查 API 状态:访问 服务状态页面  查看是否有已知问题

  3. 联系技术支持

  4. 提供错误信息

    • 错误码和错误消息
    • Request ID
    • 请求时间
    • 请求参数(脱敏后)
    • 复现步骤

相关文档