> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/sdk-web/componentes/selphid-documentos/eventos/maxattemptsexceeded.md).

# maxAttemptsExceeded

Se agotaron los intentos de captura permitidos.

## Detalles

Se emite cuando el usuario supera el número de intentos configurado en [maxAttempts](/sdks/sdk-web/componentes/selphid-documentos/propiedades/maxattempts.md).

**Evento:** `maxAttemptsExceeded`

**Tipo:** `FacephiSelphidWidgetCustomEvent<MaxAttemptsExceededEvent>` | `CustomEvent<MaxAttemptsExceededEvent>`

### Sintaxis

```typescript
selphid.addEventListener('maxAttemptsExceeded', onMaxAttemptsExceeded);
```

### Objeto recibido

El payload útil está en `event.detail.detail`:

* `eventType` (`string`): Tipo de evento emitido.
* `message` (`string`): Descripción breve del motivo por el que se agotaron los intentos.

## Descripción

Indica que el usuario ha consumido todos los intentos de captura permitidos y que el widget no va a reintentar el proceso. A diferencia de [extractionTimeout](/sdks/sdk-web/componentes/selphid-documentos/eventos/extractiontimeout.md), que se emite en cada intento expirado y permite reintentar, este evento marca el final del flujo de captura.

La integración debe decidir aquí cómo continuar: mostrar una vista de error propia, ofrecer un canal alternativo de verificación o cerrar el proceso.

### Consideraciones

Solo se emite si [maxAttempts](/sdks/sdk-web/componentes/selphid-documentos/propiedades/maxattempts.md) está configurado con un límite que el motor pueda agotar.

El payload útil está en `event.detail.detail` (ver [formato de eventos](/sdks/sdk-web/componentes/selphid-documentos/eventos.md#formato-de-los-eventos)).

El widget registra este caso en el tracking con estado `EXPIRED` y motivo `SELPHID_MAX_ATTEMPTS`. En flujos IDV el resultado se reporta con estado `RETRY_LIMIT_REACHED`, que lo diferencia de una captura expirada por tiempo. En esos flujos el SDK emite además el evento de workflow `maxAttempts` y no genera [emitError](/sdks/sdk-web/componentes/sdk-provider/eventos/emiterror.md), de modo que la integración muestre su propia pantalla de intentos agotados.

***

## Ejemplo

```jsx
<facephi-selphid-widget
    maxAttempts={3}
    onMaxAttemptsExceeded={(event) => {
      const { message } = event.detail.detail;
      console.log('Intentos agotados:', message);
      showRetriesExceededView();
    }}
/>
```

```typescript
import { type MaxAttemptsExceededEvent } from '@facephi/selphid-web-component';

selphid.addEventListener('maxAttemptsExceeded', (event: CustomEvent<MaxAttemptsExceededEvent>) => {
  const detail = event.detail.detail;
  console.log('maxAttemptsExceeded:', detail);
});
```
