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

# Verify Entity (KYC)

> Performs identity (Know Your Customer) verification checks such as BVN, NIN, passport, driver's license, bank account verification and more, across multiple supported countries.



## OpenAPI

````yaml /api-reference/specs/cowork.json post /v2/api/entities/identity
openapi: 3.0.3
info:
  title: Youverify Cowork API
  version: 2.0.0
  description: >-
    Entity, Activity, Signal and Case Management endpoints — the core Cowork
    platform object model. Assembled from doc.youverify.co/api-reference-sdk,
    endpoints kept in the exact order they appear in the GitBook navigation.


    Account-wide error responses (401, 429, 500 on every endpoint; 402 on paid
    verification calls; 404 on lookup-by-ID calls) are sourced verbatim from
    Youverify's own "Youverify OS Error Codes" and "Response Codes" pages
    (doc.youverify.co/youverify-os-error-codes, /get-started/response-codes) and
    attached via components.responses, since those pages document them
    account-wide rather than per endpoint. Any error example that a specific
    endpoint's own page actually showed is kept exactly as documented there
    instead of being replaced by these.
  contact:
    name: Youverify Support
    email: support@youverify.co
servers:
  - url: https://api.youverify.co
    description: Production (live, billed)
  - url: https://api.sandbox.youverify.co
    description: Sandbox (test data, not billed)
security:
  - ApiKeyAuth: []
tags:
  - name: Entity Management
    description: >-
      Create, retrieve and verify entities (individuals or businesses) — the
      core object every check attaches to.
  - name: Activity Management
    description: Inspect the verification activities run against your account.
  - name: Signal Management
    description: Retrieve monitoring signals and their events, by entity or business.
  - name: Case Management
    description: Create and manage compliance cases, including AI-generated case summaries.
