External IDs, повторы, конфликты и ошибки
external_user_id, external_project_id и external_request_id делают создание идемпотентным: повтор возвращает уже созданный объект. Конфликты — 409 already_exists, ошибки данных — 400 validation_error.
Внешние идентификаторы
- Повтор
POST /usersс тем жеexternal_user_idвернёт того же пользователя ("created": false) и не начислит бонус повторно. - Повтор
POST /projectsс тем жеexternal_project_idвернёт тот же проект. - Повтор
POST /projects/{id}/manual-briefsс тем жеexternal_request_idвернёт тот же бриф с текущим статусом.
Дополнительно можно передавать заголовок Idempotency-Key: <уникальный ключ запроса>.
Повторы при сбоях сети
Если ответ не получен, повторите тот же запрос с теми же внешними ID — дублей не будет. Не генерируйте новый external_request_id для повтора одного и того же заказа.
Ошибки
{"ok": false, "error": "validation_error", "detail": "…"}
| HTTP | error | Когда |
|---|---|---|
| 400 | validation_error | Некорректные данные, небезопасный redirect_path. |
| 400 | invalid_referral_code | Реферальный код не найден или не может быть применён. |
| 401 | invalid_partner_key | Неверный или отсутствующий X-Partner-Key. |
| 403 | forbidden | Объект не принадлежит партнёру. |
| 404 | not_found | Объект не найден. |
| 409 | already_exists | Почта занята несвязанным аккаунтом; внешний ID уже связан иначе; external_request_id принадлежит другому проекту. |
| 429 | rate_limit_exceeded | Слишком много запросов. |
| 500 | internal_error | Внутренняя ошибка — повторите позже. |
Не нашли ответ? Напишите в поддержку из панели — укажите проект и что вы видите на экране.