Login
POST
/api/mobile/login
○
Public
Выпустить токен по email + password
Принимает учётные данные пользователя, возвращает Sanctum-токен. Если включён 2FA — первый запрос вернёт
422 с флагом requires_2fa, повторите с two_factor_code.Request body
| Name | Type | Required | Description |
|---|---|---|---|
email
|
string
|
required | Email пользователя. |
password
|
string
|
required | Пароль. |
two_factor_code
|
string
|
optional |
6-значный TOTP-код. Передавайте, если в ответе первого запроса пришёл requires_2fa: true.
|
recovery_code
|
string
|
optional | Одноразовый recovery-код (10 символов). Альтернатива TOTP при утере телефона. |
device_name
|
string
|
optional | Имя устройства. Отображается в /api/mobile/sessions. |
remember
|
boolean
|
optional |
Если true — токен живёт 365 дней. Иначе 30 дней.
Default:
false |
Response
Responses
{
"data": {
"user": {
"id": "usr_5f8d7a3c-1234-4567-89ab-cdef01234567",
"email": "you@example.com",
"name": "Иван Петров",
"kyc_status": "approved",
"two_factor_enabled": true
},
"token": "1|aBcDeFgHiJkLmNoPqRsTuVwXyZ123456789",
"token_type": "Bearer",
"expires_at": "2026-06-26T14:23:00Z"
}
}
{
"message": "Two-factor authentication required.",
"error_code": "TWO_FACTOR_REQUIRED",
"requires_2fa": true
}
{
"message": "These credentials do not match our records.",
"errors": {
"email": ["These credentials do not match our records."]
},
"error_code": "INVALID_CREDENTIALS"
}
{
"message": "Account is frozen due to compliance review.",
"error_code": "ACCOUNT_FROZEN",
"support_email": "admin@fin-os.io"
}
Возможные ошибки
| Name | Type | Required | Description |
|---|---|---|---|
INVALID_CREDENTIALS
|
401
|
optional | Неверный email или пароль. Не указывайте в UI, какое именно поле ошибочно — защита от перебора. |
TWO_FACTOR_REQUIRED
|
422
|
optional | Аккаунт защищён 2FA. Запросите код у пользователя и повторите. |
ACCOUNT_FROZEN
|
423
|
optional | Compliance-hold. Связь — admin@fin-os.io. |
EMAIL_NOT_VERIFIED
|
403
|
optional | Требуется верификация email перед логином (опционально, включается админом). |
✦
Refresh-токенов нет
Sanctum использует «long-lived» bearer tokens. Если вам нужна стратегия обновления — храните дату из expires_at и за неделю до истечения попросите пользователя залогиниться повторно.