Pak Identity icon

Pak Identity Data API: citizen ID, family tree and fees

National Database & Registration Authority · Identity

Pak Identity is NADRA's citizen identity app for CNIC and NICOP applications, digital ID cards, family records and registration-center appointments. The sign-in call at /v1/auth/session returns a session token plus the citizen profile, while /v1/id-wallet/documents loads dematerialized ID documents from the vault, /v1/id-wallet/family lists family members by CNIC, /v1/appointments/slots finds bookable slots and /v1/payments/checkout starts fee checkout.

Pak Identity is NADRA's official citizen identity app for CNIC, NICOP, CRC and family-tree services. After a citizen signs in at /v1/auth/session, the session returns a JWT plus profile flags (digitalCardEnabled, familyTreeEnabled), and the app loads dematerialized ID documents from the digital vault (/v1/id-wallet/documents), family members by CNIC (/v1/id-wallet/family), registration-center appointment slots (/v1/appointments/slots), and application-fee checkout via card or a QR rail (/v1/payments/checkout). The session token is attached as Authorization: Bearer on subsequent calls.

Screenshots

  • Pak Identity screenshot 1
  • Pak Identity screenshot 2
  • Pak Identity screenshot 3
  • Pak Identity screenshot 4
  • Pak Identity screenshot 5

