Вход
Каждый пользователь сам выбирает способ входа: пароль или SMS-код. Поэтому вход начинается с вопроса к API, каким способом входит владелец номера, и только потом клиент показывает поле пароля или поле кода.
-
POST /v1/auth/login/startс номером телефона. В ответеmethod:passwordилиsms. -
Для
password—POST /v1/auth/loginс телефоном и паролем.Для
sms— код уже отправлен.POST /v1/auth/login/smsсchallengeIdи кодом. -
В обоих случаях ответ — пара токенов, см. Аутентификация.
Выбор способа входа
Заголовок раздела «Выбор способа входа»curl -X POST https://api.rekassa.uz/v1/auth/login/start \ -H 'Content-Type: application/json' \ -H 'Accept-Language: uz' \ -d '{"phone": "90 123 45 67"}'const response = await fetch('https://api.rekassa.uz/v1/auth/login/start', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept-Language': 'uz' }, body: JSON.stringify({ phone: '90 123 45 67' }),})const start = await response.json()if (start.method === 'password') { // показать поле пароля} else { // показать поле кода; start.challengeId, start.resendIn}Если пользователь входит по паролю:
{ "method": "password" }Если по SMS — код отправлен сразу, и ответ содержит его параметры:
{ "method": "sms", "challengeId": "c3a9e1d7-4b2f-4f8a-b6c0-1e5d7a9f2b48", "expiresIn": 300, "resendIn": 60}| Статус | Код | Когда |
|---|---|---|
400 |
validation_failed |
неверный формат телефона |
429 |
code_resend_too_soon |
предыдущий код отправлен меньше 60 секунд назад |
429 |
too_many_requests |
5 кодов за час на номер или 10 запросов в минуту с IP |
429 |
code_attempts_exceeded |
недавно код на этот номер ввели неверно 5 раз |
Вход по паролю
Заголовок раздела «Вход по паролю»| Поле | Тип | Описание |
|---|---|---|
phone |
string | номер телефона, см. Телефоны |
password |
string | пароль, 1–128 символов |
curl -X POST https://api.rekassa.uz/v1/auth/login \ -H 'Content-Type: application/json' \ -d '{"phone": "+998901234567", "password": "correct-horse-42"}'const response = await fetch('https://api.rekassa.uz/v1/auth/login', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', 'X-Client': 'web' }, body: JSON.stringify({ phone: '+998901234567', password: 'correct-horse-42' }),})const { accessToken, accessTokenExpiresIn } = await response.json(){ "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "accessTokenExpiresIn": 900, "refreshToken": "3f1c2d9e-6b7a-4c55-9a51-0d8e7f6a1b2c.kq3Vb8...", "refreshTokenExpiresAt": "2026-10-24T09:15:00.000Z"}Браузерный клиент с X-Client: web получает только accessToken и accessTokenExpiresIn,
refresh-токен — в куке rk_refresh.
| Статус | Код | Когда |
|---|---|---|
400 |
validation_failed |
неверный формат телефона или пустой пароль |
401 |
invalid_credentials |
неверный номер или пароль; также если номер не подтверждён или пользователь входит по SMS |
403 |
user_blocked |
пароль верный, но учётная запись заблокирована |
429 |
too_many_requests |
больше 10 попыток в минуту с одного IP |
Вход по SMS-коду
Заголовок раздела «Вход по SMS-коду»| Поле | Тип | Описание |
|---|---|---|
challengeId |
string (UUID) | из ответа /v1/auth/login/start |
code |
string | ровно 6 цифр из SMS |
curl -X POST https://api.rekassa.uz/v1/auth/login/sms \ -H 'Content-Type: application/json' \ -d '{"challengeId": "c3a9e1d7-4b2f-4f8a-b6c0-1e5d7a9f2b48", "code": "730165"}'const response = await fetch('https://api.rekassa.uz/v1/auth/login/sms', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', 'X-Client': 'web' }, body: JSON.stringify({ challengeId, code: '730165' }),})const { accessToken, accessTokenExpiresIn } = await response.json()Ответ — такой же, как у входа по паролю. Если код не пришёл, запросите новый через
POST /v1/auth/resend-code — в ответе
будет новый challengeId.
| Статус | Код | Когда |
|---|---|---|
400 |
validation_failed |
challengeId не UUID или код не из 6 цифр |
401 |
invalid_code |
код неверный, истёк или уже использован |
403 |
user_blocked |
учётную запись заблокировали после отправки кода |
429 |
code_attempts_exceeded |
код введён неверно 5 раз |
Сменить способ входа
Заголовок раздела «Сменить способ входа»Пользователь переключает способ входа в профиле: PATCH /v1/me с полем authMethod.
Перейти на пароль можно, только если пароль уже задан. См. Профиль и сессии.