> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fraudeg.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Paso a producción

> Checklist antes de mandar tráfico live a /analyze

Antes de mandar tráfico real a `POST /v1/transactions/analyze` en
`https://api.fraudeg.com/api`, revisa estos puntos. El dashboard de producción es
`https://fraudeg.com`. Ver [Entornos](/entornos).

`/analyze/sandbox` **sigue existiendo** en la API de producción. Úsalo para una prueba
puntual contra el modelo maduro; el tráfico live va a `/analyze`, sin `/sandbox`.

### 1. Usa la API key de producción

Reemplaza cualquier key de pre-official-integration por la que generaste en
`https://fraudeg.com` (ver [Crear tu API key](/integrar/api-key)). Todo tráfico de
producción lleva esa key en `X-Api-Key`.

### 2. Maneja los 5 valores de `decision.type`

Tu integración necesita una rama para cada uno —
`APPROVE`, `CONDITIONAL_APPROVE`, `STEP_UP_AUTH`, `HOLD`, `BLOCK` — no solo para
`APPROVE`/`BLOCK`. Ver [Decisiones de transacción](/conceptos/decisiones).

### 3. Genera una `X-Idempotency-Key` real por transacción

En pruebas es común reusar la misma key. En producción, cada transacción real necesita la
suya (16 a 128 caracteres url-safe) — y un reintento de la **misma** transacción tiene que
reusar la **misma** key.

### 4. Maneja los dos `409` y el `422`

| Caso                                                | HTTP  | Qué hacer                                                                                                           |
| --------------------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------- |
| Petición **en vuelo** con esa `X-Idempotency-Key`   | `409` | Reintentar con backoff **y la misma clave**. `details` habla de *already in progress*                               |
| Respuesta guardada **ilegible** (contrato anterior) | `409` | Reintentar con una **clave nueva**. `details` habla de *can no longer be replayed*. La transacción ya está scoreada |
| Misma clave, payload distinto                       | `422` | No reintentes con la misma key: genera una key nueva por cada transacción distinta                                  |

No trates los dos `409` como el mismo caso. Ver [Idempotencia](/integrar/idempotencia).

Siguiente paso: [POST /analyze](/referencia/analyze).