API surface

  • Sign in citizen (create session)

    POST /v1/auth/session osint

    Signs a citizen into Pak Identity and returns the JWT, refresh token, CNIC (citizenNumber) and feature flags that unlock the digital card, family tree and other NADRA services.

    Auth: Unauthenticated sign-in. The response token is stored as access_token and sent as Authorization: Bearer on later calls; renewal uses the session-refresh call.

    • citizenNumber
    • fullName
    • email
    • mobileNumber
    • token
    • refreshToken
    • sessionKey
    • deviceId
    • digitalCardEnabled
    • familyTreeEnabled
    • familyIDCardFeatureEnabled
    • verificationStatus
    • pakidUser

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/auth/session HTTP/1.1
    Content-Type: application/json
    
    {
      "username": "3520212345671",
      "password": "********",
      "deviceId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    }
    {
      "citizenNumber": "3520212345671",
      "fullName": "AHMED ALI",
      "email": "[email protected]",
      "mobileNumber": "03001234567",
      "token": "eyJhbGciOiJIUzI1NiJ9...",
      "refreshToken": "d8f1c2e4-9a1e-4c2b-8f01-55c17a91f0e2",
      "sessionKey": "3f2b8c1d9a1e4c2b",
      "deviceId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "digitalCardEnabled": true,
      "familyTreeEnabled": true,
      "familyIDCardFeatureEnabled": true,
      "verificationStatus": "VERIFIED",
      "pakidUser": true
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's citizen sign-in and session bootstrap flow.
    • Captures the token and feature flags every later call depends on.
  • Renew access token

    GET /v1/auth/session/refresh/{refreshToken} osint

    Exchanges the stored refreshToken for a new JWT (token) and rotating refreshToken used on every subsequent citizen call.

    Auth: Path parameter refreshToken from the sign-in response (stored as refresh_token). Returns a new token used as Authorization: Bearer.

    • email
    • token
    • refreshToken

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/auth/session/refresh/d8f1c2e4-9a1e-4c2b-8f01-55c17a91f0e2 HTTP/1.1
    {
      "email": "[email protected]",
      "token": "eyJhbGciOiJIUzI1NiJ9...",
      "refreshToken": "c9e2b1a0-7d4f-41aa-90ee-22b10c88aa11"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's session-renewal flow.
  • Fetch digital ID documents

    GET /v1/id-wallet/documents opendata

    Returns the citizen's dematerialized ID documents (CNIC/NICOP and related cards) as labeled records with identifiers and display fields for the digital vault screen.

    Auth: Authorization: Bearer token from the sign-in call (or its renewal).

    • message
    • status
    • message_local
    • data
    • label
    • identifiers
    • displayData
    • key
    • title
    • value

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/id-wallet/documents HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    {
      "message": "OK",
      "status": "SUCCESS",
      "message_local": "کامیاب",
      "data": [
        {
          "label": "CNIC",
          "identifiers": {
            "citizenNumber": "3520212345671",
            "documentType": "CNIC"
          },
          "displayData": [
            {"key": "name", "title": "Name", "value": "AHMED ALI"},
            {"key": "fatherName", "title": "Father Name", "value": "MUHAMMAD ALI"},
            {"key": "dateOfBirth", "title": "Date of Birth", "value": "1990-03-14"},
            {"key": "expiryDate", "title": "Expiry", "value": "2030-03-14"}
          ]
        }
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's digital ID vault screen.
  • Fetch family digital-ID members

    GET /v1/id-wallet/family osint

    Lists family members linked to the signed-in citizen's digital ID, each with CNIC, name, relation and photograph used by the family-tree and family digital-ID screens.

    Auth: Authorization: Bearer token from the sign-in call.

    • citizenNumber
    • name
    • relation
    • photograph

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/id-wallet/family HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    [
      {
        "citizenNumber": "3520298765432",
        "name": "FATIMA ALI",
        "relation": "SPOUSE",
        "photograph": "/9j/4AAQSkZJRgABAQAAAQABAAD..."
      },
      {
        "citizenNumber": "3520211122233",
        "name": "HASSAN ALI",
        "relation": "SON",
        "photograph": "/9j/4AAQSkZJRgABAQAAAQABAAD..."
      }
    ]

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's family-tree and family digital-ID screens.
  • List available NRC appointment slots

    GET /v1/appointments/slots opendata

    Returns bookable time slots at a registration center so a citizen can hold and then book an appointment for CNIC/NICOP capture.

    Auth: Authorization: Bearer token from the sign-in call. Query centerId and date select the registration center.

    • success
    • message
    • validationErrors
    • data
    • slotId
    • startTime
    • endTime
    • capacity
    • booked
    • available

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/appointments/slots?centerId=LHR-NRC-12&date=2026-10-02 HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    {
      "success": true,
      "message": "Slots available",
      "validationErrors": null,
      "data": [
        {
          "slotId": "SLOT-4412",
          "startTime": "09:00",
          "endTime": "09:20",
          "capacity": 8,
          "booked": 3,
          "available": true
        }
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's appointment booking flow.
  • Initiate application fee payment

    POST /v1/payments/checkout openfinance

    Starts card checkout for a CNIC/NICOP/CRC application fee and returns currency, fee and the hosted initPaymentUrl. A QR-based rail uses a sibling QR-init call.

    Auth: Authorization: Bearer token from the sign-in call.

    • currency
    • fee
    • initPaymentUrl
    • message
    • status

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/payments/checkout HTTP/1.1
    Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
    Content-Type: application/json
    
    {
      "trackingId": "TID-20261002-88421",
      "citizenNumber": "3520212345671",
      "paymentSource": "CARD"
    }
    {
      "currency": "PKR",
      "fee": "1500.00",
      "initPaymentUrl": "https://payments.example.pk/checkout/sess_9f3c",
      "message": "Payment session created",
      "status": "PENDING"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's application-fee checkout flow.

Data categories

  • citizen identity
  • digital ID documents
  • family tree
  • appointments
  • application fees

Where teams use this data

  • Citizen identity onboarding

    A KYC or onboarding flow can consume citizenNumber, fullName, email, mobileNumber and verificationStatus from the authenticate response (plus digitalCardEnabled) to confirm a Pakistani citizen before opening a wallet or SIM.

  • Digital ID document display

    An identity vault or verifier can pull document records from /v1/id-wallet/documents — label, identifiers.citizenNumber and displayData key/title/value — to render a CNIC/NICOP without a physical card.

  • Household / family-tree matching

    Lending or social-protection stacks can list family members via citizenNumber, name, relation and photograph from /v1/id-wallet/family to match dependents against a household roster.

  • NRC appointment and fee reconciliation

    A citizen-services desk can poll available slots (slotId, startTime, capacity) then record application fees from /v1/payments/checkout (currency, fee, status, initPaymentUrl) against the trackingId.

Frequently asked questions

What identity data does Pak Identity expose after sign-in?

The sign-in response carries citizenNumber (CNIC), fullName, email, mobileNumber, token, refreshToken and flags such as digitalCardEnabled and familyTreeEnabled that gate the rest of the app.

How are digital ID documents returned?

GET /v1/id-wallet/documents returns a data array of document records with label, identifiers and displayData (key, title, value) used by the digital vault screen.

Can family members be listed from the same session?

Yes. GET /v1/id-wallet/family returns citizenNumber, name, relation and photograph for each linked member, which feeds the family-tree screen.

How are application fees collected?

POST /v1/payments/checkout returns currency, fee, initPaymentUrl, message and status so the app can open card checkout or a QR-based rail for the trackingId.

Topics

  • Pak Identity API
  • NADRA CNIC data
  • digital ID documents
  • family tree CNIC
  • NRC appointment slots
  • Pak Identity payment

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote