Compliance API
Privacy-preserving compliance tools for regulated industries.
Age Verification (ZK-based)
POST /api/v1/compliance/verify-age
Generates a zero-knowledge proof that a user meets a minimum age requirement without transmitting or storing PII.
{
"walletAddress": "0x1234...",
"minimumAge": 21
}
Validation
| Field | Rules |
|---|---|
walletAddress | Required, valid Ethereum address |
minimumAge | Integer, range 1–150, defaults to 21 |
Response
{
"proof": "0xabc123...",
"minimumAge": 21,
"verified": true
}
Initiate KYC
POST /api/v1/compliance/kyc/initiate
Requires JWT (Authorization: Bearer <token>).
{
"did": "did:ethr:0x1234...",
"provider": "persona"
}
Validation
| Field | Rules |
|---|---|
did | Required, max 200 chars, must match DID format |
provider | Optional, persona or jumio, defaults to persona |
Response
{
"sessionId": "ses_abc123",
"provider": "persona",
"redirectUrl": "https://withpersona.com/verify?session=...",
"expiresIn": 3600
}
Redirect the user to redirectUrl to complete identity verification.
Check KYC Status
GET /api/v1/compliance/kyc/{did}/status
Response
{
"did": "did:ethr:0x1234...",
"kycLevel": "enhanced",
"status": "approved"
}
Status Values
| Status | Description |
|---|---|
pending | KYC session created, awaiting user action |
approved | Identity verified successfully |
rejected | Verification failed or flagged |
OFAC Sanctions Screening
POST /api/v1/compliance/sanctions-check
{
"walletAddress": "0x1234..."
}
Response
{
"walletAddress": "0x1234...",
"sanctioned": false,
"checkedAt": "2026-02-27T12:00:00Z",
"source": "OFAC SDN List"
}
warning
A sanctioned: true result means the address appears on the OFAC Specially Designated Nationals (SDN) list. Interacting with sanctioned addresses may violate US law.