ValidaCurp Python Client
Python client for validating, calculating, and obtaining CURP (Clave Única de Registro de Población) information in México.
- Copyright (c) Multiservicios Web JCA S.A. de C.V., https://multiservicios-web.com.mx
- More information: https://valida-curp.com.mx
- License: MIT (https://opensource.org/license/MIT)
1. Requirements
- Python 3.7 or later
2. Installation
pip install multiserviciosweb
3. Account
3.1. Create an account
Create an account by following this link: https://valida-curp.tawk.help/article/registro-de-usuario
3.2. Create a project
Create a project by following this link: https://valida-curp.tawk.help/article/creaci%C3%B3n-de-proyecto
3.3. Get a token
Get your token by following this link: https://valida-curp.tawk.help/article/obtener-token-llave-privada-proyecto
4. Usage
4.1. Import the library
from MultiServiciosWeb import ValidaCurp, ValidaCurpException
4.2. Create an instance
The constructor receives the token as first parameter. Optionally you can pass a custom endpoint.
valida_curp = ValidaCurp('YOUR-TOKEN')
You can also set the token via environment variable. Create a .env file:
TOKEN_VALIDA_API_CURP=YOUR-TOKEN
Then instantiate without arguments:
valida_curp = ValidaCurp()
4.3. (Optional) Set API version
You can set the API version to query. Default value is 2.
valida_curp.set_version(2) # 1 or 2
Version 1 of the API is deprecated. Please use version 2.
4.4. (Optional) Custom endpoint
valida_curp = ValidaCurp('YOUR-TOKEN', 'https://custom.valida-curp.com.mx/curp/')
5. Methods
5.1. Validate CURP
The method is_valid() takes a CURP as parameter and validates its structure.
result = valida_curp.is_valid('PXNE660720HMCXTN06')
print(result)
Response:
{'valido': 1}
5.2. Get CURP data
The method get_data() takes a CURP as parameter and consults the CURP information in RENAPO.
data = valida_curp.get_data('PXNE660720HMCXTN06')
print(data)
Response:
{
'Applicant': {
'CURP': 'PXNE660720HMCXTN06',
'Names': 'ENRIQUE',
'LastName': 'PEÑA',
'SecondLastName': 'NIETO',
'GenderKey': 'H',
'Gender': 'Hombre',
'DateOfBirth': '1966-07-20',
'Nacionality': 'MEX',
'CodeEntityBirth': '',
'EntityBirth': '',
'KeyEvidentiaryDocument': 1,
'EvidentiaryDocument': 'Acta de nacimiento',
'CurpStatusKey': 'AN',
'CurpStatus': 'Alta Normal'
},
'EvidentiaryDocument': {
'YearRegistration': 1966,
'KeyIssuingEntity': '',
'KeyMunicipalityRegistration': 14,
'MunicipalityRegistration': '',
'Foja': 0,
'FolioLetter': '',
'Book': 0,
'CertificateNumber': 985,
'RegistrantNumber': 15,
'RegistrationEntity': 'México',
'ForeignRegistrationNumber': '',
'Volume': 0
}
}
5.3. Calculate a CURP
The method calculate() takes a dictionary as parameter and calculates the CURP structure from the provided data.
result = valida_curp.calculate({
'names': 'Enrique',
'lastName': 'Peña',
'secondLastName': 'Nieto',
'birthDay': '20',
'birthMonth': '07',
'birthYear': '1966',
'gender': 'H',
'entity': '15',
})
print(result)
Required fields:
| Field | Description | Example |
|---|---|---|
names |
First name(s) | 'Juan' |
lastName |
Paternal last name | 'Pérez' |
secondLastName |
Maternal last name | 'López' |
birthDay |
Day of birth (2 digits) | '15' |
birthMonth |
Month of birth (2 digits) | '09' |
birthYear |
Year of birth (4 digits) | '1990' |
gender |
'H' for male, 'M' for female |
'H' |
entity |
Entity code (2-digit state code) | '09' |
Response:
{'curp': 'PXNE660720HMCXTN06'}
5.4. Get entities
The method get_entities() doesn't take any parameters and returns the list of entities.
entities = valida_curp.get_entities()
print(entities)
Response:
{
'clave_entidad': [
{'clave_entidad': '01', 'nombre_entidad': 'AGUASCALIENTES', 'abreviatura_entidad': 'AS'},
{'clave_entidad': '02', 'nombre_entidad': 'BAJA CALIFORNIA', 'abreviatura_entidad': 'BC'},
...
]
}
6. Error handling
All methods raise ValidaCurpException on API errors.
from MultiServiciosWeb import ValidaCurp, ValidaCurpException
try:
data = valida_curp.get_data('PXNE660720HMCXTN06')
except ValidaCurpException as e:
print(f'API Error: {e}')
except Exception as e:
print(f'Unexpected Error: {e}')
7. Full example
from MultiServiciosWeb import ValidaCurp, ValidaCurpException
try:
valida_curp = ValidaCurp('YOUR-TOKEN')
# Validate CURP structure
print(valida_curp.is_valid('PXNE660720HMCXTN06'))
# Get CURP data from RENAPO
print(valida_curp.get_data('PXNE660720HMCXTN06'))
# Calculate CURP
print(valida_curp.calculate({
'names': 'Enrique',
'lastName': 'Peña',
'secondLastName': 'Nieto',
'birthDay': '20',
'birthMonth': '07',
'birthYear': '1966',
'gender': 'H',
'entity': '15',
}))
# Get entities
print(valida_curp.get_entities())
except ValidaCurpException as e:
print(f'ValidaCurp Exception: {e}')
except Exception as e:
print(f'Unexpected Error: {e}')
8. Credits
- Copyright (c) Multiservicios Web JCA S.A. de C.V., https://multiservicios-web.com.mx
- Author: Edson Burgos edsonburgosmacedo@gmail.com
9. License
This project is released under the MIT License. See the LICENSE file for details.
Release files for multiserviciosweb 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| multiserviciosweb-1.1.2.tar.gz | 7.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| multiserviciosweb-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.0 kB
Release files / multiserviciosweb-1.1.2.tar.gz
| Download URL | multiserviciosweb-1.1.2.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc54c0ce7f752d7748cfb10a865da8fef65db8691acb58943028c82284f95bef
|
|
BLAKE2b-256 checksum How to use checksums |
d0a0f679314f003f843ae5361e9068b803614e11b22e8033e2001393178aa39a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / multiserviciosweb-1.1.2-py3-none-any.whl
| Download URL | multiserviciosweb-1.1.2-py3-none-any.whl |
|---|---|
| Size | 7.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d5f48b177efb506843d49a7f4d88dc05cd8cef2cad856d80e79331beacb362ea
|
|
BLAKE2b-256 checksum How to use checksums |
57789fe9bb420463f98a0bb479958432a8514887b9bae28fca550adf738809be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|