> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tukanmx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Catálogo

> Consulta el catálogo de códigos postales de México con información geográfica y sociodemográfica básica. Permite filtrar por estado y municipio.



## OpenAPI

````yaml /es/api-reference/openapi-zipcodes.json get /zipcodes
openapi: 3.0.3
info:
  title: Códigos Postales de México
  description: >-
    API para consultar información demográfica y socioeconómica de códigos
    postales en México
  version: 1.0.0
  contact:
    name: Soporte Tukan
    email: contacto@tukanmx.com
servers:
  - url: https://entities.tukanmx.com/api/v1
    description: Servidor de producción
security:
  - tokenAuth: []
paths:
  /zipcodes:
    get:
      summary: Catálogo
      description: >-
        Consulta el catálogo de códigos postales de México con información
        geográfica y sociodemográfica básica. Permite filtrar por estado y
        municipio.
      parameters:
        - name: state_id
          in: query
          description: >-
            ID del [estado (2 dígitos)](https://www.inegi.org.mx/app/ageeml).
            Puede ser uno o varios separados por comas
          required: false
          schema:
            type: string
            pattern: ^[0-9]{2}(,[0-9]{2})*$
            example: 09,15,18
        - name: municipality_id
          in: query
          description: >-
            ID del [municipio (5 dígitos)](https://www.inegi.org.mx/app/ageeml).
            Puede ser uno o varios separados por comas
          required: false
          schema:
            type: string
            pattern: ^[0-9]{5}(,[0-9]{5})*$
            example: 09015,15033
        - name: limit
          in: query
          description: Número de registros a retornar (máximo 2,000)
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 2000
            default: 100
        - name: offset
          in: query
          description: Número de registros a omitir para paginación
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
      responses:
        '200':
          description: Lista de códigos postales obtenida exitosamente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZipCodeCatalogResponse'
        '400':
          description: Solicitud inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Sin permisos para acceder a los recursos solicitados
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ZipCodeCatalogResponse:
      type: object
      properties:
        count:
          type: integer
          description: Número de resultados en esta página
        total_count:
          type: integer
          description: Total de códigos postales disponibles
        total_pages:
          type: integer
          description: Número total de páginas
        current_page:
          type: integer
          description: Página actual
        limit:
          type: integer
          description: Resultados por página
        offset:
          type: integer
          description: Desplazamiento actual
        has_next:
          type: boolean
          description: Indica si hay página siguiente
        has_previous:
          type: boolean
          description: Indica si hay página anterior
        next_offset:
          type: integer
          description: Desplazamiento para la siguiente página
        previous_offset:
          type: integer
          description: Desplazamiento para la página anterior
        data:
          type: array
          items:
            $ref: '#/components/schemas/ZipCodeItem'
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Tipo de error
        message:
          type: string
          description: Descripción detallada del error
    ZipCodeItem:
      type: object
      properties:
        id:
          type: string
          description: Identificador único del código postal
        zip_code:
          type: string
          description: Código postal de 5 dígitos
          pattern: ^[0-9]{5}$
        country_id:
          type: string
          description: ID del país
        country:
          type: string
          description: Nombre del país
        state_id:
          type: string
          description: ID del estado (2 dígitos)
        state_name:
          type: string
          description: Nombre del estado
        municipality_id:
          type: string
          description: ID del municipio (5 dígitos)
        municipality_name:
          type: string
          description: Nombre del municipio
        population:
          type: integer
          description: Población total. Si es nulo, no hay datos disponibles
          nullable: true
        inhabited_households:
          type: integer
          description: Viviendas habitadas. Si es nulo, no hay datos disponibles
          nullable: true
        nse_predominant_level:
          type: string
          description: >-
            Nivel socioeconómico predominante. Si es nulo, no hay datos
            disponibles
          nullable: true
        neighborhoods:
          type: array
          items:
            type: string
          description: >-
            Lista de colonias/barrios, clasificados por tipo de barrio y
            urbanización
        bbox_east:
          type: number
          format: float
          description: >-
            Punto más al este del código postal. Si es nulo, no se tiene
            polígono para este código postal
          nullable: true
        bbox_north:
          type: number
          format: float
          description: >-
            Límite más al norte del código postal. Si es nulo, no se tiene
            polígono para este código postal
          nullable: true
        bbox_south:
          type: number
          format: float
          description: >-
            Límite más al sur del código postal. Si es nulo, no se tiene
            polígono para este código postal
          nullable: true
        bbox_west:
          type: number
          format: float
          description: >-
            Punto más al oeste del código postal. Si es nulo, no se tiene
            polígono para este código postal
          nullable: true
        area_km2:
          type: number
          format: float
          description: >-
            Área en kilómetros cuadrados. Si es nulo, no se tiene polígono para
            este código postal
          nullable: true
        centroid_lat:
          type: number
          format: float
          description: >-
            Latitud del centroide. Si es nulo, no se tiene polígono para este
            código postal
          nullable: true
        centroid_lon:
          type: number
          format: float
          description: >-
            Longitud del centroide. Si es nulo, no se tiene polígono para este
            código postal
          nullable: true
        neighbors:
          type: array
          items:
            type: string
          description: Lista de códigos postales vecinos
        state_border:
          type: boolean
          description: >-
            Indica si el código postal está en frontera estatal. Si es nulo, no
            se tiene polígono para este código postal
          nullable: true
        data_coverage:
          type: object
          description: >-
            Cobertura de datos disponibles para este código postal.


            Indica qué tipos de información están disponibles y su nivel de
            completitud.


            Si la propiedad no está presente, significa que no hay datos
            disponibles para este código postal en esa categoría.
          properties:
            demographic:
              type: integer
              description: >-
                Indica cuantos indicadores demográficos hay disponibles para
                este código postal
            education:
              type: integer
              description: >-
                Indica cuantos indicadores de educación hay disponibles para
                este código postal
            employment:
              type: integer
              description: >-
                Indica cuantos indicadores de empleo hay disponibles para este
                código postal
            health:
              type: integer
              description: >-
                Indica cuantos indicadores de salud hay disponibles para este
                código postal
            housing:
              type: integer
              description: >-
                Indica cuantos indicadores de vivienda hay disponibles para este
                código postal
            socioeconomic:
              type: integer
              description: >-
                Indica cuantos indicadores socioeconómicos hay disponibles para
                este código postal
          additionalProperties: true
          example:
            demographic: 10
            education: 5
            employment: 8
            health: 4
            housing: 7
            socioeconomic: 6
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Token para autenticación. Formato requerido: token <tu-token>'

````