
ZK Proofs API
Generate and verify zero-knowledge proofs for Solana wallets. Prove balance ranges, token holdings, and threshold requirements without revealing exact values.
Available Circuits
Balance Proof
Prove balance is within a range without revealing exact amount
Token Holder
Prove ownership of a specific token without revealing balance
Threshold Proof
Prove balance exceeds a threshold value
GET
/v1/zk/circuitsList all available ZK circuits for proof generation
Example Request
curl -X GET \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.acceso.dev/v1/zk/circuits"Example Response
{
"success": true,
"circuits": [
{
"id": "balance",
"name": "Balance Proof",
"description": "Prove wallet balance range"
},
{
"id": "holder",
"name": "Token Holder",
"description": "Prove token ownership"
},
{
"id": "threshold",
"name": "Threshold Proof",
"description": "Prove balance above threshold"
}
]
}POST
/v1/zk/proofs/generateGenerate a new zero-knowledge proof
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| circuitId | string | Yes | Circuit type: balance, holder, threshold |
| walletAddress | string | Yes | Solana wallet address |
| tokenMint | string | No | Token mint (for holder proof) |
| threshold | number | No | Threshold value (for threshold proof) |
| minBalance | number | No | Min balance (for balance proof) |
| maxBalance | number | No | Max balance (for balance proof) |
Example Request
curl -X POST \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"circuitId": "example_value",
"walletAddress": "example_value"
}' \
"https://api.acceso.dev/v1/zk/proofs/generate"Example Response
{
"success": true,
"data": {
"proofId": "proof_abc123...",
"circuitId": "balance",
"status": "generated",
"proof": "0x...",
"publicSignals": [...],
"createdAt": "2025-12-14T12:00:00.000Z"
}
}GET
/v1/zk/proofs/{proof_id}Get proof details by ID
URL Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| proof_id | string | Yes | Proof ID returned from generate |
Example Request
curl -X GET \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
"https://api.acceso.dev/v1/zk/proofs/{proof_id}"Example Response
{
"success": true,
"data": {
"proofId": "proof_abc123...",
"circuitId": "balance",
"status": "generated",
"proof": "0x...",
"publicSignals": [...],
"createdAt": "2025-12-14T12:00:00.000Z"
}
}POST
/v1/zk/proofs/verifyVerify a zero-knowledge proof
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| proofId | string | No | Proof ID to verify (if stored) |
| proof | object | No | Raw proof data (if not using ID) |
| publicSignals | array | No | Public signals (if not using ID) |
| circuitId | string | No | Circuit ID (if not using proofId) |
Example Request
curl -X POST \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' \
"https://api.acceso.dev/v1/zk/proofs/verify"Example Response
{
"success": true,
"data": {
"valid": true,
"circuitId": "balance",
"verifiedAt": "2025-12-14T12:00:00.000Z"
}
}POST
/v1/zk/balance-proofQuick balance range proof generation
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| walletAddress | string | Yes | Solana wallet address |
| minBalance | number | Yes | Minimum balance in SOL |
| maxBalance | number | Yes | Maximum balance in SOL |
Example Request
curl -X POST \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"walletAddress": "example_value",
"minBalance": 1000,
"maxBalance": 1000
}' \
"https://api.acceso.dev/v1/zk/balance-proof"Example Response
{
"success": true,
"data": {
"proofId": "proof_xyz789...",
"inRange": true,
"proof": "0x...",
"publicSignals": [...]
}
}