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

# Get Customer KYC Link

> Generate a KYC verification link for the customer to complete identity verification

<ParamField header="Authorization" type="string" required>
  Bearer token: `Bearer YOUR_ACCESS_TOKEN`
</ParamField>

<ParamField path="yativoCardId" type="string" required>
  The customer's `yativo_card_id`.
</ParamField>

<Note>
  Call this endpoint after OTP verification. Open `kyc_url` in the customer's browser. They complete identity verification (government ID upload and liveness check) on the hosted verification page. After completion, poll [Check KYC Status](/api-reference/cards/kyc-status) until `kyc_status` is `approved`. KYC completion is not delivered as a webhook.
</Note>

<Note>
  **Link expiry:** a verification link is valid for **1 hour**. Calling this endpoint again within that hour returns the same link, in `sumsub_link` instead of `kyc_url`, so read `kyc_url ?? sumsub_link`. After an hour a new link is generated automatically. Add `?refresh=true` to force a new link.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET 'https://crypto-api.yativo.com/api/v1/yativo-card/customers/yativo_card_customer_8f9a..._1769031332068/kyc-link' \
    -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "success": true,
    "message": "KYC link generated. Open the link to complete identity verification.",
    "data": {
      "yativo_card_id": "yativo_card_customer_8f9a..._1769031332068",
      "kyc_url": "https://verify.example.com/...",
      "next_step": "kyc_status",
      "instructions": "Open the KYC link to upload your government ID and complete liveness check"
    }
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.