{
  "info": {
    "_postman_id": "verificar-curp-api-v1",
    "name": "Verificar CURP API",
    "description": "Valida una CURP, cotéjala contra los datos que ya tienes y verifícala en RENAPO.\n\n## Configuración\n\n1. Pon tu API key en la variable `apiKey` (panel → API Keys).\n2. Para verificar en RENAPO, crea un destino en el panel (Destinos) y pon su id en `destinationId`.\n\n## Enlaces de captura\n\n`POST /api/v1/capture-links` crea un enlace de un solo uso para que tu cliente escriba su CURP desde su celular; el resultado llega a tu destino (`destinationId`). Beta, abierto a todas las cuentas.\n\n## Cobro\n\nUn token por respuesta; la verificación en RENAPO va incluida. Una petición mal formada no se cobra.\n\nEspecificación OpenAPI: https://verificarcurp.com/api/openapi.yaml\nDocumentación: https://verificarcurp.com/docs",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "CURP",
      "description": "Validación, cotejo y verificación en RENAPO",
      "item": [
        {
          "name": "Validar CURP",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/curp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "curp"
              ]
            },
            "description": "Validación offline: longitud, forma, entidad, fecha y dígito verificador. Un token.\n\n```bash\ncurl -X POST {{baseUrl}}/api/v1/curp \\\n  -H \"X-API-Key: {{apiKey}}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"curp\":\"PEGJ850101HDFRRL04\"}'\n```"
          },
          "response": [
            {
              "name": "CURP válida",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"curp\": \"PEGJ850101HDFRRL04\",\n    \"valida\": true,\n    \"razon\": null,\n    \"fechaNacimiento\": \"1985-01-01\",\n    \"sexo\": \"H\",\n    \"claveEntidad\": \"DF\",\n    \"entidad\": \"Ciudad de México\",\n    \"cotejo\": null,\n    \"cotejoCampos\": null\n  },\n  \"tokens_remaining\": 431\n}"
            }
          ]
        },
        {
          "name": "Validar CURP mal formada",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL05\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/curp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "curp"
              ]
            },
            "description": "Una CURP inválida es una respuesta y se cobra. `razon` dice la primera regla que no cumple."
          },
          "response": [
            {
              "name": "Dígito verificador incorrecto",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL05\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"curp\": \"PEGJ850101HDFRRL05\",\n    \"valida\": false,\n    \"razon\": {\n      \"kind\": \"check-digit\",\n      \"expected\": \"4\",\n      \"actual\": \"5\"\n    },\n    \"fechaNacimiento\": null,\n    \"sexo\": null,\n    \"claveEntidad\": null,\n    \"entidad\": null,\n    \"cotejo\": null,\n    \"cotejoCampos\": null\n  },\n  \"tokens_remaining\": 430\n}"
            }
          ]
        },
        {
          "name": "Validar y cotejar",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\",\n  \"persona\": {\n    \"nombres\": \"Julio\",\n    \"primerApellido\": \"Pérez\",\n    \"segundoApellido\": \"García\",\n    \"fechaNacimiento\": \"1985-01-01\",\n    \"sexo\": \"H\",\n    \"entidad\": \"Ciudad de México\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/curp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "curp"
              ]
            },
            "description": "Compara lo que ya sabes de la persona contra lo que la CURP codifica. Solo se comparan los campos que mandas."
          },
          "response": [
            {
              "name": "Todo coincide",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\",\n  \"persona\": {\n    \"nombres\": \"Julio\",\n    \"primerApellido\": \"Pérez\",\n    \"segundoApellido\": \"García\",\n    \"fechaNacimiento\": \"1985-01-01\",\n    \"sexo\": \"H\",\n    \"entidad\": \"Ciudad de México\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"curp\": \"PEGJ850101HDFRRL04\",\n    \"valida\": true,\n    \"razon\": null,\n    \"fechaNacimiento\": \"1985-01-01\",\n    \"sexo\": \"H\",\n    \"claveEntidad\": \"DF\",\n    \"entidad\": \"Ciudad de México\",\n    \"cotejo\": \"coincide\",\n    \"cotejoCampos\": {\n      \"nombres\": \"coincide\",\n      \"primerApellido\": \"coincide\",\n      \"segundoApellido\": \"coincide\",\n      \"fechaNacimiento\": \"coincide\",\n      \"sexo\": \"coincide\",\n      \"entidad\": \"coincide\"\n    }\n  },\n  \"tokens_remaining\": 429\n}"
            }
          ]
        },
        {
          "name": "Calcular CURP",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"nombres\": \"JUAN\",\n  \"primerApellido\": \"PEREZ\",\n  \"segundoApellido\": \"GOMEZ\",\n  \"fechaNacimiento\": \"1985-01-01\",\n  \"sexo\": \"H\",\n  \"entidad\": \"CDMX\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/curp/calcular",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "curp",
                "calcular"
              ]
            },
            "description": "Calcula la CURP a partir de nombres, apellidos, fecha de nacimiento, sexo y entidad, sin consultar el registro. La posición 17 (diferenciador) se asume: 0 antes de 2000, A desde 2000. Un token.\n\n```bash\ncurl -X POST {{baseUrl}}/api/v1/curp/calcular \\\n  -H \"X-API-Key: {{apiKey}}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"nombres\":\"JUAN\",\"primerApellido\":\"PEREZ\",\"segundoApellido\":\"GOMEZ\",\"fechaNacimiento\":\"1985-01-01\",\"sexo\":\"H\",\"entidad\":\"CDMX\"}'\n```"
          },
          "response": [
            {
              "name": "CURP calculada",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"nombres\": \"JUAN\",\n  \"primerApellido\": \"PEREZ\",\n  \"segundoApellido\": \"GOMEZ\",\n  \"fechaNacimiento\": \"1985-01-01\",\n  \"sexo\": \"H\",\n  \"entidad\": \"CDMX\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp/calcular",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp",
                    "calcular"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"curp\": \"PEGJ850101HDFRMN02\",\n    \"raiz\": \"PEGJ850101HDFRMN\",\n    \"diferenciador\": \"0\",\n    \"diferenciadorAsumido\": true,\n    \"digitoVerificador\": \"2\",\n    \"fechaNacimiento\": \"1985-01-01\",\n    \"sexo\": \"H\",\n    \"claveEntidad\": \"DF\",\n    \"entidad\": \"Ciudad de México\"\n  },\n  \"tokens_remaining\": 431\n}"
            }
          ]
        },
        {
          "name": "Verificar en RENAPO",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\",\n  \"verificar\": true,\n  \"destinationId\": \"{{destinationId}}\",\n  \"idempotencyKey\": \"pedido-8841\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/curp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "curp"
              ]
            },
            "description": "Agrega `verificar: true` y un `destinationId` (panel → Destinos). La respuesta llega al instante; el resultado del registro llega a tu destino. Guarda `job_id` en la variable `jobId`."
          },
          "response": [
            {
              "name": "Verificación aceptada",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\",\n  \"verificar\": true,\n  \"destinationId\": \"{{destinationId}}\",\n  \"idempotencyKey\": \"pedido-8841\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"curp\": \"PEGJ850101HDFRRL04\",\n    \"valida\": true,\n    \"razon\": null,\n    \"fechaNacimiento\": \"1985-01-01\",\n    \"sexo\": \"H\",\n    \"claveEntidad\": \"DF\",\n    \"entidad\": \"Ciudad de México\",\n    \"cotejo\": null,\n    \"cotejoCampos\": null\n  },\n  \"tokens_remaining\": 428,\n  \"verificacion\": {\n    \"aceptada\": true,\n    \"job_id\": \"clz8k2p0000001\",\n    \"estado\": \"pendiente\",\n    \"expires_at\": \"2026-09-29T16:35:00.000Z\"\n  }\n}"
            },
            {
              "name": "Registro no disponible",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\",\n  \"verificar\": true,\n  \"destinationId\": \"{{destinationId}}\",\n  \"idempotencyKey\": \"pedido-8841\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"curp\": \"PEGJ850101HDFRRL04\",\n    \"valida\": true,\n    \"razon\": null,\n    \"fechaNacimiento\": \"1985-01-01\",\n    \"sexo\": \"H\",\n    \"claveEntidad\": \"DF\",\n    \"entidad\": \"Ciudad de México\",\n    \"cotejo\": null,\n    \"cotejoCampos\": null\n  },\n  \"tokens_remaining\": 427,\n  \"verificacion\": {\n    \"aceptada\": false,\n    \"codigo\": \"REGISTRY_UNAVAILABLE\",\n    \"retry_after\": 240\n  }\n}"
            },
            {
              "name": "Destino inexistente",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\",\n  \"verificar\": true,\n  \"destinationId\": \"{{destinationId}}\",\n  \"idempotencyKey\": \"pedido-8841\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp"
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"error\": \"destinationId no corresponde a un destino activo de esta cuenta\",\n  \"code\": \"DESTINATION_NOT_FOUND\"\n}"
            },
            {
              "name": "idempotencyKey reutilizada con otra CURP",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"curp\": \"PEGJ850101HDFRRL04\",\n  \"verificar\": true,\n  \"destinationId\": \"{{destinationId}}\",\n  \"idempotencyKey\": \"pedido-8841\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp"
                  ]
                }
              },
              "status": "Conflict",
              "code": 409,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"error\": \"idempotencyKey ya se usó en esta cuenta para otra CURP\",\n  \"code\": \"IDEMPOTENCY_KEY_REUSED\"\n}"
            }
          ],
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('200 OK', () => pm.response.to.have.status(200));",
                  "const b = pm.response.json();",
                  "pm.test('trae data', () => pm.expect(b.data).to.be.an('object'));",
                  "if (b.verificacion && b.verificacion.job_id) pm.collectionVariables.set('jobId', b.verificacion.job_id);"
                ]
              }
            }
          ]
        },
        {
          "name": "Estado de la verificación",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/curp/verificacion/{{jobId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "curp",
                "verificacion",
                "{{jobId}}"
              ]
            },
            "description": "Estado de una verificación. Trae `valores` UNA sola vez si el resultado sigue guardado (por ejemplo, si la entrega a tu destino falló). No se cobra."
          },
          "response": [
            {
              "name": "Entregada",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/api/v1/curp/verificacion/{{jobId}}",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "curp",
                    "verificacion",
                    "{{jobId}}"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"verificacion\": {\n    \"job_id\": \"clz8k2p0000001\",\n    \"estado\": \"delivered\",\n    \"codigo\": null,\n    \"duracion_ms\": 2140,\n    \"creado_en\": \"2026-09-29T16:30:00.000Z\",\n    \"expira_en\": \"2026-09-29T16:35:00.000Z\",\n    \"terminado_en\": \"2026-09-29T16:30:02.140Z\",\n    \"destino_id\": \"dst_123\",\n    \"entrega_ok\": true,\n    \"entrega_ms\": 180,\n    \"cobrado\": true,\n    \"intentos\": 1,\n    \"max_intentos\": 3,\n    \"proximo_intento_en\": null,\n    \"reintentos_hasta\": null,\n    \"ultimo_codigo\": null,\n    \"revision_manual\": null,\n    \"valores_entregados\": false\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "RFC",
      "description": "Cálculo del RFC de una persona física con el algoritmo del SAT",
      "item": [
        {
          "name": "Calcular RFC",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"nombres\": \"EMMA\",\n  \"primerApellido\": \"GOMEZ\",\n  \"segundoApellido\": \"DIAZ\",\n  \"fechaNacimiento\": \"1956-12-31\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/rfc/calcular",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rfc",
                "calcular"
              ]
            },
            "description": "Calcula el RFC con homoclave de una persona física a partir de nombres, apellidos y fecha de nacimiento, con el algoritmo del SAT y sin consultar al SAT. La homoclave se calcula con las tablas del SAT; el SAT asigna otra cuando dos contribuyentes coinciden (homoclaveAsumida). Un token.\n\n```bash\ncurl -X POST {{baseUrl}}/api/v1/rfc/calcular \\\n  -H \"X-API-Key: {{apiKey}}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"nombres\":\"EMMA\",\"primerApellido\":\"GOMEZ\",\"segundoApellido\":\"DIAZ\",\"fechaNacimiento\":\"1956-12-31\"}'\n```"
          },
          "response": [
            {
              "name": "RFC calculado",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"nombres\": \"EMMA\",\n  \"primerApellido\": \"GOMEZ\",\n  \"segundoApellido\": \"DIAZ\",\n  \"fechaNacimiento\": \"1956-12-31\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/rfc/calcular",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "rfc",
                    "calcular"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"rfc\": \"GODE561231GR8\",\n    \"raiz\": \"GODE561231\",\n    \"homoclave\": \"GR\",\n    \"homoclaveAsumida\": true,\n    \"digitoVerificador\": \"8\",\n    \"fechaNacimiento\": \"1956-12-31\"\n  },\n  \"tokens_remaining\": 431\n}"
            }
          ]
        },
        {
          "name": "Calcular RFC (solo CURP)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"curp\": \"GODE561231MDFMZM01\",\n  \"destinationId\": \"{{destinationId}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/rfc/calcular",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "rfc",
                "calcular"
              ]
            },
            "description": "Modo solo CURP: sin nombres, primero se consulta en RENAPO el nombre registrado para la CURP y el RFC se calcula con él. Responde 202 con verificacion.job_id; el RFC llega a tu destino (evento curp.verification.*, producto \"calculo-rfc\") y en GET /api/v1/curp/verificacion/{jobId} como rfc. Un token, igual que una verificación; se reembolsa si la CURP no se encuentra o la consulta no termina. 503 sin cobro si el registro no se puede consultar."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Enlaces de captura",
      "item": [
        {
          "name": "Crear enlace de captura",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"destinationId\": \"{{destinationId}}\",\n  \"reference\": \"reserva-8841\",\n  \"persona\": {\n    \"nombres\": \"Julio\",\n    \"primerApellido\": \"Pérez\",\n    \"fechaNacimiento\": \"1985-01-01\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/capture-links",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "capture-links"
              ]
            },
            "description": "Crea un enlace de un solo uso (15 min para abrirlo, 15 min para responder). Tu cliente escribe su CURP; la validamos, la cotejamos contra `persona` (los datos de la reservación, opcional) y el resultado llega a tu destino como `extraction.completed` con `source: capture-link`. Con `askGuestPersona: true` tu cliente también escribe su nombre y fecha de nacimiento.\n\nCrear el enlace no cuesta; cada respuesta cuesta 1 token (también un `no_coincide`), hasta 3 intentos por enlace. La `url` solo se devuelve aquí."
          },
          "response": [
            {
              "name": "Enlace creado",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"destinationId\": \"{{destinationId}}\",\n  \"reference\": \"reserva-8841\",\n  \"persona\": {\n    \"nombres\": \"Julio\",\n    \"primerApellido\": \"Pérez\",\n    \"fechaNacimiento\": \"1985-01-01\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v1/capture-links",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "capture-links"
                  ]
                }
              },
              "status": "Created",
              "code": 201,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"id\": \"clx_enlace_456\",\n  \"url\": \"https://verificarcurp.com/c/…\",\n  \"reference\": \"reserva-8841\",\n  \"documentType\": null,\n  \"requireBack\": false,\n  \"askGuestPersona\": false,\n  \"expiresAt\": \"2026-09-30T18:15:00.000Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Cuenta",
      "item": [
        {
          "name": "Saldo",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/balance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "balance"
              ]
            },
            "description": "Saldo actual de tokens. No se cobra."
          },
          "response": [
            {
              "name": "Saldo",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "X-API-Key",
                    "value": "{{apiKey}}",
                    "type": "text"
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/api/v1/balance",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v1",
                    "balance"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"balance\": 431\n}"
            }
          ]
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://verificarcurp.com",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "curp_tu_api_key_aqui",
      "type": "string"
    },
    {
      "key": "destinationId",
      "value": "",
      "type": "string"
    },
    {
      "key": "jobId",
      "value": "",
      "type": "string"
    }
  ]
}
