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

# ISSSTE Record

> **Credits:** 1 per call.

Retrieves a government worker's full ISSSTE record by CURP — personal data, affiliation, pension regime, positions, contribution history, address, assigned clinic, and the official PDF (always included as base64 in `data.files[]` (kind `document`)).

A retrieved record returns `type: SUCCESS` for an active worker. `PENSIONER`, `SCHOLAR`, `INACTIVE`, and `DECEASED` flag KYC-material standings; when more than one applies, precedence is `DECEASED` > `PENSIONER`/`SCHOLAR` > `INACTIVE`. The raw affiliation status and beneficiary type are always in `data.affiliation`, so new statuses ISSSTE may report never break the contract. `CURP_NOT_FOUND` when the CURP has no ISSSTE record. Dates are ISO `YYYY-MM-DD`; monetary amounts are strings (MXN).

**Field presence:** every field is always present (stable contract) — absent values are `null` (objects/scalars, including empty source strings normalized to `null`) or `[]` (arrays), never omitted. Examples: `pensions` and `family` are `[]` when the worker has none; `terminationDate` and a history row's `endDate` are `null` while ongoing; binary assets in `data.files[]` follow array semantics — only assets actually produced are listed (absent ones omitted, not `null`). Unmigrated placeholder values from ISSSTE (e.g. address `POR ACTUALIZAR`, clinic `FAVOR DE ATENDER A ESTE TRABAJADOR` / clave `0409999`, state `ENTIDAD DESCONOCIDA`) are normalized to `null` (data not yet migrated). ISSSTE only exposes records for titulares (TRABAJADOR/PENSIONISTA/BECARIO); a CURP that is only a dependant (not a titular) returns `CURP_NOT_FOUND`. To retrieve a dependant, query the titular CURP and match `data.family[]` by the dependant CURP. `beneficiaryType` is derived authoritatively from the record (a DIRECT pension means PENSIONISTA even if the document labels them TRABAJADOR); each pension carries a derived `category` (DIRECT/SURVIVOR/INSURANCE/DISABILITY).



## OpenAPI

