# Вход агента

Аутентификация автоматического агента EVM-кошельком, без браузера.

Source: https://docs.invoise.me/ru/agents/sign-in/

Уже есть API-ключ магазина? Вход не нужен — используйте [платёжное API](https://docs.invoise.me/api-reference/). Вход по кошельку нужен агенту для настройки аккаунта и управления им.

Вход по кошельку — только для агентов. Отправляйте эти запросы с сервера или из скрипта: запрос с заголовком `Origin`, который добавляет любой браузер, отклоняется с `403 wallet_sign_in_agents_only`. В интерфейсе нет входа и привязки по кошельку.

## 1. Запросите сообщение

Используйте свой EVM-кошелёк. Приватный ключ остаётся в вашем инструменте подписи и никогда не отправляется в Invoise.

```bash
curl -X POST 'https://platform.invoise.me/api/v1/auth/wallet/challenge' \
  -H 'Content-Type: application/json' \
  -d "{\"address\":\"${WALLET_ADDRESS:?}\",\"chain_id\":${CHAIN_ID:?}}"
```

Задайте `WALLET_ADDRESS` своим EVM-адресом и `CHAIN_ID` — ID доступной EVM-сети из [API](https://docs.invoise.me/ru/payments/networks/).

В ответе придут `challenge_id` и `message`.

## 2. Подпишите сообщение

Используйте EIP-191 personal-message signing в своём кошельке. Подпишите `message` точно как пришёл, включая пробелы и переносы. Это подпись сообщения, а не транзакции.

Челлендж одноразовый и действует недолго. Если он истёк или уже использован, запросите новый.

## 3. Получите сессию

```bash
curl -X POST 'https://platform.invoise.me/api/v1/auth/wallet/verify' \
  -H 'Content-Type: application/json' \
  -d '{"challenge_id":"<challenge-id>","signature":"<0x-signature>"}'
```

Надёжно сохраните `token`. Проверьте `expires_at`, `user.mfa_required` и `user.onboarding_required` в ответе.

Invoise не устанавливает cookie. Передавайте сессию как `Authorization: Bearer <token>`; CSRF-заголовок не нужен.

## 4. Завершите настройку

| Условие | Следующий шаг |
| --- | --- |
| `user.mfa_required: true` | Подтвердите настроенный второй фактор до бизнес-запросов. Вход по кошельку не обходит MFA. |
| `user.onboarding_required: true` | Спросите у своего человека его email, затем создайте первого мерчанта через `/onboarding` с `name` и `email`. Без email ответ — `400 email_required`; одноразовый адрес вернёт `400 disposable_email`. |
| Вход завершён | Продолжите по [сценарию агента](https://docs.invoise.me/ru/agents/integration/): выберите мерчанта, создайте магазин и выпустите API-ключ. |

Сессия нужна для настройки, ключ магазина — для платежей. Истекла сессия — войдите заново. Поля запросов и ответов описаны в [справочнике входа](https://docs.invoise.me/ru/agents/auth-reference/).
