Logo

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/circuits

List 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/generate

Generate a new zero-knowledge proof

Request Body

NameTypeRequiredDescription
circuitIdstringYesCircuit type: balance, holder, threshold
walletAddressstringYesSolana wallet address
tokenMintstringNoToken mint (for holder proof)
thresholdnumberNoThreshold value (for threshold proof)
minBalancenumberNoMin balance (for balance proof)
maxBalancenumberNoMax 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

NameTypeRequiredDescription
proof_idstringYesProof 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/verify

Verify a zero-knowledge proof

Request Body

NameTypeRequiredDescription
proofIdstringNoProof ID to verify (if stored)
proofobjectNoRaw proof data (if not using ID)
publicSignalsarrayNoPublic signals (if not using ID)
circuitIdstringNoCircuit 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-proof

Quick balance range proof generation

Request Body

NameTypeRequiredDescription
walletAddressstringYesSolana wallet address
minBalancenumberYesMinimum balance in SOL
maxBalancenumberYesMaximum 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": [...]
  }
}