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

# Create Verification Token

> Creates an identity verification (Sumsub WebSDK) access token for an individual account so the account holder can complete ID document upload and liveness checks in your app. Tokens expire after 30 minutes; request a new one when it expires. For business accounts, use the related-person KYC link instead.

Creates an identity verification access token for an **individual** account, so the account holder can complete ID document upload and a liveness check using the Sumsub WebSDK embedded in your application.

For related persons on business accounts, use [Generate KYC Link](/api-reference/endpoint/accounts/kyc-link) instead — it provides a hosted page and requires no SDK integration.

## Example Request

```bash theme={null}
curl -X POST "https://api.rolla.xyz/api/v1/external/accounts/b6075be0-f1d0-451f-a468-3e94563101d2/verification" \
  -H "X-API-Key: your_api_key_here"
```

## Example Response

```json theme={null}
{
  "success": true,
  "message": "Verification token created successfully",
  "data": {
    "sumsubToken": {
      "token": "_act-sbx-jwt-eyJhbGciOiJub25lIn0...",
      "userId": "2b51a9ce-c391-4751-b10c-18b18b256018"
    },
    "externalUserId": "2b51a9ce-c391-4751-b10c-18b18b256018"
  }
}
```

## Using the token

Pass the token to the [Sumsub WebSDK](https://docs.sumsub.com/docs/get-started-with-web-sdk) in your frontend. The SDK walks the user through document capture and liveness:

```javascript theme={null}
import SumsubWebSdk from '@sumsub/websdk-react';

<SumsubWebSdk
  accessToken={data.sumsubToken.token}
  expirationHandler={() => fetchNewToken()}
/>
```

<Info>
  Tokens expire after **30 minutes**. Use the SDK's expiration handler to request a fresh token from this endpoint.
</Info>

Poll [Get Verification Status](/api-reference/endpoint/accounts/verification-status) to confirm the result before submitting the application.


## OpenAPI

````yaml POST /accounts/{accountId}/verification
openapi: 3.1.0
info:
  title: Rolla Developer API
  description: >-
    API for programmatic transaction management on the Rolla platform. Monetary
    `amount` fields use the smallest unit of the referenced currency unless an
    endpoint says otherwise (e.g. NGN = kobo, USD = cents, where **100 cents =
    USD 1.00**).
  version: 1.0.0
servers:
  - url: https://api.rolla.xyz/api/v1/external
    description: Production server
security:
  - apiKeyAuth: []
paths:
  /accounts/{accountId}/verification:
    post:
      summary: Create Verification Token
      description: >-
        Creates an identity verification (Sumsub WebSDK) access token for an
        individual account so the account holder can complete ID document upload
        and liveness checks in your app. Tokens expire after 30 minutes; request
        a new one when it expires. For business accounts, use the related-person
        KYC link instead.
      operationId: createAccountVerificationToken
      parameters:
        - name: accountId
          in: path
          required: true
          description: >-
            Identifier of an account owned by the same user as your API key's
            business
          schema:
            type: string
            format: uuid
      responses:
        '201':
          description: Verification token created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Verification token created successfully
                  data:
                    type: object
                    properties:
                      sumsubToken:
                        type: object
                        properties:
                          token:
                            type: string
                          userId:
                            type: string
                      externalUserId:
                        type: string
                        format: uuid
        '400':
          description: Non-individual account or verification provider error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Your Rolla API key

````