Base URL
All requests must include
Content-Type: application/json and a valid JSON body.Verify Proof
Verifies a World ID proof returned by IDKit v4. Accepts bothrp_id (rp_xxx) and app_id (app_xxx) as the route parameter.
The request body from pollForUpdates() can be forwarded directly to this endpoint — no transformation needed.
This endpoint handles both World ID v3 (cloud) and v4 (on-chain) proof formats. During the preview period, users will produce v3 proofs since World ID v4 has not launched yet. The endpoint verifies either format transparently.
Request Body
The protocol version. Must be
"3.0" or "4.0". IDKit sets this automatically.The nonce used in the RP signature, as returned by IDKit.
The action identifier. Must match the action passed to
IDKit.request().Human-readable description of the action. Used when creating the action for the first time.
Array of proof response items (at least one). The shape of each item depends on
protocol_version.Response item fields (protocol 3.0)
Credential type:
"orb", "device", or "face".ABI-encoded zero-knowledge proof (hex string).
Merkle root hash (hex string).
Nullifier hash (hex string, optional
0x prefix).Hash of the signal. Defaults to the keccak256 hash of an empty string.
Maximum age of the Merkle root in seconds. Range: 3600 (1 hour) to 604800 (7 days).
Response item fields (protocol 4.0)
Credential type:
"orb", "face", "secure_document", "document", or "device".Array of exactly 5 hex strings: 4 compressed Groth16 proof elements + Merkle root.
RP-scoped nullifier (hex string, optional
0x prefix).Credential issuer schema ID: 1=orb, 2=face, 3=secure_document, 4=document, 5=device.
Minimum credential expiration timestamp (unix seconds).
Hash of the signal. Defaults to
"0x0".Request Examples
Possible Responses
200 OK— At least one proof was successfully verified.400 Bad Request— All proofs failed verification, or the user has already verified for this action.404 Not Found— App not found or no longer active.
Response Examples
- 200 OK
- 400 All Verifications Failed
- 400 Already Verified
- 400 App Not Migrated
- 404 Not Found
Response Fields
Whether at least one proof was verified successfully.
The action identifier (returned on success).
The nullifier from the first successful proof (returned on success). Use this to track unique users per action.
ISO 8601 timestamp of when the nullifier was recorded.
"production" or "staging". In staging, nullifier reuse is allowed.Per-response verification results. Each entry includes
identifier, success, and optionally nullifier (on success) or code/detail (on failure).