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

# Initiate KYC verification

> Generates a hosted KYC link for the user and returns the current KYC status snapshot.



## OpenAPI

````yaml post /v1/users/{user_id}/kyc/links
openapi: 3.1.0
info:
  version: 0.0.1
  title: Privy API
  description: >-
    REST API for Privy's wallet infrastructure — provision and manage wallets
    across EVM, Solana, and Bitcoin, authenticate users, sign transactions, and
    configure programmable policies and authorization intents.
  contact:
    name: Privy
    url: https://www.privy.io/
    email: support@privy.io
servers:
  - url: https://api.privy.io
security: []
tags:
  - name: Accounts
    description: Operations related to asset accounts
  - name: Aggregations
    description: Operations related to aggregations for tracking and measuring metrics
  - name: Apps
    description: Operations related to app settings and allowlist management
  - name: Cards
    description: Operations related to stablecoin-backed card issuing
  - name: Client Auth
    description: OAuth token exchange and device authorization operations
  - name: Condition Sets
    description: Operations related to condition sets
  - name: Embedded wallets
    description: Operations related to embedded wallet creation and authentication
  - name: Fiat
    description: Operations related to fiat onramping and offramping
  - name: Intents
    description: Operations related to authorization intents for wallet actions
  - name: Key quorums
    description: Operations related to key quorums
  - name: Kraken Embed
    description: >-
      Operations for Kraken Embed integration, including quotes, trades, user
      management, and portfolio operations
  - name: OAuth
    description: >-
      OAuth 2.0 endpoints including Device Authorization Grant (RFC 8628) for
      CLI and limited-input device login flows
  - name: Organizations
    description: Operations related to organizations
  - name: Policies
    description: Operations related to policies
  - name: Shared
    description: Common schemas shared across resources
  - name: Swaps
    description: Operations for swapping tokens within wallets
  - name: Teams
    description: Operations related to dashboard team management
  - name: Transactions
    description: Operations related to transactions
  - name: User signers
    description: Operations related to user signers
  - name: Users
    description: Operations related to users
  - name: Wallet Actions
    description: Operations related to wallet actions
  - name: Wallet Automations
    description: Operations related to wallet automations
  - name: Wallets
    description: Operations related to wallets
  - name: Webhooks
    description: >-
      Webhook events that Privy sends to your configured endpoint when specific
      actions occur in your app
  - name: Yield
    description: >-
      Operations for depositing and withdrawing funds from ERC-4626 yield vaults
      (Morpho, Aave)
paths:
  /v1/users/{user_id}/kyc/links:
    post:
      tags:
        - Fiat
      summary: Initiate KYC verification
      description: >-
        Generates a hosted KYC link for the user and returns the current KYC
        status snapshot.
      operationId: initiateKycLinks
      parameters:
        - schema:
            type: string
            description: The ID of the user.
          required: true
          name: user_id
          in: path
        - schema:
            type: string
            description: ID of your Privy app.
          required: true
          name: privy-app-id
          in: header
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KycLinksRequestBody'
      responses:
        '200':
          description: KYC status snapshot including the hosted verification link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KycStatusResponse'
      security:
        - appSecretAuth: []
