Modo de prueba (dry run)
Valida tu integración y averigua qué haría la API sin escribir nada en tu CRM.
Para qué sirve
Con la cabecera X-Zevra-Dry-Run: true, la API hace todo el trabajo menos el último paso: valida el cuerpo, comprueba la llave, resuelve la propiedad, busca si el teléfono ya existe en tu CRM, y te cuenta lo que habría hecho. No crea ni modifica ningún lead. Es la forma de probar tu integración con datos reales, incluidos los teléfonos de tu equipo, sin ensuciar el pipeline.
curl -X POST https://api.zevra.co/v1/leads \
-H "Authorization: Bearer zvr_live_TU_LLAVE" \
-H "Content-Type: application/json" \
-H "X-Zevra-Dry-Run: true" \
-d '{
"nombre": "Ana Ruiz",
"telefono": "+52 55 0000 0001",
"propiedad": { "codigo": "ZVR-0123" },
"extras": { "origen_formulario": "landing-casas" }
}'La respuesta
Siempre es 200 con "status": "dry_run":
{
"status": "dry_run",
"would": "enrich",
"would_match": {
"lead_id": "315f3db3-8a1c-4e2b-9f7d-6c5a4b3e2d1f",
"matched_on": "telefono"
},
"resolved": {
"organizacion": "Inmobiliaria Ejemplo",
"origen": "Formulario del sitio",
"development_id": "c1a2b3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"nombre": "Ana Ruiz",
"telefono": "+525500000001",
"email": null,
"extras": { "origen_formulario": "landing-casas" }
},
"request_id": "req_4f1c9a2b7d3e8c5a6b0f1e2d"
}| Campo | Qué te dice |
|---|---|
would | "create" si la solicitud real crearía un lead nuevo; "enrich" si enriquecería uno que ya existe. |
would_match | El lead que se enriquecería (lead_id y el campo por el que se encontró, hoy siempre "telefono"), o null cuando would es "create". |
resolved | Cómo interpretó la API tu solicitud: el nombre de tu organización, el origen (la llave) que reconoció, el development_id de la propiedad que encontró, el teléfono normalizado y los extras tal como se guardarían. |
Si algo no cuadra (la organización no es la que esperabas, la propiedad resolvió a otro registro), lo ves aquí antes de que exista un lead.
Qué sí se valida
Todo lo que fallaría en una solicitud real falla igual en modo de prueba, con el mismo código: una llave revocada da 401, un cuerpo mal formado 400, una propiedad inexistente 422, y el límite de solicitudes por minuto cuenta igual. Solo cambia el final feliz.
Qué no hace
- No crea ni modifica leads, notas, tareas ni asignaciones.
- No dispara automatismos (primer contacto, seguimiento, Agente IA).
- No reserva ni consulta la
Idempotency-Key, aunque la mandes.
Sí queda registrada en Solicitudes recibidas con el estado "Prueba", para que puedas ver que llegó.
Un flujo típico de puesta en marcha
- Manda tu primer lead en modo de prueba con un teléfono de tu equipo. Comprueba
resolved.organizacionyresolved.origen. - Prueba la propiedad: manda
propiedad.codigo,propiedad.external_codeopropiedad.idy verifica queresolved.development_idsea el registro correcto. - Manda un teléfono que ya exista en tu CRM y confirma que
wouldsea"enrich"; uno inventado (por ejemplo+52 55 0000 0001) debe dar"create". - Quita la cabecera y manda el lead real.