Core APIUserAddress

/user/{address}/compliance-v2

Checks whether an address meets compliance requirements. Use purpose=preview to check eligibility only, or purpose=transaction to also obtain the attestation and complianceData needed to submit a transaction. Defaults to purpose=transaction. Compliance requests are limited per chain and wallet to 10 per 10 seconds, 100 per 10 minutes, and 2,000 per UTC day. These limits allow short bursts while restricting sustained traffic. All three limits apply at once and are shared across V1 requests and V2 purpose=transaction requests, including requests for different vaults and flows. Use V2 purpose=preview to check eligibility only; preview requests do not consume this rate limit. On HTTP 429, wait the number of seconds in Retry-After before retrying.

GET
/user/{address}/compliance-v2

Checks whether an address meets compliance requirements. Use purpose=preview to check eligibility only, or purpose=transaction to also obtain the attestation and complianceData needed to submit a transaction. Defaults to purpose=transaction. Compliance requests are limited per chain and wallet to 10 per 10 seconds, 100 per 10 minutes, and 2,000 per UTC day. These limits allow short bursts while restricting sustained traffic. All three limits apply at once and are shared across V1 requests and V2 purpose=transaction requests, including requests for different vaults and flows. Use V2 purpose=preview to check eligibility only; preview requests do not consume this rate limit. On HTTP 429, wait the number of seconds in Retry-After before retrying.

Path Parameters

address*string

Executing sender: the EVM account that will call ComplianceProxy (msg.sender). For relayed / bridged flows this is the relayer, and the end user goes in onBehalf.

Match^0x[a-fA-F0-9]+$

Query Parameters

purpose?string

Use purpose=preview to check eligibility only, or purpose=transaction to also obtain the attestation and complianceData needed to submit a transaction. Defaults to purpose=transaction. Preview requests do not consume the compliance wallet rate limit; transaction requests do.

Default"transaction"

Value in

  • "preview"
  • "transaction"
vault*string

Vault slug selecting its configured Predicate V2 deployment. Required to select an eligible vault.

Length1 <= length
chainId*integer

EVM chain ID of the ComplianceProxy deployment. Requires an enabled V2 deployment for the selected vault.

Range0 < value
flow?string

ComplianceProxy operation to attest. deposit covers asset deposits; requestRedeem and instantRedeem cover redemptions. accessCheck covers NestAdapter leverage: sender is the Bundler3 initiator, with an optional represented user. Defaults to deposit.

Default"deposit"

Value in

  • "deposit"
  • "requestRedeem"
  • "instantRedeem"
  • "accessCheck"
onBehalf?string

Optional for deposits and access checks. Represented user when address executes on behalf of someone else. Accepts an EVM address, 32-byte hex identifier, or base58 Solana public key. Deposits always select deposit(bytes32). Access checks select accessCheck(bytes32) only for a nonzero user distinct from sender; otherwise accessCheck(address sender).

composerAddress?string

Optional registered composer that is both the executing sender and the historical Predicate V2 deployment selector. Requires a deposit on behalf of a represented user.

Match^0x[a-fA-F0-9]+$

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/user/0x1234567890123456789012345678901234567890/compliance-v2?vault=nest-test-vault&chainId=98866"
{  "data": {    "isCompliant": true,    "chainId": 0,    "chain": "plume",    "complianceProxyAddress": "string",    "hookAddress": "string",    "sender": "string",    "onBehalf": "string",    "payload": "0xd0e30db0",    "attestation": {      "uuid": "string",      "expiration": 0,      "attester": "string",      "signature": "string"    },    "complianceData": "string",    "policyId": "string",    "policyName": "string",    "reason": {      "code": "string",      "message": "string"    }  }}