Skip to main content

Validate, calculate and obtain CURP information in México.

Project description

ValidaCurp Python Client

PyPI version Python versions License: MIT

Python client for validating, calculating, and obtaining CURP (Clave Única de Registro de Población) information in México.

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

9. License

This project is released under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multiserviciosweb-1.1.2.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multiserviciosweb-1.1.2-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file multiserviciosweb-1.1.2.tar.gz.

File metadata

  • Download URL: multiserviciosweb-1.1.2.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for multiserviciosweb-1.1.2.tar.gz
Algorithm Hash digest
SHA256 fc54c0ce7f752d7748cfb10a865da8fef65db8691acb58943028c82284f95bef
MD5 ae4c02fc0e8bc42d757b1375e91abd31
BLAKE2b-256 d0a0f679314f003f843ae5361e9068b803614e11b22e8033e2001393178aa39a

See more details on using hashes here.

File details

Details for the file multiserviciosweb-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for multiserviciosweb-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d5f48b177efb506843d49a7f4d88dc05cd8cef2cad856d80e79331beacb362ea
MD5 1ece8bcfba937b4bedf0a32ed90a8184
BLAKE2b-256 57789fe9bb420463f98a0bb479958432a8514887b9bae28fca550adf738809be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page