components:
  schemas:
    KycLinksRequestBody:
      type: object
      properties:
        provider:
          $ref: '#/components/schemas/KyxProvider'
        environment:
          $ref: '#/components/schemas/KyxEnvironment'
        email:
          type: string
          format: email
          description: Email address for the KYC session.
        endorsements:
          type: array
          items:
            $ref: '#/components/schemas/KyxEndorsementName'
          description: Endorsements to request during KYC.
        redirect_uri:
          type: string
          format: uri
          description: URI to redirect the user after completing KYC.
        client_agreement_id:
          type: string
          description: Client-side agreement ID for ToS acceptance.
      required:
        - provider
      additionalProperties: false
      description: Request body for initiating a hosted KYC flow.
      title: KycLinksRequestBody
      x-stainless-model: fiat.kyc_links_request_body
    KycStatusResponse:
      type: object
      properties:
        provider:
          $ref: '#/components/schemas/KyxProvider'
        environment:
          $ref: '#/components/schemas/KyxEnvironment'
        status:
          $ref: '#/components/schemas/KyxProviderStatus'
        tos:
          $ref: '#/components/schemas/KyxTosStatusDetail'
        endorsements:
          type: array
          items:
            $ref: '#/components/schemas/KyxEndorsement'
        capabilities:
          $ref: '#/components/schemas/KyxCapabilities'
        requirements_due:
          type: array
          items:
            type: string
          description: Top-level items still needed (e.g. link a bank account).
        future_requirements_due:
          type: array
          items:
            type: string
          description: Items that will be required in the future.
        kyc:
          $ref: '#/components/schemas/KyxVerificationStatusDetail'
      required:
        - provider
        - environment
        - status
        - tos
        - endorsements
        - capabilities
        - requirements_due
        - future_requirements_due
        - kyc
      description: Full KYC status for a user with a given provider.
      title: KycStatusResponse
      x-stainless-model: fiat.kyc_status_response
    KyxProvider:
      type: string
      enum:
        - bridge
      description: KYC/KYB provider identifier.
      title: KyxProvider
      x-stainless-model: fiat.kyx_provider
    KyxEnvironment:
      type: string
      enum:
        - production
        - sandbox
      description: Provider environment (production or sandbox).
      title: KyxEnvironment
      x-stainless-model: fiat.kyx_environment
    KyxEndorsementName:
      type: string
      maxLength: 256
      description: Endorsement identifier.
      title: KyxEndorsementName
      example: sepa
      x-stainless-model: fiat.kyx_endorsement_name
    KyxProviderStatus:
      type: string
      description: KYC/KYB status for the user.
      title: KyxProviderStatus
      example: approved
      x-stainless-model: fiat.kyx_provider_status
    KyxTosStatusDetail:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/KyxTosStatus'
        link:
          type: string
          format: uri
          description: ToS acceptance link, if pending.
      required:
        - status
      description: Terms of Service acceptance status for a KYC or KYB flow.
      title: KyxTosStatusDetail
      x-stainless-model: fiat.kyx_tos_status_detail
    KyxEndorsement:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/KyxEndorsementName'
        status:
          $ref: '#/components/schemas/KyxEndorsementStatus'
        missing:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Missing requirements, or null if complete.
      required:
        - name
        - status
        - missing
      description: An endorsement with its approval status and missing requirements.
      title: KyxEndorsement
      x-stainless-model: fiat.kyx_endorsement
    KyxCapabilities:
      type: object
      properties:
        payin_crypto:
          $ref: '#/components/schemas/KyxCapabilityStatus'
        payout_crypto:
          $ref: '#/components/schemas/KyxCapabilityStatus'
        payin_fiat:
          $ref: '#/components/schemas/KyxCapabilityStatus'
        payout_fiat:
          $ref: '#/components/schemas/KyxCapabilityStatus'
      required:
        - payin_crypto
        - payout_crypto
        - payin_fiat
        - payout_fiat
      description: Capability statuses for the customer.
      title: KyxCapabilities
      x-stainless-model: fiat.kyx_capabilities
    KyxVerificationStatusDetail:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/KyxVerificationStatus'
        link:
          type: string
          format: uri
          description: Verification link, if applicable.
        rejection_reasons:
          type: array
          items:
            type: string
          description: Reasons for rejection, if status is closed or action_required.
      required:
        - status
      description: Verification status detail for a KYC or KYB check.
      title: KyxVerificationStatusDetail
      x-stainless-model: fiat.kyx_verification_status_detail
    KyxTosStatus:
      type: string
      description: Status of Terms of Service acceptance. Passthrough from the provider.
      title: KyxTosStatus
      example: approved
      x-stainless-model: fiat.kyx_tos_status
    KyxEndorsementStatus:
      type: string
      description: Status of an endorsement. Passthrough from the provider.
      title: KyxEndorsementStatus
      example: approved
      x-stainless-model: fiat.kyx_endorsement_status
    KyxCapabilityStatus:
      type: string
      description: Status of a capability. Passthrough from the provider.
      title: KyxCapabilityStatus
      example: active
      x-stainless-model: fiat.kyx_capability_status
    KyxVerificationStatus:
      type: string
      description: Status of KYC/KYB verification. Passthrough from the provider.
      title: KyxVerificationStatus
      example: approved
      x-stainless-model: fiat.kyx_verification_status
  securitySchemes:
    appSecretAuth:
      type: http
      scheme: basic
      description: >-
        Basic Auth header with your app ID as the username and your app secret
        as the password.

````