# List KYC links

Returns a list of KYC links. The links are returned sorted by creation date, with the most recent links appearing first. Optionally filter by status.

Endpoint: GET /kyc-links
Version: 1.0.0
Security: JWT

## Security:

  - `JWT` (unknown)
    http bearer JWT

## Query parameters:

  - `status` (string)
    Filter KYC links by status. Uses the same values as the KYC link's `status` field.

  - `before` (string)
    Return only resources created at or before this time. Send an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp with an offset, such as `2025-02-18T12:03:44Z` or `2025-02-18T17:33:44+05:30`. A timestamp without an offset is read as UTC. A bare date (`YYYY-MM-DD`) means the end of that day in UTC (`23:59:59.999999Z`). An invalid value returns `400 Bad Request`. Use this to avoid page drift. See [Pagination parameters](/platform/pagination#parameters) for more details.

  - `after` (string)
    Return only resources created at or after this time. Send an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp with an offset, such as `2025-01-18T12:03:44Z` or `2025-01-18T17:33:44+05:30`. A timestamp without an offset is read as UTC. A bare date (`YYYY-MM-DD`) means the start of that day in UTC (`00:00:00Z`). An invalid value returns `400 Bad Request`. Use this to avoid page drift. See [Pagination parameters](/platform/pagination#parameters) for more details.

  - `per_page` (integer)
    Number of resources per page. Should be between 1 and 100.

  - `page` (integer)
    Page number for pagination. Starts from 1. Get the next page number from the `next` field in the response.

## Response 200:

  - `200` (unknown)
    List of KYC links matching the criteria.

## Response 200 fields (application/json):

  - `data` (array)

  - `data.id` (string)
    The unique identifier for the KYC link.
    Example: kyc_69b3f97eSThQY

  - `data.status` (string)
    The current status of the KYC link.
- `initiated` — the link has been created and the customer has not started.
- `in_progress` — the customer has started the verification.
- `submitted` — the customer has finished and the verification result is pending.
- `action_required` — more information is needed from the customer.
- `under_review` — the information provided is being reviewed.
- `completed` — the customer has been verified. Terminal.
- `failed` — the verification could not be completed. Terminal.
- `expired` — the link expired before the customer finished. Terminal.
- `rejected` — the verification was rejected on review. Terminal.
    Enum: "initiated", "in_progress", "submitted", "action_required", "under_review", "completed", "failed", "expired", "rejected"

  - `data.link_url` (string)
    The URL to share with the customer to complete the KYC verification.
    Example: https://app.glomopay.com/kyc-links/kyc_69b3f97eSThQY

  - `data.expires_at` (string)
    When the KYC link expires, as an ISO 8601 date-time in UTC.
    Example: 2026-06-11T11:48:14.361Z

  - `data.created_at` (string)
    When the KYC link was created, as an ISO 8601 date-time in UTC.
    Example: 2026-03-13T11:48:14.363Z

  - `data.customer_id` (string | null)
    The unique identifier of the customer associated with this KYC link. `null` if the KYC link was created with an email address only (no existing customer).
    Example: cust_abc123XYZ

  - `data.tracker` (array)
    A chronological list of status events for the KYC verification process.

  - `data.tracker.created_at` (string)
    When the tracker event happened, as an ISO 8601 date-time in UTC.
    Example: 2026-03-13T12:00:00.000Z

  - `data.tracker.text` (string)
    Human-readable description of the tracker event.
    Example: KYC verification completed

  - `data.documents` (array)
    The list of KYC documents associated with this KYC link. Each document has a `document_id` field that can be used with `GET /api/v1/document/{document_id}` to retrieve full document details (e.g. preview URL, file name) once the document has been captured.

  - `data.documents.id` (string)
    The unique identifier for the KYC document record.
    Example: kycdoc_69b3f97ef0bmk

  - `data.documents.document_id` (string | null)
    The identifier of the uploaded document file. This is populated once the customer has uploaded the document (i.e. when `status` is `captured`). Use this value with `GET /api/v1/document/{document_id}` to retrieve the full document details including the preview URL.
    Example: doc_69b3f9b4MJgKZ

  - `data.documents.type` (string)
    The type of KYC document.
    Enum: "pan_card", "aadhaar", "photograph", "passport", "driving_license", "selfie_proof", "signature", "contribution_agreement", "photo_on_aadhaar", "applicant_esign", "bank_statement", "vkyc", "digilocker_zip", "other"

  - `data.documents.status` (string)
    The capture status of this KYC document.
    Enum: "not_captured", "captured"

  - `data.documents.created_at` (string)
    When the KYC document record was created, as an ISO 8601 date-time in UTC.
    Example: 2026-03-13T11:48:14.458Z

  - `data.documents.uploaded_at` (string | null)
    When the document file was uploaded, as an ISO 8601 date-time in UTC. `null` if the document has not yet been captured.
    Example: 2026-03-13T11:49:08.093Z

  - `page_meta` (object)

  - `page_meta.current` (integer)
    The current page number.
    Example: 2

  - `page_meta.previous` (integer | null)
    The previous page number.
    Example: 1

  - `page_meta.next` (integer | null)
    The next page number.
    Example: 3

  - `page_meta.per_page` (integer)
    The number of items per page.
    Example: 20

  - `page_meta.pages` (integer)
    The total number of pages.
    Example: 10

  - `page_meta.count` (integer)
    The total number of items.
    Example: 200

## Response 400:

  - `400` (unknown)
    Bad request

## Response 400 fields (application/json):

  - `error` (string)
    Example: Bad Request

  - `message` (string)
    Error message indicating why the request failed.

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `error` (string)
    Example: Unauthorized

  - `message` (string)
    Example: Invalid or missing authentication token