````yaml /openapi.json post /mex/social-security/v1/issste-records
openapi: 3.0.3
info:
  title: OrigoID API
  description: >-
    Identity and Background Verification API for Mexico.


    ### Authentication

    The API Gateway supports the following methods. You must send **one** of
    them in the headers:


    1. **API Key**: `x-api-key: YOUR_KEY`

    2. **Bearer Token**: `Authorization: Bearer YOUR_TOKEN`

    3. **Basic Auth**: `Authorization: Basic BASE64`


    ### Standard Format

    All responses follow this structure (HTTP 200). Authentication errors return
    401.

    ```json

    {
      "status": "OK | ERROR",
      "type": "TYPE_CODE",
      "message": "Description",
      "data": { ... },
      "transactionId": "uuid",
      "processedAt": "2026-03-19T10:00:00-06:00",
      "billable": true
    }

    ```


    ### Rate Limiting

    The API enforces per-endpoint rate limits, calculated on a sliding 1-minute
    window. Limits are defined per user, with a global default that can be
    overridden individually or by payment plan.


    When a limit is exceeded, the API returns HTTP `429 Too Many Requests` with
    the following headers:


    - **`Retry-After`**: seconds to wait before retrying.

    - **`X-RateLimit-Limit`**: total requests allowed in the current window.

    - **`X-RateLimit-Remaining`**: requests remaining in the current window.

    - **`X-RateLimit-Reset`**: Unix timestamp (seconds) when the window resets.


    Clients should implement backoff using `Retry-After`. The response body
    follows the standard envelope with `type: RATE_LIMIT_EXCEEDED`.


    ### Language Conventions

    The API follows a strict bilingual contract:


    - **All API-facing copy is in English**: response messages, error codes,
    field names, schema descriptions, summaries, and tag descriptions.

    - **Passthrough fields preserve the original Spanish text** sourced verbatim
    from Mexican regulators (SAT, RENAPO, IMSS, INE). These include:
      - `officialMessage` — official regulator response text.
      - Fields inside `taxRegimes` and `taxObligations` arrays from CSF (`description`, `dueDate`, etc.) — preserved exactly as published by SAT.
      - Address components extracted from documents (street names, neighborhood names) — preserved as printed.
      - Compliance match fields like `position`, `institution` from PEPs — preserved as recorded by the source.

    Do not translate passthrough fields — their value lies in legal traceability
    to the original source.


    ### Image Processing Policy

    Endpoints that accept images follow a **best-effort processing** philosophy:


    - **Hard Limits** (max file size, supported formats) are strictly enforced.
    A request that exceeds them is rejected with `INVALID_REQUEST` before any
    processing occurs.

    - **Recommendations** (resolution, file size for latency, framing, lighting)
    are guidance — not enforced. Suboptimal images that meet the Hard Limits are
    still processed.

    - If extraction fails on a low-quality image, the endpoint returns the
    appropriate type code (`IMAGE_UNREADABLE`, `NO_FACE_DETECTED`,
    `DOCUMENT_NOT_IDENTIFIED`, etc.) with `billable: true` — processing did run
    and consumed resources.


    This policy exists because integrators often cannot control their capture
    SDK output (third-party SDKs, legacy systems, browser-based capture).
    Rejecting suboptimal images would block legitimate use cases. Processing
    best-effort and reporting honest results gives the integrator the
    information needed to decide whether to retry or accept the result.


    ### Date and Time Conventions

    All temporal fields across the API follow standardized formats:


    - **`processedAt`**: ISO 8601 datetime with Mexico City offset (`-06:00`).
    Example: `2026-03-19T10:00:00-06:00`.

    - **Date-only fields** (`dateOfBirth`, `dueDate`, `issueDate`,
    `publicationDate`, `publicationDateSat`, `publicationDateDof`,
    `constitutionDate`, `startDate`, `registrationDate`,
    `lastStatusChangeDate`): ISO 8601 date (`YYYY-MM-DD`). Example:
    `2024-01-10`.

    - **Year-month fields** (`reportPeriod`, `positionEndDate`): ISO 8601
    year-month (`YYYY-MM`). Example: `2026-02`. (`positionEndDate` is normalised
    from the source — the PEP provider publishes the month and year a former
    office-holder left office, e.g. `Septiembre de 2024` becomes `2024-09`.)

    - **Year-only fields** (`year`, `emissionYear`, `registrationYear`,
    `validUntilYear`): returned as 4-digit string (e.g. `"2022"`). Strings
    preserve the raw value sourced from the document; clients may safely parse
    to integer.

    - **Money fields** (`baseSalary`, `amountDue`, `taxAmount`): object `{
    amount: "<decimal-string>", currency: "<ISO 4217>" }`. Amounts are decimal
    strings (not floats) to avoid precision errors. Example: `{ "amount":
    "452.50", "currency": "MXN" }`.


    ---


    # Catalogs


    #### 1. CURP Status (`statusCurp`)


    Status code returned by RENAPO inside `personalInfo.statusCurp` and similar
    fields.


    | `statusCurp` | State | Description |

    | :--- | :--- | :--- |

    | `AN` | Active | Normal registration (Alta Normal). Valid and current. |

    | `AH` | Active | Homonymy alert (Alta con Homonimia). First 16 chars match
    another CURP. |

    | `RCC` | Active | Change affecting CURP (Registro con Cambio). Data
    correction modified the key. |

    | `RCN` | Active | Change not affecting CURP. Minor data correction. |

    | `BAP` | Inactive | Apocryphal document (Baja por documento apócrifo). |

    | `BSU` | Inactive | Unused (Baja sin uso). Requires reactivation at a
    RENAPO module. |

    | `BD` | Inactive | Deceased (Baja por defunción). |

    | `BDM` | Inactive | Administrative cancellation (Baja administrativa). |

    | `BDP` | Inactive | Adoption-related cancellation (Baja por adopción). |

    | `BJD` | Inactive | Judicial cancellation (Baja judicial). |


    #### 2. Probatory Document (`docProbatorio`)


    Code identifying which civil document supports the CURP registration.


    | `docProbatorio` | Document |

    | :--- | :--- |

    | `1` | Birth Certificate (Acta de Nacimiento) |

    | `3` | Migration Document (Documento Migratorio) |

    | `4` | Naturalization Certificate (Carta de Naturalización) |

    | `7` | Mexican Nationality Certificate (Certificado de Nacionalidad
    Mexicana) |

    | `8` | SEGOB Processing (Trámite ante SEGOB) |


    #### 3. Mexican State Codes (`entidad` / `claveEntidad`)


    Two-letter codes used in CURP, RFC composition, INE registration, and
    addresses. State names preserved in Spanish (proper nouns).


    | `entidad` | State | `entidad` | State |

    | :--- | :--- | :--- | :--- |

    | `AS` | Aguascalientes | `QR` | Quintana Roo |

    | `BC` | Baja California | `SP` | San Luis Potosí |

    | `BS` | Baja California Sur | `SL` | Sinaloa |

    | `CC` | Campeche | `SR` | Sonora |

    | `CL` | Coahuila | `TC` | Tabasco |

    | `CM` | Colima | `TS` | Tamaulipas |

    | `CS` | Chiapas | `TL` | Tlaxcala |

    | `CH` | Chihuahua | `VZ` | Veracruz |

    | `DF` | Ciudad de México | `YN` | Yucatán |

    | `DG` | Durango | `ZS` | Zacatecas |

    | `GT` | Guanajuato | `NE` | Born Abroad (Nacido en el Extranjero) |

    | `GR` | Guerrero | `MC` | Estado de México |

    | `HG` | Hidalgo | `MN` | Michoacán |

    | `JC` | Jalisco | `MS` | Morelos |

    | `NT` | Nayarit | `NL` | Nuevo León |

    | `OC` | Oaxaca | `PL` | Puebla |

    | `QT` | Querétaro | | |


    #### 4. IMSS Coverage Modalities (`modalidad`)


    IMSS modality codes describe the worker's affiliation type. Official
    descriptions preserved in Spanish for legal traceability with the institute.


    | `modalidad` | Description |

    | :--- | :--- |

    | `10` | Urban permanent and temporary workers (Trabajadores permanentes y
    eventuales de la ciudad) |

    | `13` | Rural temporary workers (Trabajadores eventuales del campo) |

    | `14` | Rural permanent workers (Trabajadores permanentes del campo) |

    | `17` | Re-entry rural temporary workers (Reingreso de trabajadores
    eventuales del campo) |

    | `18` | Re-entry rural permanent workers (Reingreso de trabajadores
    permanentes del campo) |

    | `30` | Re-entry urban permanent and temporary workers (Reingreso de
    trabajadores permanentes y eventuales de la ciudad) |

    | `31` | Voluntary continuation in the mandatory regime (Continuación
    voluntaria al régimen obligatorio) |

    | `32` | Independent workers (Trabajadores independientes) |

    | `33` | Domestic workers (Trabajadores domésticos) |

    | `34` | Federal or state government workers (Trabajadores del gobierno
    federal o estatal) |

    | `35` | IMSS-affiliated students (Estudiantes afiliados al IMSS) |

    | `36` | Scholarship holders or social programs (Becarios o programas
    sociales) |

    | `40` | Voluntary continuation in the mandatory regime (alternate) |

    | `42` | Individual employer with domestic workers (Patrón persona física
    con trabajadores domésticos) |

    | `43` | International organization workers (Trabajadores de organismos
    internacionales) |

    | `44` | Seasonal or fixed-term workers (Trabajadores por temporada o tiempo
    determinado) |

    | `45` | Re-entered retirees in mandatory regime (Pensionados reincorporados
    al régimen obligatorio) |

    | `46` | Construction temporary workers (Trabajadores eventuales de la
    construcción) |

    | `47` | Trust workers with special regime (Trabajadores de confianza con
    régimen especial) |

    | `48` | Affiliated municipal public servants (Servidores públicos
    municipales afiliados) |

    | `50` | Voluntary continuation with extended coverage (Continuación
    voluntaria con cobertura extendida) |

    | `51` | Voluntary affiliation for students or apprentices (Afiliación
    voluntaria para estudiantes o aprendices) |

    | `60` | Special social incorporation regime — RESICO (Régimen especial de
    incorporación social) |

    | `70` | IMSS-Bienestar or community programs modality |

    | `72` | Inter-agency public agreement with IMSS (Convenio entre
    dependencias públicas y el IMSS) |


    #### 5. SAT Article 69 Sub-lists (`listType`)


    | `listType` | Sub-list (SAT) | Risk Level |

    | :--- | :--- | :--- |

    | <code style="white-space:nowrap">SAT_69_FIRMES</code> | Firmes | MEDIUM |

    | <code style="white-space:nowrap">SAT_69_CANCELADOS</code> | Cancelados
    (Insolvencia, general) | MEDIUM |

    | <code style="white-space:nowrap">SAT_69_CANCELADOS_07_15</code> |
    Cancelados 2007–2015 (Art. 146-A) | MEDIUM |

    | <code style="white-space:nowrap">SAT_69_EXIGIBLES</code> | Exigibles |
    MEDIUM |

    | <code style="white-space:nowrap">SAT_69_NO_LOCALIZADOS</code> | No
    Localizados | HIGH |

    | <code style="white-space:nowrap">SAT_69_CSD_SIN_EFECTOS</code> |
    Certificados de Sello Digital (CSD) sin Efectos | HIGH |

    | <code style="white-space:nowrap">SAT_69_SENTENCIAS</code> | Sentencias |
    CRITICAL |

    | <code style="white-space:nowrap">SAT_69_REDUCCION_74_CFF</code> |
    Reducción Art. 74 CFF | LOW |

    | <code style="white-space:nowrap">SAT_69_CONDONADOS_07_15</code> |
    Condonados 2007–2015 (Decreto) | LOW |

    | <code style="white-space:nowrap">SAT_69_CONDONADOS_146B_CFF</code> |
    Condonados Art. 146-B CFF | LOW |

    | <code style="white-space:nowrap">SAT_69_CONDONADOS_DECRETO</code> |
    Condonados por Decreto | LOW |

    | <code style="white-space:nowrap">SAT_69_CONDONADOS_21_CFF</code> |
    Condonados Art. 21 CFF | LOW |

    | <code style="white-space:nowrap">SAT_69_RETORNO_INVERSIONES</code> |
    Retorno de Inversiones | LOW |

    | <code style="white-space:nowrap">SAT_69_ENTES_PUBLICOS_OMISOS</code> |
    Entes Públicos y de Gobierno Omisos | LOW |


    #### 6. SAT Article 69-B Status (`complianceDetails.status`)


    The SAT 69-B endpoint always returns `listType: SAT_69B`. The granular state
    lives in `complianceDetails.status`:


    | `status` | Description | Risk Level |

    | :--- | :--- | :--- |

    | <code style="white-space:nowrap">PRESUNTO</code> | Currently under
    investigation for simulated operations (EFOS) | HIGH |

    | <code style="white-space:nowrap">DEFINITIVO</code> | Confirmed shell
    company / EFOS | CRITICAL |

    | <code style="white-space:nowrap">DESVIRTUADO</code> | Investigated but
    successfully proved innocence | LOW |

    | <code style="white-space:nowrap">SENTENCIA_FAVORABLE</code> | Won in court
    / cleared by judicial ruling | LOW |


    #### 7. PEPs Categories (`listType`)


    These are OrigoID's stable taxonomy codes. They remain consistent over time
    so client integrations don't need to change when data sources evolve.


    | `listType` | Description | Risk Level |

    | :--- | :--- | :--- |

    | <code style="white-space:nowrap">PEP_ACTIVE</code> | Politically Exposed
    Person — currently in office | HIGH |

    | <code style="white-space:nowrap">PEP_INACTIVE</code> | Politically Exposed
    Person — record marked inactive by the source | MEDIUM |

    | <code style="white-space:nowrap">EX_PEP</code> | Former PEP — held office
    in the past | MEDIUM |

    | <code style="white-space:nowrap">PEP_AFFINITY</code> | Family member or
    close associate of an active PEP | MEDIUM |

    | <code style="white-space:nowrap">EX_PEP_AFFINITY</code> | Family member or
    close associate of a former PEP | LOW |


    #### 8. OFAC Lists (`listType`)


    We query the official OFAC sanctions lists in real time and consolidate them
    under the `listType` codes below. Each entry also exposes
    `complianceDetails.programs[]` (sanction program codes such as CUBA, IRAN,
    RUSSIA, etc. — these evolve continuously and are not statically catalogued)
    and `complianceDetails.entityType` (`INDIVIDUAL` | `ENTITY` | `VESSEL` |
    `AIRCRAFT`).


    | `listType` | Official OFAC list | Risk Level |

    | :--- | :--- | :--- |

    | <code style="white-space:nowrap">OFAC_SDN</code> | Specially Designated
    Nationals & Blocked Persons | CRITICAL |

    | <code style="white-space:nowrap">OFAC_NON_SDN</code> | Consolidated
    Non-SDN List | HIGH |

    | <code style="white-space:nowrap">OFAC_FSE</code> | Foreign Sanctions
    Evaders | CRITICAL |

    | <code style="white-space:nowrap">OFAC_NS_ISA</code> | Non-SDN Iran
    Sanctions Act List | HIGH |

    | <code style="white-space:nowrap">OFAC_SSI</code> | Sectoral Sanctions
    Identifications List | MEDIUM |

    | <code style="white-space:nowrap">OFAC_CAPTA</code> | Foreign Financial
    Institutions subject to Correspondent / Payable-Through Account Sanctions |
    HIGH |

    | <code style="white-space:nowrap">OFAC_NS_PLC</code> | Non-SDN Palestinian
    Legislative Council | LOW |


    #### 9. CFDI Effect (`effect`)


    Fiscal purpose of the invoice as classified by SAT. Each CFDI has exactly
    one effect.


    | `effect` | SAT code | Description |

    | :--- | :--- | :--- |

    | <code style="white-space:nowrap">INCOME</code> | I (Ingreso) | Sales /
    revenue invoice. Issuer received payment for goods or services. |

    | <code style="white-space:nowrap">EXPENSE</code> | E (Egreso) | Refund,
    credit note, or discount. Reverses or reduces a previous income invoice. |

    | <code style="white-space:nowrap">TRANSPORT</code> | T (Traslado) | Goods
    transport waybill (Carta Porte). Does not reflect a sale, only movement of
    goods. |

    | <code style="white-space:nowrap">PAYROLL</code> | N (Nómina) | Payroll
    receipt issued by an employer to an employee. |

    | <code style="white-space:nowrap">PAYMENT</code> | P (Pago) | Payment
    receipt complement (REP) for invoices paid in installments (PPD). |


    #### 10. CFDI Status (`status`)


    Current fiscal status of the CFDI according to SAT's verification service.


    | `status` | Description |

    | :--- | :--- |

    | <code style="white-space:nowrap">VALID</code> | Vigente. The CFDI is
    current and fiscally valid. |

    | <code style="white-space:nowrap">CANCELED</code> | Cancelada. The CFDI has
    been canceled and is no longer fiscally valid. |


    #### 11. CFDI Cancellation Status (`cancellationStatus`)


    Reflects SAT's 2022 cancellation rules ("cancelación con aceptación"), which
    require receiver consent in some scenarios. This field shows both
    pre-cancellation eligibility and post-cancellation outcome.


    | `cancellationStatus` | Description |

    | :--- | :--- |

    | <code style="white-space:nowrap">NOT_CANCELABLE</code> | Cannot be
    canceled (e.g. payment complements, payroll receipts, or invoices linked to
    other active CFDIs). |

    | <code style="white-space:nowrap">CANCELABLE_WITHOUT_ACCEPTANCE</code> |
    The issuer may cancel unilaterally (small amounts, payroll corrections,
    etc.). |

    | <code style="white-space:nowrap">CANCELABLE_WITH_ACCEPTANCE</code> | The
    issuer can request cancellation, but the receiver must accept it within 72
    hours. |

    | <code style="white-space:nowrap">CANCELED_WITHOUT_ACCEPTANCE</code> |
    Already canceled; acceptance was not required. |

    | <code style="white-space:nowrap">CANCELED_WITH_ACCEPTANCE</code> | Already
    canceled; the receiver approved the cancellation. |


    ---

    **Soporte:** contacto@origoid.com
  version: 1.0.0
  contact:
    name: Soporte OrigoId
    email: contacto@origoid.com
servers:
  - url: https://api.origoid.com
security:
  - ApiKeyAuth: []
  - BearerAuth: []
  - BasicAuth: []
tags:
  - name: Authentication
    description: Generation of temporary bearer tokens (JWT).
  - name: RENAPO
    description: Official identity and CURP validation.
  - name: INE
    description: Validation of Nominal Lists and Voter Credentials.
  - name: Social Security
    description: Employment and social security data.
  - name: Biometrics
    description: Facial biometric comparison against identity documents.
  - name: Compliance
    description: 'Sanctions and risk lists: SAT 69, SAT 69-B, OFAC, and PEPs.'
  - name: Email
    description: Email deliverability and fraud risk validation.
  - name: Proof of Address
    description: >-
      Data extraction from utility and proof-of-address documents (CFE, Telmex,
      Telcel, etc.).
  - name: Fiscal
    description: RFC validation and CSF (Constancia de Situación Fiscal) extraction.
  - name: Banking
    description: SPEI / CEP payment validation against Banco de México.
paths:
  /mex/social-security/v1/issste-records:
    post:
      tags:
        - Social Security
      summary: ISSSTE Record
      description: >-
        **Credits:** 1 per call.


        Retrieves a government worker's full ISSSTE record by CURP — personal
        data, affiliation, pension regime, positions, contribution history,
        address, assigned clinic, and the official PDF (always included as
        base64 in `data.files[]` (kind `document`)).


        A retrieved record returns `type: SUCCESS` for an active worker.
        `PENSIONER`, `SCHOLAR`, `INACTIVE`, and `DECEASED` flag KYC-material
        standings; when more than one applies, precedence is `DECEASED` >
        `PENSIONER`/`SCHOLAR` > `INACTIVE`. The raw affiliation status and
        beneficiary type are always in `data.affiliation`, so new statuses
        ISSSTE may report never break the contract. `CURP_NOT_FOUND` when the
        CURP has no ISSSTE record. Dates are ISO `YYYY-MM-DD`; monetary amounts
        are strings (MXN).


        **Field presence:** every field is always present (stable contract) —
        absent values are `null` (objects/scalars, including empty source
        strings normalized to `null`) or `[]` (arrays), never omitted. Examples:
        `pensions` and `family` are `[]` when the worker has none;
        `terminationDate` and a history row's `endDate` are `null` while
        ongoing; binary assets in `data.files[]` follow array semantics — only
        assets actually produced are listed (absent ones omitted, not `null`).
        Unmigrated placeholder values from ISSSTE (e.g. address `POR
        ACTUALIZAR`, clinic `FAVOR DE ATENDER A ESTE TRABAJADOR` / clave
        `0409999`, state `ENTIDAD DESCONOCIDA`) are normalized to `null` (data
        not yet migrated). ISSSTE only exposes records for titulares
        (TRABAJADOR/PENSIONISTA/BECARIO); a CURP that is only a dependant (not a
        titular) returns `CURP_NOT_FOUND`. To retrieve a dependant, query the
        titular CURP and match `data.family[]` by the dependant CURP.
        `beneficiaryType` is derived authoritatively from the record (a DIRECT
        pension means PENSIONISTA even if the document labels them TRABAJADOR);
        each pension carries a derived `category`
        (DIRECT/SURVIVOR/INSURANCE/DISABILITY).
      operationId: getIssteRecord
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - curp
              properties:
                curp:
                  type: string
                  description: >-
                    CURP of the government worker whose ISSSTE record is
                    requested.
                  example: GOTM850312MDFMRX05
            examples:
              By CURP:
                summary: By CURP
                value:
                  curp: GOTM850312MDFMRX05
      responses:
        '200':
          description: ISSSTE record result (Strict Envelope Pattern).
          content:
            application/json:
              examples:
                Success:
                  summary: SUCCESS — active worker (2 positions, 5 family members)
                  value:
                    status: OK
                    type: SUCCESS
                    message: Active worker found
                    data:
                      personalInfo:
                        curp: GOTM850312MDFMRX05
                        givenNames: MARIA FERNANDA
                        firstSurname: GOMEZ
                        secondSurname: TORRES
                        rfc: GOTM850312AB1
                        gender: M
                        dateOfBirth: '1985-03-12'
                        maritalStatus: CASADO
                        nss: '10567890123'
                      affiliation:
                        beneficiaryType: TRABAJADOR
                        affiliationStatus: ACTIVO
                        governmentEntryDate: '2008-01-01'
                        currentPositionStartDate: '2008-01-01'
                        terminationDate: null
                      pensionRegime:
                        seniorityYears: 19
                        scheme: CUENTAS INDIVIDUALES
                      employment:
                        - agency: SALUD DE TLAXCALA
                          payrollOffice: SALUD DE TLAXCALA
                          startDate: '2008-01-01'
                          baseSalary: '9611.42'
                          positionType: BASE
                          totalCompensation: '14937.00'
                          coverage: TODOS LOS SEGUROS, PRESTACIONES Y SERVICIOS
                        - agency: SERVICIOS DE SALUD DEL IMSS PARA EL BIENESTAR
                          payrollOffice: IMSS BIENESTAR TLAXCALA
                          startDate: '2024-03-01'
                          baseSalary: '10452.54'
                          positionType: BASE
                          totalCompensation: '29390.20'
                          coverage: TODOS LOS SEGUROS, PRESTACIONES Y SERVICIOS
                      pensions: []
                      contributionHistory:
                        - agency: SALUD DE TLAXCALA
                          payrollOffice: SALUD DE TLAXCALA
                          periodType: NORMAL
                          startDate: '2008-01-01'
                          endDate: '2010-12-31'
                          baseSalary: '4450.00'
                        - agency: SALUD DE TLAXCALA
                          payrollOffice: SALUD DE TLAXCALA
                          periodType: NORMAL
                          startDate: '2011-01-01'
                          endDate: '2012-04-30'
                          baseSalary: '5570.00'
                      fovissteHistory:
                        - agency: SALUD DE TLAXCALA
                          payrollOffice: SALUD DE TLAXCALA
                          periodType: NORMAL
                          startDate: '2008-01-01'
                          endDate: '2010-12-31'
                          baseSalary: '4450.00'
                        - agency: SALUD DE TLAXCALA
                          payrollOffice: SALUD DE TLAXCALA
                          periodType: NORMAL
                          startDate: '2011-01-01'
                          endDate: '2012-04-30'
                          baseSalary: '5570.00'
                      family:
                        - curp: GOTL120418HDFMRS00
                          firstSurname: GOMEZ
                          secondSurname: TORRES
                          givenNames: LUIS
                          relationship: HIJO
                          status: ACTIVO
                          dateOfBirth: '2012-04-18'
                          registrationDate: '2012-05-01'
                        - curp: RASP840912HDFMLD05
                          firstSurname: RAMIREZ
                          secondSurname: SOLIS
                          givenNames: PEDRO
                          relationship: ESPOSO
                          status: ACTIVO
                          dateOfBirth: '1984-09-12'
                          registrationDate: '2010-02-01'
                      address:
                        street: AVENIDA EJEMPLO
                        exteriorNumber: '100'
                        interiorNumber: null
                        neighborhood: CENTRO
                        municipality: PUEBLA
                        state: PUEBLA
                        postalCode: '00000'
                      clinic:
                        code: '3620300'
                        type: HAE
                        name: PUEBLA, PUE.
                        address: JARDINES DE SAN MANUEL, JARDINES DE SAN MANUEL
                        issteDelegation: DELEGACION ESTATAL EN PUEBLA
                        phone: '2222456950'
                      files:
                        - kind: document
                          contentType: application/pdf
                          sizeBytes: 207341
                          content: JVBERi0xLjYKJdP0...TRUNCATED_BASE64...
                        - kind: face
                          contentType: image/jpeg
                          sizeBytes: 8421
                          content: >-
                            /9j/4AAQSkZJRgABAQEAYABgAAD...TRUNCATED_BASE64.../9k=
                    transactionId: 0a1b2c3d-4e5f-4a6b-8c9d-a0000000000b
                    processedAt: '2026-06-02T10:00:00-06:00'
                    billable: true
                Inactive:
                  summary: INACTIVE — inactive worker (terminationDate set)
                  value:
                    status: OK
                    type: INACTIVE
                    message: Inactive worker found
                    data:
                      personalInfo:
                        curp: DIMR600724MDFZRS03
                        givenNames: ROSA ELENA
                        firstSurname: DIAZ
                        secondSurname: MORALES
                        rfc: DIMR600724XY2
                        gender: M
                        dateOfBirth: '1960-07-24'
                        maritalStatus: SOLTERO
                        nss: '20987654321'
                      affiliation:
                        beneficiaryType: TRABAJADOR
                        affiliationStatus: INACTIVO
                        governmentEntryDate: '1982-10-01'
                        currentPositionStartDate: '2016-07-31'
                        terminationDate: '2026-06-02'
                      pensionRegime:
                        seniorityYears: 43
                        scheme: CUENTAS INDIVIDUALES
                      employment: []
                      pensions: []
                      contributionHistory:
                        - agency: >-
                            INST. DE SEG. Y SERVS. SOCLS. DE LOS TRABJS. DEL
                            EDO. (ISSST
                          payrollOffice: ISSSTE. DIRECCION DE ADMINISTRACION
                          periodType: NORMAL
                          startDate: '2021-03-01'
                          endDate: '2023-01-15'
                          baseSalary: '4448.50'
                        - agency: >-
                            INST. DE SEG. Y SERVS. SOCLS. DE LOS TRABJS. DEL
                            EDO. (ISSST
                          payrollOffice: ISSSTE. DIRECCION DE ADMINISTRACION
                          periodType: CERTIFICADO DyE
                          startDate: '2023-01-16'
                          endDate: '2023-10-15'
                          baseSalary: '9077.00'
                      fovissteHistory:
                        - agency: >-
                            INST. DE SEG. Y SERVS. SOCLS. DE LOS TRABJS. DEL
                            EDO. (ISSST
                          payrollOffice: ISSSTE. DIRECCION DE ADMINISTRACION
                          periodType: NORMAL
                          startDate: '2021-03-01'
                          endDate: '2023-01-15'
                          baseSalary: '4448.50'
                        - agency: >-
                            INST. DE SEG. Y SERVS. SOCLS. DE LOS TRABJS. DEL
                            EDO. (ISSST
                          payrollOffice: ISSSTE. DIRECCION DE ADMINISTRACION
                          periodType: CERTIFICADO DyE
                          startDate: '2023-01-16'
                          endDate: '2023-10-15'
                          baseSalary: '9077.00'
                      family: []
                      address:
                        street: AVENIDA EJEMPLO
                        exteriorNumber: '100'
                        interiorNumber: null
                        neighborhood: CENTRO
                        municipality: TIJUANA
                        state: BAJA CALIFORNIA
                        postalCode: '00000'
                      clinic:
                        code: '0220800'
                        type: CMF
                        name: MESA DE OTAY
                        address: null
                        issteDelegation: DELEGACION ESTATAL EN BAJA CALIFORNIA
                        phone: null
                      files:
                        - kind: document
                          contentType: application/pdf
                          sizeBytes: 207341
                          content: JVBERi0xLjYKJdP0...TRUNCATED_BASE64...
                        - kind: face
                          contentType: image/jpeg
                          sizeBytes: 8421
                          content: >-
                            /9j/4AAQSkZJRgABAQEAYABgAAD...TRUNCATED_BASE64.../9k=
                    transactionId: 0a1b2c3d-4e5f-4a6b-8c9d-a0000000000c
                    processedAt: '2026-06-02T10:00:00-06:00'
                    billable: true
                Deceased:
                  summary: DECEASED — deceased worker (survivor pension + family)
                  value:
                    status: OK
                    type: DECEASED
                    message: Deceased worker found
                    data:
                      personalInfo:
                        curp: RUVC550415MDFZGR07
                        givenNames: CARMEN
                        firstSurname: RUIZ
                        secondSurname: VEGA
                        rfc: RUVC550415PQ3
                        gender: M
                        dateOfBirth: '1955-04-15'
                        maritalStatus: SOLTERO
                        nss: '30135792468'
                      affiliation:
                        beneficiaryType: TRABAJADOR
                        affiliationStatus: FINADO
                        governmentEntryDate: '1987-11-16'
                        currentPositionStartDate: '2022-08-24'
                        terminationDate: null
                      pensionRegime:
                        seniorityYears: 0
                        scheme: DÉCIMO TRANSITORIO
                      employment: []
                      pensions:
                        - category: SURVIVOR
                          agency: PENSIONISTAS Y JUBILADOS CON CARGO AL I.S.S.S.T.E.
                          payrollOffice: I.S.S.S.T.E. PENSIONISTAS DEUDOS GUANAJUATO
                          startDate: '2022-08-24'
                          pensionNumber: '9000000'
                          pensionType: '316'
                          pensionAmount: 25731.3
                      contributionHistory:
                        - agency: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          payrollOffice: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          periodType: PENSIONES
                          startDate: '1987-11-16'
                          endDate: '1987-12-15'
                          baseSalary: '168.75'
                        - agency: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          payrollOffice: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          periodType: PENSIONES
                          startDate: '1987-12-16'
                          endDate: '1987-12-31'
                          baseSalary: '194.10'
                      fovissteHistory:
                        - agency: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          payrollOffice: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          periodType: PENSIONES
                          startDate: '1987-11-16'
                          endDate: '1987-12-15'
                          baseSalary: '168.75'
                        - agency: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          payrollOffice: >-
                            SECRETARIA DE EDUCACION EN GUANAJUATO-UNIDAD
                            PUENTECILLAS
                          periodType: PENSIONES
                          startDate: '1987-12-16'
                          endDate: '1987-12-31'
                          baseSalary: '194.10'
                      family:
                        - curp: GOTA140722MDFMRN06
                          firstSurname: GOMEZ
                          secondSurname: TORRES
                          givenNames: ANA
                          relationship: HIJA
                          status: POSIBLE DEUDO
                          dateOfBirth: '2014-07-22'
                          registrationDate: '2014-08-01'
                      address:
                        street: AVENIDA EJEMPLO
                        exteriorNumber: '100'
                        interiorNumber: null
                        neighborhood: CENTRO
                        municipality: CELAYA
                        state: GUANAJUATO
                        postalCode: '00000'
                      clinic:
                        code: '1120700'
                        type: CH
                        name: CELAYA
                        address: AV. EL SAUZ ESQ. ESMERALDA, SANJUANICO
                        issteDelegation: DELEGACION ESTATAL EN GUANAJUATO
                        phone: '4616141390'
                      files:
                        - kind: document
                          contentType: application/pdf
                          sizeBytes: 209880
                          content: JVBERi0xLjYKJdP0...TRUNCATED_BASE64...
                        - kind: face
                          contentType: image/jpeg
                          sizeBytes: 8421
                          content: >-
                            /9j/4AAQSkZJRgABAQEAYABgAAD...TRUNCATED_BASE64.../9k=
                    transactionId: 0a1b2c3d-4e5f-4a6b-8c9d-a0000000000d
                    processedAt: '2026-06-02T10:00:00-06:00'
                    billable: true
                Pensioner:
                  summary: >-
                    PENSIONER — real direct pensioner (own retirement pension;
                    web miscategorized as TRABAJADOR, corrected to PENSIONISTA)
                  value:
                    status: OK
                    type: PENSIONER
                    message: Pensioner found
                    data:
                      personalInfo:
                        curp: SOLE600705MVZTRL01
                        givenNames: ELENA
                        firstSurname: SOTO
                        secondSurname: LARA
                        rfc: SOLE600705RS4
                        gender: M
                        dateOfBirth: '1960-07-05'
                        maritalStatus: CASADO
                        nss: '40246813579'
                      affiliation:
                        beneficiaryType: PENSIONISTA
                        affiliationStatus: ACTIVO
                        governmentEntryDate: '1979-10-01'
                        currentPositionStartDate: '2010-01-01'
                        terminationDate: null
                      pensionRegime:
                        seniorityYears: 0
                        scheme: DÉCIMO TRANSITORIO
                      employment: []
                      pensions:
                        - category: DIRECT
                          agency: PENSIONISTAS Y JUBILADOS CON CARGO AL I.S.S.S.T.E.
                          payrollOffice: I.S.S.S.T.E. PENSIONISTAS DIRECTOS VERACRUZ
                          startDate: '2010-01-01'
                          pensionNumber: '9000000'
                          pensionType: '101'
                          pensionAmount: 9720.9
                      contributionHistory:
                        - agency: SECRETARIA DE EDUCACION PUBLICA (SEP)
                          payrollOffice: >-
                            GOBIERNO DEL ESTADO DE VERACRUZ, SISTEMA EDUCATIVO
                            ESTATAL.
                          periodType: PENSIONES
                          startDate: '1993-06-16'
                          endDate: '1994-09-30'
                          baseSalary: '1575.15'
                        - agency: >-
                            SECRETARIA DE EDUCACION Y CULTURA DEL ESTADO DE
                            VERACRUZ
                          payrollOffice: >-
                            SECRETARIA DE EDUCACION Y CULTURA DEL ESTADO DE
                            VERACRUZ
                          periodType: PENSIONES
                          startDate: '1979-10-01'
                          endDate: '1979-12-31'
                          baseSalary: '4.14'
                      fovissteHistory:
                        - agency: SECRETARIA DE EDUCACION PUBLICA (SEP)
                          payrollOffice: >-
                            GOBIERNO DEL ESTADO DE VERACRUZ, SISTEMA EDUCATIVO
                            ESTATAL.
                          periodType: PENSIONES
                          startDate: '1993-06-16'
                          endDate: '1994-09-30'
                          baseSalary: '1575.15'
                        - agency: >-
                            SECRETARIA DE EDUCACION Y CULTURA DEL ESTADO DE
                            VERACRUZ
                          payrollOffice: >-
                            SECRETARIA DE EDUCACION Y CULTURA DEL ESTADO DE
                            VERACRUZ
                          periodType: PENSIONES
                          startDate: '1979-10-01'
                          endDate: '1979-12-31'
                          baseSalary: '4.14'
                      family:
                        - curp: TOVR550130MDFRGS02
                          firstSurname: TORRES
                          secondSurname: VEGA
                          givenNames: ROSA
                          relationship: MADRE
                          status: ACTIVO
                          dateOfBirth: '1955-01-30'
                          registrationDate: '2009-03-10'
                        - curp: GOLJ521105HDFMRS07
                          firstSurname: GOMEZ
                          secondSurname: LARA
                          givenNames: JOSE
                          relationship: PADRE
                          status: ACTIVO
                          dateOfBirth: '1952-11-05'
                          registrationDate: '2009-03-10'
                      address:
                        street: AVENIDA EJEMPLO
                        exteriorNumber: '100'
                        interiorNumber: null
                        neighborhood: CENTRO
                        municipality: HUATUSCO
                        state: VERACRUZ
                        postalCode: '00000'
                      clinic:
                        code: '3020601'
                        type: UMF
                        name: HUATUSCO DE CHICUELLAR
                        address: CALLE 2, CENTRO
                        issteDelegation: DELEGACION ESTATAL EN VERACRUZ
                        phone: 273 100 8334
                      files:
                        - kind: document
                          contentType: application/pdf
                          sizeBytes: 209880
                          content: JVBERi0xLjYKJdP0...TRUNCATED_BASE64...
                        - kind: face
                          contentType: image/jpeg
                          sizeBytes: 8421
                          content: >-
                            /9j/4AAQSkZJRgABAQEAYABgAAD...TRUNCATED_BASE64.../9k=
                    transactionId: 0a1b2c3d-4e5f-4a6b-8c9d-a0000000000e
                    processedAt: '2026-06-02T10:00:00-06:00'
                    billable: true
                Scholar:
                  summary: SCHOLAR — CONAHCYT/SECIHTI grant holder
                  value:
                    status: OK
                    type: SCHOLAR
                    message: Scholarship holder found
                    data:
                      personalInfo:
                        curp: MERC900821HDFNSR06
                        givenNames: CARLOS
                        firstSurname: MENDEZ
                        secondSurname: RIOS
                        rfc: MERC900821TU5
                        gender: H
                        dateOfBirth: '1990-08-21'
                        maritalStatus: SOLTERO
                        nss: '50369258147'
                      affiliation:
                        beneficiaryType: BECARIO
                        affiliationStatus: ACTIVO
                        governmentEntryDate: '2024-02-01'
                        currentPositionStartDate: '2026-02-16'
                        terminationDate: null
                      pensionRegime:
                        seniorityYears: 1
                        scheme: CUENTAS INDIVIDUALES
                      employment:
                        - agency: >-
                            SECRETARIA DE CIENCIA, HUMANIDADES, TECNOLOGIA E
                            INNOVACION
                          payrollOffice: >-
                            SECRETARIA DE CIENCIA, HUMANIDADES, TECNOLOGIA E
                            INOVACION (BECARIOS)
                          startDate: '2025-12-01'
                          baseSalary: '21397.32'
                          positionType: BECARIO
                          totalCompensation: '21397.32'
                          coverage: SEGURO DE SALUD (SOLO SERVICIO MEDICO)
                        - agency: SECRETARIA DE EDUCACION PUBLICA (SEP)
                          payrollOffice: TECNOLOGICO NACIONAL DE MEXICO
                          startDate: '2026-02-16'
                          baseSalary: '9451.20'
                          positionType: BASE
                          totalCompensation: '10400.52'
                          coverage: TODOS LOS SEGUROS, PRESTACIONES Y SERVICIOS
                      pensions: []
                      contributionHistory:
                        - agency: >-
                            CONSEJO NACIONAL DE HUMANIDADES, CIENCIAS Y
                            TECNOLOGIAS
                          payrollOffice: >-
                            CONSEJO NACIONAL DE HUMANIDADES, CIENCIAS Y
                            TECNOLOGIAS (BECARIOS)
                          periodType: CERTIFICADO DyE
                          startDate: '2025-04-01'
                          endDate: '2025-12-31'
                          baseSalary: '8364.00'
                        - agency: >-
                            SECRETARIA DE CIENCIA, HUMANIDADES, TECNOLOGIA E
                            INNOVACION
                          payrollOffice: >-
                            SECRETARIA DE CIENCIA, HUMANIDADES, TECNOLOGIA E
                            INOVACION (BECARIOS)
                          periodType: CERTIFICADO DyE
                          startDate: '2025-12-01'
                          endDate: null
                          baseSalary: '21397.32'
                      fovissteHistory:
                        - agency: >-
                            CONSEJO NACIONAL DE HUMANIDADES, CIENCIAS Y
                            TECNOLOGIAS
                          payrollOffice: >-
                            CONSEJO NACIONAL DE HUMANIDADES, CIENCIAS Y
                            TECNOLOGIAS (BECARIOS)
                          periodType: CERTIFICADO DyE
                          startDate: '2025-04-01'
                          endDate: '2025-12-31'
                          baseSalary: '8364.00'
                        - agency: >-
                            SECRETARIA DE CIENCIA, HUMANIDADES, TECNOLOGIA E
                            INNOVACION
                          payrollOffice: >-
                            SECRETARIA DE CIENCIA, HUMANIDADES, TECNOLOGIA E
                            INOVACION (BECARIOS)
                          periodType: CERTIFICADO DyE
                          startDate: '2025-12-01'
                          endDate: null
                          baseSalary: '21397.32'
                      family: []
                      address:
                        street: AVENIDA EJEMPLO
                        exteriorNumber: '100'
                        interiorNumber: null
                        neighborhood: CENTRO
                        municipality: MERIDA
                        state: YUCATAN
                        postalCode: '00000'
                      clinic:
                        code: '3120100'
                        type: CMFE
                        name: MERIDA (COL. LINDAVISTA)
                        address: 19B POR 44 Y 44A, PEDREGALES DE LINDAVISTA
                        issteDelegation: DELEGACION ESTATAL EN YUCATAN
                        phone: '9999421470'
                      files:
                        - kind: document
                          contentType: application/pdf
                          sizeBytes: 207341
                          content: JVBERi0xLjYKJdP0...TRUNCATED_BASE64...
                        - kind: face
                          contentType: image/jpeg
                          sizeBytes: 8421
                          content: >-
                            /9j/4AAQSkZJRgABAQEAYABgAAD...TRUNCATED_BASE64.../9k=
                    transactionId: 0a1b2c3d-4e5f-4a6b-8c9d-a0000000000f
                    processedAt: '2026-06-02T10:00:00-06:00'
                    billable: true
                CURP Not Found:
                  summary: CURP valid but not registered in ISSSTE (billable)
                  value:
                    status: OK
                    type: CURP_NOT_FOUND
                    message: CURP not found in ISSSTE
                    data: null
                    transactionId: c1d2e3f4-a5b6-7c8d-9e0f-222222222222
                    processedAt: '2026-06-01T11:00:00-06:00'
                    billable: true
                Validation Error:
                  summary: Validation Error
                  value:
                    status: ERROR
                    type: INVALID_REQUEST
                    message: Validation failed
                    data: null
                    transactionId: c1d2e3f4-a5b6-7c8d-9e0f-444444444444
                    processedAt: '2026-06-01T11:00:00-06:00'
                    billable: false
                    errors:
                      - field: curp
                        code: MISSING_REQUIRED_FIELD
                        message: must have required property 'curp'
                      - field: curp
                        code: INVALID_FORMAT
                        message: curp must be a valid 18-character CURP
                      - field: body
                        code: PAYLOAD_TOO_LARGE
                        message: body exceeds the maximum allowed size
                Service Unavailable:
                  summary: ISSSTE portal unavailable or blocked
                  value:
                    status: ERROR
                    type: SERVICE_UNAVAILABLE
                    message: ISSSTE service is currently unavailable
                    data: null
                    transactionId: c1d2e3f4-a5b6-7c8d-9e0f-555555555555
                    processedAt: '2026-06-01T11:00:00-06:00'
                    billable: false
                Internal Error:
                  summary: Internal Error
                  value:
                    status: ERROR
                    type: INTERNAL_ERROR
                    message: Unexpected internal error
                    data: null
                    transactionId: c1d2e3f4-a5b6-7c8d-9e0f-666666666666
                    processedAt: '2026-06-01T11:00:00-06:00'
                    billable: false
              schema:
                allOf:
                  - $ref: '#/components/schemas/Envelope'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/IssteRecordData'
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                Unauthorized:
                  summary: Unauthorized
                  value:
                    status: ERROR
                    type: UNAUTHORIZED
                    message: Invalid credentials
                    data: null
                    transactionId: 71d64fd8-8a54-4792-a844-7e2466eb01f7
                    processedAt: '2026-05-21T10:00:00-06:00'
                    billable: false
              schema:
                $ref: '#/components/schemas/Envelope'
        '429':
          description: Too Many Requests — endpoint rate limit exceeded.
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: >-
                Total requests allowed in the current window (per minute, per
                endpoint, per user/plan).
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp (seconds) when the rate limit window resets.
          content:
            application/json:
              examples:
                Rate Limit:
                  summary: Rate Limit Exceeded
                  value:
                    status: ERROR
                    type: RATE_LIMIT_EXCEEDED
                    message: >-
                      API rate limit exceeded for this endpoint. Retry after the
                      duration specified in the Retry-After header.
                    data: null
                    transactionId: fb9c33a5-ee2f-42b2-8467-ff6807e14beb
                    processedAt: '2026-04-26T10:00:00-06:00'
                    billable: false
              schema:
                $ref: '#/components/schemas/Envelope'
      x-codeSamples:
        - lang: cURL
          source: >-
            curl -X POST
            https://api.origoid.com/mex/social-security/v1/issste-records \
              -H "x-api-key: YOUR_API_KEY" \
              -H "content-type: application/json" \
              -d '{"curp": "TEST900101HDFRRN09"}'
        - lang: JavaScript
          source: >-
            const response = await
            fetch("https://api.origoid.com/mex/social-security/v1/issste-records",
            {
              method: "POST",
              headers: {
                "x-api-key": process.env.ORIGOID_API_KEY,
                "content-type": "application/json",
              },
              body: JSON.stringify({
                  "curp": "TEST900101HDFRRN09"
              }),
            });


            if (!response.ok) {
              throw new Error(`HTTP ${response.status}`);
            }


            const result = await response.json();

            console.log(result);
        - lang: Python
          source: |-
            import os
            import requests

            response = requests.post(
                "https://api.origoid.com/mex/social-security/v1/issste-records",
                headers={
                    "x-api-key": os.environ["ORIGOID_API_KEY"],
                    "content-type": "application/json",
                },
                json={
                        "curp": "TEST900101HDFRRN09"
                },
                timeout=30,
            )
            response.raise_for_status()
            result = response.json()
            print(result)
        - lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.HttpClient;
            import java.net.http.HttpRequest;
            import java.net.http.HttpResponse;
            import java.time.Duration;

            public class Example {
                public static void main(String[] args) throws Exception {
                    String payload = "{\"curp\": \"TEST900101HDFRRN09\"}";

                    HttpClient client = HttpClient.newBuilder()
                        .connectTimeout(Duration.ofSeconds(10))
                        .build();

                    HttpRequest request = HttpRequest.newBuilder()
                        .uri(URI.create("https://api.origoid.com/mex/social-security/v1/issste-records"))
                        .header("x-api-key", System.getenv("ORIGOID_API_KEY"))
                        .header("content-type", "application/json")
                        .timeout(Duration.ofSeconds(30))
                        .POST(HttpRequest.BodyPublishers.ofString(payload))
                        .build();

                    HttpResponse<String> response = client.send(
                        request, HttpResponse.BodyHandlers.ofString()
                    );

                    System.out.println(response.statusCode());
                    System.out.println(response.body());
                }
            }
        - lang: PHP
          source: >-
            <?php

            $payload = '{"curp": "TEST900101HDFRRN09"}';


            $ch =
            curl_init('https://api.origoid.com/mex/social-security/v1/issste-records');

            curl_setopt_array($ch, [
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => $payload,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_HTTPHEADER => [
                    'x-api-key: ' . getenv('ORIGOID_API_KEY'),
                    'content-type: application/json',
                ],
            ]);


            $response = curl_exec($ch);

            $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

            curl_close($ch);


            if ($status >= 400) {
                throw new Exception("HTTP $status");
            }


            $result = json_decode($response, true);

            print_r($result);
        - lang: Go
          source: "package main\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"time\"\n)\n\nfunc main() {\n\tpayload := []byte(`{\"curp\": \"TEST900101HDFRRN09\"}`)\n\treq, err := http.NewRequest(\"POST\", \"https://api.origoid.com/mex/social-security/v1/issste-records\", bytes.NewBuffer(payload))\n\tif err != nil { log.Fatal(err) }\n\treq.Header.Set(\"x-api-key\", os.Getenv(\"ORIGOID_API_KEY\"))\n\treq.Header.Set(\"content-type\", \"application/json\")\n\n\tclient := &http.Client{Timeout: 30 * time.Second}\n\tresp, err := client.Do(req)\n\tif err != nil { log.Fatal(err) }\n\tdefer resp.Body.Close()\n\n\tvar result map[string]any\n\tif err := json.NewDecoder(resp.Body).Decode(&result); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(result)\n}"
        - lang: C#
          source: |-
            using System;
            using System.Net.Http;
            using System.Text;
            using System.Threading.Tasks;

            class Program
            {
                static async Task Main()
                {
                    using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(30) };
                    client.DefaultRequestHeaders.Add("x-api-key",
                        Environment.GetEnvironmentVariable("ORIGOID_API_KEY"));

                    var payload = "{\"curp\": \"TEST900101HDFRRN09\"}";
                    var content = new StringContent(payload, Encoding.UTF8, "application/json");

                    var response = await client.PostAsync("https://api.origoid.com/mex/social-security/v1/issste-records", content);
                    response.EnsureSuccessStatusCode();

                    var body = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(body);
                }
            }
components:
  schemas:
    Envelope:
      type: object
      required:
        - status
        - type
        - message
        - transactionId
        - processedAt
        - billable
      properties:
        status:
          type: string
          enum:
            - OK
            - ERROR
          description: >-
            High-level outcome. `OK` means the request was successfully
            processed (regardless of business result). `ERROR` means the request
            was rejected or could not be processed.
        type:
          type: string
          description: >-
            Stable result type code. Includes generic codes (`SUCCESS`,
            `INVALID_REQUEST`, `UNAUTHORIZED`, `SERVICE_UNAVAILABLE`,
            `INTERNAL_ERROR`, `RATE_LIMIT_EXCEEDED`) plus endpoint-specific
            result codes — see this endpoint's response examples.
        message:
          type: string
          description: >-
            Human-readable summary of the result. Always in English (per
            Language Conventions in the API overview).
        data:
          type: object
          nullable: true
          description: >-
            Response payload. `null` on error responses. Shape depends on the
            endpoint — see each operation's response schema.
        errors:
          type: array
          description: >-
            Per-field error details. Present only on `INVALID_REQUEST`
            responses.
          items:
            $ref: '#/components/schemas/ErrorDetail'
        transactionId:
          type: string
          format: uuid
          description: >-
            Unique identifier of this request, generated by the API Gateway.
            Propagated end-to-end for traceability.
        processedAt:
          type: string
          format: date-time
          description: >-
            ISO 8601 datetime with Mexico City offset (`-06:00`). Always set by
            the API Gateway when the response leaves the system.
        billable:
          type: boolean
          description: >-
            Whether this request will be charged against the client's plan.
            Typically `true` for successful business results and `false` for
            validation errors or system errors that prevented processing.
    IssteRecordData:
      type: object
      description: >-
        Full ISSSTE record for a government worker. Present only when `type` is
        `SUCCESS`.
      properties:
        personalInfo:
          type: object
          properties:
            curp:
              type: string
              example: GOTM850312MDFMRX05
            givenNames:
              type: string
              example: MARIA FERNANDA
            firstSurname:
              type: string
              example: GOMEZ
            secondSurname:
              type: string
              example: TORRES
            rfc:
              type: string
              description: >-
                RFC as printed in the record. May be incomplete (10-char base
                without homoclave) or empty when the source PDF omits it.
              example: GOTM850312AB1
            gender:
              type: string
              enum:
                - H
                - M
              description: Normalized from source HOMBRE/MUJER.
              example: M
            dateOfBirth:
              type: string
              format: date
              description: ISO `YYYY-MM-DD` (normalized from source DD/MM/YYYY).
              example: '1985-03-12'
            maritalStatus:
              type: string
              nullable: true
              enum:
                - SOLTERO
                - CASADO
                - DIVORCIADO
                - VIUDO
                - UNION_LIBRE
              description: >-
                Civil status, normalized (source prints a gender-neutral '(A)'
                suffix, removed here). `null` when ISSSTE does not report it.
                Only SOLTERO/CASADO seen in the current corpus.
              example: SOLTERO
            nss:
              type: string
              description: Social security number (NSS).
              example: '10567890123'
        affiliation:
          type: object
          properties:
            beneficiaryType:
              type: string
              enum:
                - TRABAJADOR
                - PENSIONISTA
                - BECARIO
              description: >-
                Authoritative standing, derived from the record: a holder of a
                DIRECT pension is reported as PENSIONISTA even when the source
                document labels them TRABAJADOR. ISSSTE only exposes titulares.
              example: TRABAJADOR
            affiliationStatus:
              type: string
              enum:
                - ACTIVO
                - INACTIVO
                - FINADO
                - ''
              description: Raw official value. Empty string when not reported.
              example: ACTIVO
            governmentEntryDate:
              type: string
              format: date
              nullable: true
              description: Date the worker entered federal government employment (ISO).
              example: '2014-09-01'
            currentPositionStartDate:
              type: string
              format: date
              nullable: true
              example: '2018-07-01'
            terminationDate:
              type: string
              format: date
              nullable: true
              description: '`null` while `ACTIVO`; set for `INACTIVO`/`FINADO`.'
              example: null
        pensionRegime:
          type: object
          properties:
            seniorityYears:
              type: integer
              nullable: true
              description: >-
                Years of seniority (parsed from the source `N año(s)`). `null`
                when not reported.
              example: 10
            scheme:
              type: string
              enum:
                - CUENTAS INDIVIDUALES
                - DÉCIMO TRANSITORIO
                - SIN RÉGIMEN
                - ''
              description: Raw official pension regime.
              example: CUENTAS INDIVIDUALES
        employment:
          type: array
          description: >-
            Worker positions (PLAZAS TRABAJADOR). Empty for PENSIONISTA or
            INACTIVO without an active position.
          items:
            type: object
            properties:
              agency:
                type: string
                description: Ramo / government agency.
                example: SECRETARIA DE HACIENDA Y CREDITO PUBLICO (SHCP)
              payrollOffice:
                type: string
                description: Pagaduría.
                example: SHCP. SERVICIO DE ADMINISTRACION TRIBUTARIA
              startDate:
                type: string
                format: date
                example: '2018-07-01'
              baseSalary:
                type: string
                description: Salario base de cotización (MXN).
                example: '9451.20'
              positionType:
                type: string
                description: Tipo de plaza/pensión (e.g. CONFIANZA, BECARIO).
                example: CONFIANZA
              totalCompensation:
                type: string
                description: Remuneración total (MXN).
                example: '22590.16'
              coverage:
                type: string
                description: >-
                  Modalidad de seguros/prestaciones (source field `modilidad`
                  [sic] corrected to `coverage`).
                example: TODOS LOS SEGUROS, PRESTACIONES Y SERVICIOS
        pensions:
          type: array
          description: >-
            Pension records (survivor/retirement pensions, PENSIONES). Empty
            when none.
          items:
            type: object
            properties:
              category:
                type: string
                nullable: true
                enum:
                  - DIRECT
                  - SURVIVOR
                  - INSURANCE
                  - DISABILITY
                description: >-
                  Derived pension class from the payroll office: DIRECT (own
                  retirement, pagaduria DIRECTOS), SURVIVOR (deudos), INSURANCE
                  (cuenta individual aseguradora), DISABILITY (ITP/IPP).
                example: DIRECT
              agency:
                type: string
                example: PENSIONISTAS Y JUBILADOS CON CARGO AL I.S.S.S.T.E.
              payrollOffice:
                type: string
                example: I.S.S.S.T.E. PENSIONISTAS DEUDOS GUANAJUATO
              startDate:
                type: string
                format: date
                example: '2022-08-24'
              pensionNumber:
                type: string
                example: '9000000'
              pensionType:
                type: string
                description: >-
                  Numeric ISSSTE pension-type code (e.g. `101` retirement, `316`
                  survivor). 21+ codes.
                example: '316'
              pensionAmount:
                type: number
                description: Monthly pension amount (MXN).
                example: 25731.3
        contributionHistory:
          type: array
          description: >-
            Contribution (cotización) timeline. May be empty for `INACTIVO`
            without archived data.
          items:
            type: object
            properties:
              agency:
                type: string
                example: SECRETARIA DE HACIENDA Y CREDITO PUBLICO (SHCP)
              payrollOffice:
                type: string
                example: SHCP. SERVICIO DE ADMINISTRACION TRIBUTARIA
              periodType:
                type: string
                example: NORMAL
              startDate:
                type: string
                format: date
                example: '2014-09-01'
              endDate:
                type: string
                format: date
                nullable: true
                example: '2016-05-17'
              baseSalary:
                type: string
                description: Sueldo básico (MXN).
                example: '5906.45'
        fovissteHistory:
          type: array
          description: >-
            FOVISSSTE contribution history (housing fund) — HISTORIAL DE
            COTIZACIÓN FOVISSSTE. Same shape as contributionHistory; may mirror
            it or be a subset.
          items:
            type: object
            properties:
              agency:
                type: string
                example: SECRETARIA DE HACIENDA Y CREDITO PUBLICO (SHCP)
              payrollOffice:
                type: string
                example: SHCP. SERVICIO DE ADMINISTRACION TRIBUTARIA
              periodType:
                type: string
                example: NORMAL
              startDate:
                type: string
                format: date
                example: '2014-09-01'
              endDate:
                type: string
                format: date
                nullable: true
                example: '2016-05-17'
              baseSalary:
                type: string
                description: Sueldo básico (MXN).
                example: '5906.45'
        family:
          type: array
          description: >-
            Registered family members / dependants (FAMILIARES). Empty when
            none.
          items:
            type: object
            properties:
              curp:
                type: string
                example: GOTL120418HDFMRS00
              firstSurname:
                type: string
                example: GOMEZ
              secondSurname:
                type: string
                example: TORRES
              givenNames:
                type: string
                example: LUIS
              relationship:
                type: string
                enum:
                  - HIJO
                  - HIJA
                  - ESPOSO
                  - ESPOSA
                  - CONCUBINA
                  - CONCUBINO
                  - MADRE
                  - PADRE
                  - ABUELA
                  - ABUELO
                  - HIJA DE CONYUGE
                description: Parentesco (official raw value).
                example: HIJO
              status:
                type: string
                enum:
                  - ACTIVO
                  - SIN DERECHO
                  - EN CONSERVACIÓN DE DERECHOS
                  - POSIBLE DEUDO
                description: Derechohabiencia status of the family member (raw).
                example: ACTIVO
              dateOfBirth:
                type: string
                format: date
                example: '2012-04-18'
              registrationDate:
                type: string
                format: date
                description: Fecha de alta as a dependant.
                example: '2012-05-01'
        address:
          type: object
          description: Domicilio.
          properties:
            street:
              type: string
              example: AVENIDA EJEMPLO
            exteriorNumber:
              type: string
              example: '100'
            interiorNumber:
              type: string
              nullable: true
              example: A
            neighborhood:
              type: string
              description: Colonia.
              example: CENTRO
            municipality:
              type: string
              description: Delegación / municipio.
              example: CUAUHTEMOC
            state:
              type: string
              example: CIUDAD DE MEXICO
            postalCode:
              type: string
              example: '00000'
        clinic:
          type: object
          description: Assigned medical unit (clínica de adscripción).
          properties:
            code:
              type: string
              description: Clave.
              example: '9121200'
            type:
              type: string
              enum:
                - CMF
                - UMF
                - CMFE
                - CH
                - CAF
                - HAE
                - HG
                - CMFEQ
              description: Medical-unit type (raw).
              example: CMF
            name:
              type: string
              example: JUAREZ
            address:
              type: string
              example: JALAPA Nº 252, ROMA
            issteDelegation:
              type: string
              example: DELEGACION EN LA ZONA NORTE DE LA CDMX
            phone:
              type: string
              description: May be `NO DISPONIBLE` or comma-separated numbers.
              example: 55-84-49-81,55-74-13-19
        files:
          type: array
          description: >-
            Binary assets (inline base64). The document (PDF) is always present.
            A face is included only when the record contains a usable face; it
            is omitted when no face is present or its quality is too low.
          items:
            $ref: '#/components/schemas/Asset'
    ErrorDetail:
      type: object
      required:
        - field
        - code
        - message
      properties:
        field:
          type: string
          description: >-
            JSON path or field name where the validation failed. For body-level
            errors (malformed JSON, payload exceeds size limit, oneOf with all
            alternatives present) use `body`. For field-specific errors use the
            dotted path (e.g. `rfc`, `personalInfo.curp`, `front`).
        code:
          type: string
          description: >-
            Machine-readable error code. Standard catalog (non-exhaustive):
            `MISSING_REQUIRED_FIELD`, `INVALID_TYPE`, `INVALID_FORMAT`,
            `INVALID_ENUM_VALUE`, `INVALID_LENGTH`, `OUT_OF_RANGE`,
            `INVALID_ARRAY`, `UNKNOWN_FIELD`, `SCHEMA_MISMATCH`,
            `MISSING_DEPENDENT_FIELD`, `MALFORMED_JSON`, `PAYLOAD_TOO_LARGE`,
            `INVALID_SCOPE`, `INVALID_VALUE`. Some operations also emit
            endpoint-specific codes documented in each operation's spec (e.g.
            `INVALID_RFC_FORMAT`, `NAME_TOO_SHORT`, `QR_NOT_FOUND`).
        message:
          type: string
          description: Human-readable description of the field-level error.
    Asset:
      type: object
      description: >-
        Binary asset (image or document) returned inline as base64. The `files`
        array contains ONLY assets actually produced; an
        expected-but-unavailable asset is omitted (never null inside the array).
      required:
        - kind
        - contentType
        - sizeBytes
        - content
      properties:
        kind:
          type: string
          description: Semantic asset name (e.g. document, face, signature).
        contentType:
          type: string
          description: MIME type (e.g. application/pdf, image/jpeg, application/xml).
        sizeBytes:
          type: integer
          description: Decoded size in bytes.
        content:
          type: string
          description: Base64-encoded bytes.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    BasicAuth:
      type: http
      scheme: basic

````