Verification States & Proofs
v1.0Reference of all verification session states, error codes, proof validation responses, and lifecycle transitions.
Every verification attempt in SyncNexa progresses through a strictly defined state machine to ensure auditability, replay protection, and deterministic outcomes.
Verification Session Lifecycle
A verification session begins in the pending state when created by a business or portal scanner, transitions to evaluating when the student submits their proof, and concludes in either completed, failed, or expired:
Session States Reference
| Status Code | Terminal? | Description | Action Required |
|---|---|---|---|
pending | No | Session created and waiting for student interaction | Present QR code or prompt student to approve |
evaluating | No | Proof received; cryptographic verification in progress | Wait for validation outcome (< 200ms) |
completed | Yes | Proof successfully validated; student status confirmed | Apply student discount / grant access |
failed | Yes | Proof invalid, forged, or credential revoked | Prompt user to retry or deny privilege |
expired | Yes | Session TTL exceeded without receiving proof | Create a new verification session |
cancelled | Yes | Session explicitly cancelled by student or requester | Aborted by user |
Proof Payload Structure
When a verification session reaches the completed state, the verification response payload contains the proof verification metadata:
verification-result.jsonjson
| 1 | { |
| 2 | "sessionId": "sess_0a1b2c3d4e5f", |
| 3 | "status": "completed", |
| 4 | "verified": true, |
| 5 | "verifiedAt": "2026-08-20T12:15:30.124Z", |
| 6 | "issuer": { |
| 7 | "id": "did:syncnexa:uni:oxford", |
| 8 | "name": "University of Oxford", |
| 9 | "domain": "ox.ac.uk", |
| 10 | "trustScore": 1.0 |
| 11 | }, |
| 12 | "claims": { |
| 13 | "is_enrolled": true, |
| 14 | "enrollment_type": "Full-Time", |
| 15 | "academic_year": "2025/2026", |
| 16 | "valid_until": "2027-06-30T23:59:59Z" |
| 17 | }, |
| 18 | "cryptography": { |
| 19 | "proofType": "Groth16", |
| 20 | "circuit": "student_enrollment_v1", |
| 21 | "signatureValid": true, |
| 22 | "nonce": "nonce_7f8a9b0c1d2e3f4a" |
| 23 | } |
| 24 | } |
Common Failure Reasons
| Failure Code | User-Facing Reason | Recommended Resolution |
|---|---|---|
ERR_EXPIRED_CREDENTIAL | Student enrollment has expired | Student must request credential renewal from their university |
ERR_REVOKED_CREDENTIAL | Credential has been revoked by the issuer | Student status is no longer in good standing |
ERR_INVALID_SIGNATURE | Cryptographic signature mismatch | Check if student device clock is out of sync |
ERR_NONCE_REPLAY | Challenge nonce already used | Session expired or screenshot replayed; scan fresh QR code |
ERR_SESSION_TIMEOUT | 5-minute session window elapsed | Generate a new verification session |
Was this page helpful?