---
title: 错误与重试
description: Human Plugin 的所有错误响应、哪些可以安全重试，以及如何重试创建请求。
canonical: https://developer.unico.io/zh-CN/human-plugin/api-reference/errors-and-retries
locale: zh-CN
generated_by: markdown-export
---

# 错误与重试

错误信封、完整的响应列表以及各自的处理方式。

## 信封

```json
{ "message": "MISSING_CLIENT_ID", "details": [] }
```

`message` 标识错误，`details` 通常为空。当流程拒绝请求时（例如图像无效），响应保持此信封，原因写在 `message` 和 `details` 中。参见[拒绝情形](/zh-CN/human-plugin/api-reference/create-process#flow-refusals)。

## 参考

| 状态 | `message` | 端点 | 是否重试？ |
| --- | --- | --- | --- |
| 400 | `INVALID_REQUEST` | create | 否。请修正请求 |
| 400 | `REQUEST_TOO_LARGE` | create | 否。请求体超过 2 MiB |
| 400 | `MISSING_<FIELD>` / `INVALID_<FIELD>` | create | 否。`<FIELD>` 是大写蛇形命名的字段名，例如 `MISSING_CREDENTIAL_VALUE` |
| 401 | 空（`""`） | create、selfie | 否。Unico 拒绝了访问密钥。请检查 `HUMAN_API_ACCESS_KEY` |
| 409 | `CORRELATION_ID_ALREADY_USED` | create | 否。已有其他流程使用该 `correlationId`。请使用新的 |
| 422 | `ATTRIBUTE_TYPE_NOT_SUPPORTED` | create | 否。请使用目录中的代码 |
| 4xx | 流程的 `message` | create | 否。该流程会被存储为失败 |
| 404 | `PROCESS_NOT_FOUND` | get、selfie | 否 |
| 404 | `SELFIE_NOT_FOUND` | selfie | 否。该流程没有可用的自拍 |
| 4xx | 拒绝的 `message` | selfie | 否 |
| 503 | `DATABASE_UNAVAILABLE` | 全部 | Create：见下文。Get 和 selfie：是 |
| 502 | `UPSTREAM_UNAVAILABLE` | 全部 | Create：见下文。Get 和 selfie：是 |
| 500 | `INTERNAL` | 全部 | Create：见下文 |

## 重试创建请求

每个被接受的创建请求都会启动一个带有新 `id` 的新流程，且每个 `correlationId` 只能使用一次：已被任何状态的流程使用过的 `correlationId` 会以 `409 CORRELATION_ID_ALREADY_USED` 拒绝。

- **400、409、422 及其他拒绝：** 请先修正请求再重新发送。
- **503 `DATABASE_UNAVAILABLE`：** 未存储也未处理任何内容。请使用相同的 `correlationId` 重试。
- **502 和 500：** 请求未得到确认。不要自动重试。如需再次尝试，请使用新的 `correlationId` 发送新的创建请求。

建议您的后端采用以下做法：

1. 在调用 Human Plugin 之前记录每次尝试，并以其 `correlationId` 为键。
2. 收到 `502` 或 `500` 时，根据您的业务规则决定是否发起新的尝试。
3. 在您的记录中将相关尝试关联起来。

## 重试读取请求

对流程或其自拍执行 `GET` 可以安全重试。请使用退避策略，并在收到 `404` 时停止。

## 速率限制

Human Plugin 没有内置的速率限制器。如有需要，请在您的网关处设置限制。