paths:
  /v2/api/entities/identity:
    post:
      tags:
        - Entity Management
      summary: Verify Entity (KYC)
      description: >-
        Performs identity (Know Your Customer) verification checks such as BVN,
        NIN, passport, driver's license, bank account verification and more,
        across multiple supported countries.
      operationId: verifyEntityKyc
      parameters:
        - name: token
          in: header
          required: true
          schema:
            type: string
          description: API secret token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                entityType:
                  type: string
                  description: Type of entity
                  enum:
                    - individual
                isSubjectConsent:
                  type: boolean
                  description: Consent of the individual being verified
                identity:
                  type: object
                  description: Identity document data
                  properties:
                    id:
                      type: string
                      description: Unique identifier (BVN, NIN, Passport, etc.)
                    countryCode:
                      type: string
                      description: ISO 3166-1 alpha-2 code
                    idType:
                      type: string
                      description: >-
                        Document type code, e.g. bvn, nin, passport,
                        drivers_license, pvc, phone, nin_phone,
                        keDriversLicense, keAlienId, keNationalId, kePassport,
                        ghVoter, oldGhVoter, ghPassport, zaSAID
                    mobile:
                      type: string
                      description: Mobile number (nin_phone/phone)
                    accountNumber:
                      type: string
                      description: 10-digit account for BAV
                    bankCode:
                      type: string
                      description: Bank code for BAV
                    lastName:
                      type: string
                      description: Last name (passport verification)
                    shouldRetrivedNin:
                      type: boolean
                      description: 'Fetch linked NIN from BVN (default: false)'
                    premiumBVN:
                      type: boolean
                      description: 'Premium BVN check (default: false)'
                    premiumNin:
                      type: boolean
                      description: 'Premium NIN check (default: false)'
                    fullDetails:
                      type: boolean
                      description: 'Extended BVN profile (default: false)'
                    metadata:
                      type: object
                      description: Optional audit/tracking data
                    validations:
                      type: object
                      description: Cross-check validation payload
                    bank:
                      type: string
                      description: Bank name (South Africa)
                    bankBranchCode:
                      type: string
                      description: Required for SA BAV
                    accountType:
                      type: string
                      description: 'Account type for ZA (default: Savings)'
                      enum:
                        - Savings
                        - Current
                    type:
                      type: string
                      description: Voter card type for Ghana
                      enum:
                        - new_voter_card
                        - old_voter_card
                  required:
                    - countryCode
                    - idType
              required:
                - entityType
                - isSubjectConsent
                - identity
            example:
              entityType: individual
              isSubjectConsent: true
              identity:
                id: A11111111
                countryCode: NG
                idType: bvn
                premiumBVN: false
      responses:
        '200':
          description: Success (existing entity / identity found)
          content:
            application/json:
              example:
                success: true
                status_code: 200
                message: Identity check successful!
                data:
                  id: ent_69da84b4c0ac039957be5439
                  entity:
                    entityId: ent_69da84b4c0ac039957be5439
                    isNew: false
                    message: ''
                  identityCheck:
                    status: found
                    firstName: Sarah
                    lastName: Doe
                    dateOfBirth: '1988-04-04'
                    middleName: Jane
                    image: base64 image
                    phone: '08000000000'
                    email: null
                    gender: Female
                    adverseMediaReport: null
                    amlReport: null
                    type: nin
                    nationality: NG
                    idNumber: '11111111111'
                    businessId: 69b3c7f1556f687f7fb8a5bd
                    parentId: null
                    requestedBy:
                      firstName: Jamal
                      lastName: Akinyelu
                      middleName: ''
                      id: 69b3c7f6556f687f7fb8a5c7
                    isExpired: false
                    reason: null
                    verificationId: 69da8ae76398f3a575c950e0
                links: []
        '201':
          description: Success (new business created via identity check)
          content:
            application/json:
              example:
                success: true
                status_code: 201
                message: Business check successful!
                data:
                  id: 69dab502682626b4e9e6d77c
                  entity:
                    entityId: ent_69dab0119abad240d91071a4
                    isNew: true
                    message: Entity created successfully.
                  businessCheck:
                    id: 69dab502682626b4e9e6d77c
                    status: found
                    businessId: 69b3c7f1556f687f7fb8a5bd
                    parentId: null
                    isConsent: true
                    type: basic_company_check
                    searchTerm: RC00000000
                    name: John Doe Inc
                    registrationNumber: RC00000000
                    companyStatus: ACTIVE
                    requestedAt: '2026-04-11T20:54:27.818Z'
                    country: Nigeria
                    createdAt: '2022-11-03T14:16:54.235Z'
                    lastModifiedAt: '2022-11-03T14:16:54.235Z'
                    typeOfEntity: PRIVATE COMPANY LIMITED BY SHARES
                    registrationDate: '2017-06-09'
                    natureOfBusiness: null
                    amlReport: null
                    adverseMediaReport: null
                    requestedBy:
                      firstName: Jamal
                      lastName: Akinyelu
                      middleName: ''
                      id: 69b3c7f6556f687f7fb8a5c7
        '401':
          $ref: '#/components/responses/Error401Unauthorized'
        '402':
          $ref: '#/components/responses/Error402PaymentRequired'
        '404':
          description: Not Found
          content:
            application/json:
              example:
                success: false
                statusCode: 404
                message: You have attempted to get a resource that does not exist.
                name: ResourceNotFoundError
                data: {}
        '429':
          $ref: '#/components/responses/Error429TooManyRequests'
        '500':
          $ref: '#/components/responses/Error500ServerError'
components:
  responses:
    Error401Unauthorized:
      description: Unauthorized — the token header is missing or invalid.
      content:
        application/json:
          example:
            success: false
            statusCode: 401
            message: Permission denied
            name: UnauthorizedError
            data: {}
    Error402PaymentRequired:
      description: Payment Required — your account balance is too low to run this check.
      content:
        application/json:
          example:
            success: false
            statusCode: 402
            message: Insufficient fund
            name: PaymentRequiredError
            data: {}
    Error429TooManyRequests:
      description: Too Many Requests — you have exceeded the rate limit; wait and retry.
      content:
        application/json:
          example:
            success: false
            statusCode: 429
            message: Too many requests
            name: RateLimitError
            data: {}
    Error500ServerError:
      description: >-
        Internal Server Error — a rare, unexpected failure on Youverify's side.
        Contact support@youverify.co if it persists.
      content:
        application/json:
          example:
            success: false
            statusCode: 500
            message: Internal Server Error
            name: Error
            data: {}
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: token
      description: Your Youverify API secret key. Never expose client-side.

````