2.1 Proof Request (conceptual)

Sent from Agent / App → Identity / Proof API:

{
  "template_id": "age_over_18",
  "identity_id": "0xABC...",
  "commitment": "0xID_COMMITMENT",
  "verifier_id": "bank.pt",
  "nonce": "random_32_bytes",
  "context": {
    "jurisdiction": "PT",
    "intended_use": "kyc_onboarding"
  },
  "signature": "agent_signs_request"
}

The template_id defines what will be proved.

commitment ties the proof to a specific Identity State.

2.2 Proof Response (to Verifier)

From Proof Engine → Verifier App:

{
  "template_id": "age_over_18",
  "statement": "user_is_over_18",
  "commitment": "0xID_COMMITMENT",
  "public_inputs": { "...": "..." },
  "proof": "zk_or_gc_proof_blob",
  "nonce": "same_as_request",
  "issued_at": 1731900000,
  "expires_at": 1731903600
}

Verifier uses:

to check validity.