← Back to all APIs

Verify World ID

$0.005

Verify a World ID 4.0 proof via the Worldcoin Developer Portal API. Generates an RP signature server-side using your signing key, proxies the proof to the Worldcoin verify endpoint, and returns the nullifier + validity status. Supports both uniqueness and session proofs.

POST https://x402.freeq.one/tools/verify_worldid
Request body
JSON
{
  "proof": {
    "protocol_version": "4.0",
    "responses": [{
      "identifier": "proof_of_human",
      "issuer_schema_id": 1,
      "nullifier": "0x...",
      "expires_at_min": 49012345,
      "proof": ["0x...", "0x...", "0x...", "0x...", "0x..."],
      "signal_hash": "0x..."
    }]
  },
  "action": "test_action"
}
Try it (x402 payment flow)
curl -X POST https://x402.freeq.one/tools/verify_worldid \ -H "Content-Type: application/json" \ -d '{"proof":{"protocol_version":"4.0","responses":[{"identifier":"proof_of_human","issuer_schema_id":1,"nullifier":"0x...","expires_at_min":49012345,"proof":["0x...","0x...","0x...","0x...","0x..."],"signal_hash":"0x..."}]},"action":"test_action"}'

Without payment, the server returns 402 Payment Required with x402 challenge details. A paying agent signs a USDC transaction on Base and retries with the payment header.

Response example
JSON
{
  "status": 200,
  "valid": true,
  "worldcoin_response": {
    "success": true,
    "nullifier": "0x...",
    "action": "test_action",
    "created_at": 1787291153,
    "environment": "production",
    "session_id": "session_..."
  },
  "rp_signature": {
    "sig": "0x...",
    "nonce": "0x00...",
    "created_at": 1787291153,
    "expires_at": 1787291453
  },
  "duration_ms": 724
}