# Webhook de constancia CURP Fuente: /renapo/curp-pdf-webhook/ Cuando solicitas la constancia de CURP en PDF (`pdf_required: true` en [Validación de CURP ante RENAPO](/renapo/curp-validation/)) y **no** puede entregarse en la misma respuesta, la generación queda en curso. En cuanto esté lista, Verificamex hace un `POST` con el PDF a la URL que hayas indicado en el parámetro `webhook`. > **Nota** > > Si el PDF sí estuvo disponible al momento de la consulta, no se envía ningún webhook: ya lo recibiste en la respuesta original, en el campo `pdf`. ### **¿Cuándo se dispara?** 1. Envías `POST /identity/v1/scraping/renapo` con `pdf_required: true` y tu `webhook`. 2. Si la constancia no está disponible al instante, la respuesta llega **sin** el campo `pdf` y la generación queda en curso. 3. En cuanto el proveedor resuelve la constancia (o determina que no puede generarla), Verificamex hace un único `POST` a tu `webhook` con el resultado. > **Consejo** > > Si prefieres no exponer un endpoint público, puedes omitir el webhook y hacer *polling* del campo `pdf` en [Mostrar validación de CURP ante RENAPO](/renapo/show-curp-validation/) hasta que deje de ser `null`. ### **Estructura del Payload** **curp.pdf\_resuelto** > **Nota** > > La constancia se generó correctamente y viaja en `pdf_base64`. ```json { "evento": "curp.pdf_resuelto", "curp": "ABCD950101MDFXYZ09", "id": "eyJpdiI6...", "pdf_base64": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9Db2xvc..." } ``` **curp.pdf\_no\_disponible** > **Nota** > > El proveedor no pudo generar la constancia para esta CURP (por ejemplo, porque no existe o fue descartada). `pdf_base64` viene en `null` y no habrá reintentos automáticos. ```json { "evento": "curp.pdf_no_disponible", "curp": "ABCD950101MDFXYZ09", "id": "eyJpdiI6...", "pdf_base64": null } ``` | Campo | Tipo | Descripción | | - | - | - | | evento | `String` | `curp.pdf_resuelto` si la constancia se generó, `curp.pdf_no_disponible` si no pudo generarse. | | curp | `String` | CURP consultada en la solicitud original. | | id | `String` | Identificador de la validación de CURP, el mismo que usarías para consultar [Mostrar validación de CURP ante RENAPO](/renapo/show-curp-validation/). | | `pdf_base64` | `String` \| `null` | Constancia en PDF codificada en base64, o `null` si no se pudo generar. | > **Verifica la firma** > > Al igual que el resto de los webhooks de Verificamex, este aviso **viaja firmado** en los headers `webhook-id`, `webhook-timestamp` y `webhook-signature`. Verifica la firma con tu clave antes de procesar el PDF; consulta [Verificar la firma de los webhooks](/webhooks/webhooks-security/). ### **Reintentos e idempotencia** Se envía un webhook por validación de CURP en cuanto se resuelve (o falla de forma definitiva). Tu endpoint debe responder `200 OK` para confirmar la recepción; si tu servidor responde con error o no responde, Verificamex reintenta el envío **una vez más**. Diseña tu lógica para ser idempotente ante ese posible reintento (el reintento trae el mismo header `webhook-id`) y, si el procesamiento del PDF es pesado, respóndele rápido a Verificamex y procesa de forma asíncrona de tu lado.