# Inicio de sesión de agentes

Autentica un agente automatizado con una billetera EVM, sin navegador.

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

¿Ya tienes una clave de API de tienda? Omite el inicio de sesión y usa la [API de pagos](https://docs.invoise.me/api-reference/). Un agente solo necesita el inicio de sesión con billetera cuando debe configurar o administrar una cuenta.

El inicio de sesión con billetera es solo para agentes. Envía estas solicitudes desde un servidor o script: una solicitud con cabecera `Origin`, que añade todo navegador, se rechaza con `403 wallet_sign_in_agents_only`. El panel no ofrece inicio de sesión con billetera ni vinculación de billetera.

## 1. Solicita un mensaje

Usa una billetera EVM que controles. Su clave privada permanece en tu herramienta de firma y nunca se envía a 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:?}}"
```

Define `WALLET_ADDRESS` con tu dirección EVM y `CHAIN_ID` con un ID de red EVM disponible, obtenido de la [API](https://docs.invoise.me/es/payments/networks/). La respuesta contiene `challenge_id` y `message`.

## 2. Firma el mensaje devuelto

Usa el método de firma de mensaje personal EIP-191 de tu billetera. Firma `message` exactamente tal como se recibió, incluidos los espacios en blanco. Esto es una firma de mensaje, no una transacción.

El desafío es de corta duración y de un solo uso. Si caduca o se consume, solicita uno nuevo.

## 3. Intercambia la firma por una sesión

```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>"}'
```

Guarda `token` de forma segura y comprueba `expires_at`, `user.mfa_required` y `user.onboarding_required` en la respuesta.

Invoise no establece ninguna cookie. Envía la sesión en `Authorization: Bearer <token>`; no necesita cabecera CSRF.

## 4. Completa la configuración

| Condición | Siguiente paso |
| --- | --- |
| `user.mfa_required: true` | Completa el segundo factor configurado antes de las solicitudes de negocio. El inicio de sesión con billetera no evita el MFA. |
| `user.onboarding_required: true` | Pídele a tu humano su correo, y luego crea el primer comercio mediante `/onboarding` con `name` y `email`. Sin el correo, la respuesta es `400 email_required`; una dirección desechable devuelve `400 disposable_email`. |
| Inicio de sesión completo | Continúa con el [flujo del agente](https://docs.invoise.me/es/agents/integration/) para elegir un comercio, crear una tienda y emitir una clave de API de tienda. |

Usa la sesión para la configuración y la clave de API con alcance limitado para el trabajo de pagos. Si una sesión caduca, autentícate de nuevo. Consulta la [referencia de autenticación](https://docs.invoise.me/es/agents/auth-reference/) para ver los campos de solicitud y respuesta.
