Skip to main content
POST
/
api
/
v1
/
register
Register KYC Proof
curl --request POST \
  --url https://api.example.com/api/v1/register \
  --header 'Content-Type: application/json' \
  --data '
{
  "public_signals": [
    {}
  ],
  "proof": {
    "pi_a": [
      {}
    ],
    "pi_b": [
      {}
    ],
    "pi_c": [
      {}
    ]
  },
  "encrypted_blob": "<string>"
}
'
{
  "success": true,
  "txid": "MC526N5AWJUZ57HEIUQATWVCLSW3GIYDDQGOKBYQCZSHRSZ4V7HQ",
  "nullifier_hex": "156f82bc6f8d385dfb...",
  "explorer_url": "https://allo.info/tx/MC52...",
  "demo": false
}
The main KYC registration endpoint. It verifies the cryptographic snarkjs Groth16 proof. If the proof is mathematically sound, the backend pays the transaction fee to anchor the nullifier into the Algorand NullifierRegistry smart contract.

Body

public_signals
array
required
The public output array from the snarkjs proof (e.g., Nullifier Haash, SMT Root, Authority Signature).
proof
object
required
The Groth16 cryptographic proof object.
encrypted_blob
string
The ECIES-encrypted identity package. Only supplied if Conditional Anonymity is enabled.

Response

success
boolean
Indicates whether the proof was valid and the Algorand transaction succeeded.
txid
string
The Algorand transaction ID for the NullifierRegistry interaction.
{
  "success": true,
  "txid": "MC526N5AWJUZ57HEIUQATWVCLSW3GIYDDQGOKBYQCZSHRSZ4V7HQ",
  "nullifier_hex": "156f82bc6f8d385dfb...",
  "explorer_url": "https://allo.info/tx/MC52...",
  "demo": false
}