Перейти к содержимому

Регистрация

Регистрация проходит в два шага: клиент отправляет данные, API присылает SMS-код на номер, клиент подтверждает код и сразу получает токены. Новый аккаунт получает роль «Пользователь» — доступ только к собственному аккаунту.

  1. Данные. POST /v1/auth/register сохраняет имя, фамилию, телефон и пароль и отправляет SMS-код. В ответе — challengeId.

  2. Код. Пользователь вводит 6 цифр из SMS. Если код не пришёл, запросите новый через POST /v1/auth/resend-code, когда истечёт resendIn.

  3. Подтверждение. POST /v1/auth/verify-phone с challengeId и кодом активирует аккаунт и возвращает токены — пользователь уже вошёл.

POST/v1/auth/register
Поле Тип Обязательное Ограничения
firstName string да 1–100 символов, пробелы по краям обрезаются
lastName string да 1–100 символов, пробелы по краям обрезаются
phone string да номер Узбекистана в любом привычном виде, см. Телефоны
password string да 8–128 символов
passwordConfirmation string да должно совпадать с password
Окно терминала
curl -X POST https://api.rekassa.uz/v1/auth/register \
-H 'Content-Type: application/json' \
-H 'Accept-Language: ru' \
-d '{
"firstName": "Азиз",
"lastName": "Каримов",
"phone": "+998 90 123 45 67",
"password": "correct-horse-42",
"passwordConfirmation": "correct-horse-42"
}'

Ответ 200:

{
"challengeId": "5b0d7f3e-91c2-4a6b-8e14-2f7c9d0a3b56",
"expiresIn": 300,
"resendIn": 60
}
Поле Описание
challengeId идентификатор отправленного кода, нужен на шаге 3
expiresIn через сколько секунд код истечёт
resendIn через сколько секунд можно запросить новый код

SMS приходит на языке из Accept-Language, например: «reKassa: код подтверждения регистрации 482913. Никому не сообщайте его.»

Статус Код Когда
400 validation_failed поле не заполнено, неверный телефон, пароль короче 8 символов, пароли не совпадают (details.errors[].message = password_mismatch)
409 phone_taken номер уже зарегистрирован
429 code_resend_too_soon предыдущий код на этот номер отправлен меньше 60 секунд назад
429 too_many_requests 5 кодов за час на номер или 10 запросов в минуту с IP
429 code_attempts_exceeded недавно код на этот номер ввели неверно 5 раз
POST/v1/auth/resend-code

Отправляет новый код для того же сценария, к которому относится challengeId. Метод общий для регистрации, входа по SMS и восстановления пароля.

Окно терминала
curl -X POST https://api.rekassa.uz/v1/auth/resend-code \
-H 'Content-Type: application/json' \
-d '{"challengeId": "5b0d7f3e-91c2-4a6b-8e14-2f7c9d0a3b56"}'
{
"challengeId": "a8e2c4f1-3d6b-4e70-9b25-7c1f0e8d2a94",
"expiresIn": 300,
"resendIn": 60
}

Отправлять новый код можно не чаще раза в 60 секунд и не больше 5 раз в час — см. Лимиты.

POST/v1/auth/verify-phone
Поле Тип Описание
challengeId string (UUID) из ответа шага 1 или 2
code string ровно 6 цифр из SMS
Окно терминала
curl -X POST https://api.rekassa.uz/v1/auth/verify-phone \
-H 'Content-Type: application/json' \
-d '{"challengeId": "a8e2c4f1-3d6b-4e70-9b25-7c1f0e8d2a94", "code": "482913"}'
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"accessTokenExpiresIn": 900,
"refreshToken": "3f1c2d9e-6b7a-4c55-9a51-0d8e7f6a1b2c.kq3Vb8...",
"refreshTokenExpiresAt": "2026-10-24T09:15:00.000Z"
}

После подтверждения аккаунт активен, пользователю назначена роль «Пользователь», создана сессия. Как обращаться с токенами — в разделе Аутентификация.

Статус Код Когда
400 validation_failed challengeId не UUID или код не из 6 цифр
401 invalid_code код неверный, истёк или уже использован
429 code_attempts_exceeded код введён неверно 5 раз; запросите новый через 15 минут