Empezar · 04
Sandbox
El sandbox es un entorno aparte para integrar sin datos reales y sin dinero real. Tiene la misma API que producción; cambian la base, las llaves y los datos de las fuentes.
Base del sandbox
https://api-sandbox.revisame.mx
Llaves
Empiezan con rab_test_…. Revísame te las entrega por un canal separado; no funcionan en producción, ni las de producción aquí.
Fuentes
Simuladas: devuelven datos ficticios según el escenario. El motor que clasifica los datos es el real.
Saldo
Ficticio. Lo que ves en GET /v1/cuenta/consumo no es dinero y no se factura.
Tiempo de respuesta
Cerca de 3 minutos por verificación, a propósito: imita la latencia real de las fuentes (1.5 a 3.7 min). Consulta con GET cada 10–15 s o espera el webhook; no reduzcas tus tiempos de espera por lo que veas aquí. NOEX y FALL cierran antes.
export RAB="https://api-sandbox.revisame.mx"
export RAB_LLAVE="rab_test_…" # la que te entregó Revísame
curl "$RAB/_salud"
Cómo elegir el escenario
Las fuentes simuladas eligen el escenario con las 4 primeras letras de la CURP. Cualquier otra combinación se trata como el escenario «Todo en orden». Las CURPs de esta tabla tienen la forma oficial de 18 posiciones, así que pasan la validación de la API, pero su dígito verificador es inválido a propósito: no pertenecen a nadie. Usa solo estas; nunca la CURP de una persona real.
| 4 primeras letras | CURP de ejemplo | Escenario | Qué devuelven las fuentes simuladas | Resultado habitual |
|---|---|---|---|---|
LIMP | LIMP900101HDFXXX00 | Todo en orden | Identidad válida y ninguna coincidencia en listas ni en la fuente judicial. | puede_continuar · nivel alto |
MARC | MARC900101HDFXXX00 | Juicios ya terminados | La fuente judicial reporta dos juicios ya terminados (uno civil y uno mercantil) a nombre de la persona, sin CURP ni otro dato que la identifique. | Varía: continuar_con_reservas · medio o no_continuar_todavia · bajo |
ROJF | ROJF900101HDFXXX00 | Juicio en curso | La fuente judicial reporta un juicio en curso a nombre de la persona, sin CURP ni otro dato que la identifique. | continuar_con_reservas · nivel medio |
ROJI | ROJI900101HDFXXX00 | CURP de otra persona | La CURP devuelve el nombre de otra persona: la validación del registro de población la marca no válida y la de la credencial para votar no coincide. | no_continuar_todavia · nivel bajo |
LERT | LERT900101HDFXXX00 | Aparece en listas | Coincidencias sintéticas, sin detalle, en listas internacionales (sanciones, personas políticamente expuestas y listas de vigilancia) y en el listado del SAT de operaciones inexistentes. | Varía: no_continuar_todavia · bajo o continuar_con_reservas · medio |
FALL | FALL900101HDFXXX00 | Falla del proveedor | La fuente simulada falla al entregar su reporte. | no_concluyente, sin cobro y sin webhook |
NOEX | NOEX900101HDFXXX00 | CURP que no existe | La consulta de la CURP responde que no existe. | no_concluyente, sin cobro y sin webhook |
La columna Resultado habitual es lo que el motor suele devolver para esos datos, no una garantía: el motor es el real. La API no usa colores de semáforo; responde una acción (accion) y qué tan sólido es el sustento (nivel), con la explicación de cada factor, por_que_este_nivel y siguientes_pasos.
Prueba completa
SOLICITUD=$(uuidgen | tr 'A-Z' 'a-z')
curl -X POST "$RAB/v1/verificaciones" \
-H "Authorization: Bearer $RAB_LLAVE" \
-H "Idempotency-Key: $SOLICITUD" \
-H "Content-Type: application/json" \
-d '{
"solicitud_id": "'"$SOLICITUD"'",
"solicitante": { "curp": "MARC900101HDFXXX00" },
"consentimiento": { "otorgado": true, "otorgado_en": "2026-09-23T10:00:00-06:00",
"version_aviso": "aviso-2026-09", "evidencia_id": "ev-prueba-001" }
}'
# → { "estado": "en_proceso", "verificacion_id": "…", … }
curl "$RAB/v1/verificaciones/$VERIFICACION_ID" -H "Authorization: Bearer $RAB_LLAVE"
Recorre los siete escenarios y comprueba que tu integración maneja emitida (con webhook) y no_concluyente (sin webhook, solo por consulta). Ver Ciclo de vida.
Qué no cambia respecto a producción
- Validaciones, códigos de error, idempotencia, consentimiento obligatorio y límites.
- Webhook firmado
verificacion.emitida, con el secreto de sandbox que te entrega Revísame. - En modo connect, usa PaymentIntents del modo de prueba de Stripe. Ver Cobro.