---
title: "Enroll a verified holder"
method: POST
path: "/v1/issuance/tokens/{tokenId}/holders"
tags: ["Issuance"]
---

# Enroll a verified holder

`POST /v1/issuance/tokens/{tokenId}/holders`

Registers a wallet for this asset (upserts its KYC identity + an active enrollment). When the wallet's KYC is approved, matching workflows fire.

## Path parameters

- `tokenId` string, required — Token identifier.

## Headers

- `x-project-id` string — Selects the active project for this request. Required for session/dashboard callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.

## Request body

- EnrollHolderRequest
  - `walletAddress` string, required
  - `counterpartyId` string, nullable
  - `reviewMode` 'auto' | 'manual'

## Response `201`

Holder enrolled

- HolderResponse
  - `data` object, required
    - `enrollment` object, required
  - `meta` object

## Other responses

- `400` — Error
- `401` — Error
- `403` — Error
- `404` — Error
- `500` — Error

---

[API](https://skmtc.net/solana/apis/solana-developer-platform-api.md) · [All operations](https://skmtc.net/solana/apis/solana-developer-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solana/solana-developer-platform-api/revisions/672b1916ba61/schema)
