๐Ÿš€ Live DemoLive on Celo

Interactive KYC Flow

Walk through the full verification flow, from agent API request to on-chain attestation.

๐Ÿค– Agent Address

0x3fA8B653F9abf91428800C8bB0AB9d8fE8c7A8c3

๐Ÿ‘ค User Address

0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf

1
Credential Check
2
x402 Payment
3
ID Verify
4
Attestation
๐Ÿ”

Check Existing Credential

Agent first checks if this wallet already has a valid credential. If it does, the EAS attestation is returned for free.

GET /api/check/:address โ€” Free, no auth
http
GET https://knowyourhuman.xyz/api/check/0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf

// Response โ€” no credential found:
{
  "address": "0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf",
  "hasCredential": false,
  "message": "No active credential. Use POST /api/verification to verify."
}

// If a credential existed, it would return:
{
  "address": "0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf",
  "hasCredential": true,
  "attestation": {
    "uid": "0xb9c4f2a7...",
    "level": "standard",
    "issuedAt": "2026-03-21T14:00:00Z",
    "expiresAt": "2026-06-19T14:00:00Z",
    "validDays": 90
  }
  // Free. No payment needed. Any agent can read this.
}

This check is always free.

Any agent, any dApp, any protocol can read an existing credential at no cost. The human only needs to verify once. After that, their credential is a public good on Celo.

No credential found for this wallet. Agent proceeds to request a new verification.

POST /api/verification โ€” New verification request
http
POST https://knowyourhuman.xyz/api/verification
Content-Type: application/json
Authorization: Bearer <agent_api_key>

{
  "userAddress": "0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf",
  "agentAddress": "0x3fA8B653F9abf91428800C8bB0AB9d8fE8c7A8c3",
  "level": "standard",
  "webhookUrl": "https://my-agent.xyz/kyc-callback"
}
Step 1 of 40/4 complete