# x402-gateway: verify_worldid

> x402-gateway: verify_worldid is a paid API for AI agents from x402.freeq.one, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Verifies a World ID 4.0 proof by proxying through the Worldcoin Developer Portal API with server-side RP signature generation, returning validity, nullifier, and raw Worldcoin response.

## Facts

- Endpoint: POST https://x402.freeq.one/tools/verify_worldid
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-gateway-verify-worldid-4f4eb890
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__r_ojsvw7LEjQw21cf_TS

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402-gateway-verify-worldid-4f4eb890 -d '<json body>'
```

Example prompt: Verify this World ID 4.0 proof for me — here's the IDKit proof payload from the user's World App session, and I need to know if it's valid and get back the nullifier hash.

## When to prefer this

Use this endpoint when you need server-side World ID 4.0 proof verification without setting up your own Worldcoin Developer Portal integration or managing RP signing keys. Ideal for agents and dApps that receive IDKit proofs from users and need to verify proof-of-personhood in a pay-per-call model without account setup. Prefer this over self-hosted verification when you want zero infrastructure overhead and are already using the x402 payment protocol.

## Known failure modes

- Invalid or malformed IDKit proof payload returns valid=false
- Expired proof (World ID proofs have short validity windows) returns rejection
- Incorrect app_id or action mismatch causes Developer Portal rejection
- Network errors reaching developer.world.org cause 5xx responses
- Missing required proof fields in body cause schema validation errors
- Reused nullifier (proof already verified) may return invalid depending on app settings

## How this service works

x402-gateway tool: verify_worldid — Verify a World ID 4.0 proof via the Worldcoin Developer Portal API. Generates an RP signature server-side, then proxies the full IDKit proof to developer.world.org. Returns { valid, nullifier, worldcoin_response }.

## Output

Returns a JSON object with three fields: `valid` (boolean indicating if the proof passed verification), `nullifier` (the unique nullifier hash for this user+action pair, usable for deduplication), and `worldcoin_response` (the full raw response from the Worldcoin Developer Portal API).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "proof": {
   "type": "object",
   "description": "IDKit proof payload: { protocol_version, responses, action?, session_id? }"
  },
  "action": {
   "type": "string",
   "description": "Action string (must match what IDKit used). Required for uniqueness proofs, omitted for session proofs."
  },
  "environment": {
   "enum": [
    "production",
    "staging"
   ],
   "type": "string",
   "description": "Worldcoin environment. Defaults to production."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "result": {}
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-gateway-verify-worldid-4f4eb890/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.freeq.one](https://www.zero.xyz/host/x402.freeq.one/llms.txt)
