# Verificar el código (https://docs.loybox.com.ar/api-reference/autenticacion/verificar-codigo)



<Endpoint method="POST" path="/v1/auth/otp/verify" auth="none" />

Valida el código enviado por email y devuelve los tokens de sesión del usuario
final.

Si el email no tenía cuenta, **la crea**. En ambos casos deja al usuario adherido
al programa del comercio indicado en `X-Commerce-Id`.

El `access` que devuelve es el que se usa como `Authorization: Bearer {access}`
en todos los endpoints de [Mi cuenta](https://docs.loybox.com.ar/api-reference/mi-cuenta).

## Headers [#headers]

<Fields>
  <Field name="X-Commerce-Id" type="integer" location="header" required="true">
    Id del comercio que integra la API. Todas las respuestas quedan limitadas a
    este comercio.
  </Field>
</Fields>

## Cuerpo [#cuerpo]

<Fields>
  <Field name="email" type="string" required="true">
    El mismo email con el que se
    [pidió el código](https://docs.loybox.com.ar/api-reference/autenticacion/pedir-codigo).
  </Field>

  <Field name="otp" type="string" required="true">
    Código de 6 dígitos recibido por email. Exactamente 6 caracteres.
  </Field>
</Fields>

## Respuesta [#respuesta]

Un objeto [Sesión](https://docs.loybox.com.ar/api-reference/objetos#sesión).

```bash
curl -X POST https://loybox-public-api-752998171300.southamerica-west1.run.app/v1/auth/otp/verify \
  -H "X-Commerce-Id: 87" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "ana@example.com",
    "otp": "418302"
  }'
```

```json
// 200 OK
{
  "access": "eyJhbGciOiJIUzI1NiIs...",
  "refresh": "eyJhbGciOiJIUzI1NiIs...",
  "expires_in": 3600,
  "user_id": 4821,
  "username": "Ana Pérez",
  "email": "ana@example.com",
  "phone": null
}
```

Guardá los dos tokens. El `access` vence a los `expires_in` segundos; el
`refresh` es el que después sirve para
[renovarlo](https://docs.loybox.com.ar/api-reference/autenticacion/renovar-token) sin volver a pedirle un
código al usuario.

<Callout type="info" title="Verificar ya adhiere al usuario">
  No hace falta llamar a
  [adherirme al programa](https://docs.loybox.com.ar/api-reference/mi-cuenta/adherirme) después de esto: el
  usuario ya queda adherido. Ese endpoint es para volver a adherirse después de
  una baja.
</Callout>

## Errores [#errores]

| Código | Cuándo                                                    |
| ------ | --------------------------------------------------------- |
| `400`  | El código es inválido o venció.                           |
| `422`  | Falta el header `X-Commerce-Id`, o el cuerpo es inválido. |

Después de 5 intentos fallidos el código deja de servir y hay que
[pedir uno nuevo](https://docs.loybox.com.ar/api-reference/autenticacion/pedir-codigo).
