For developers

The human layer for the internet.

CAPTCHA proves you can click. I AM HUMAN proves there's a unique real person behind the account — verified by humanity, not by an ID document. One call returns a yes/no and a reusable Human ID. No names, no documents, no personal data ever leaves this platform.

Hard to fake

Every proof is AI-screened and voted on by real humans.

One person, one ID

Face matching blocks the same person verifying twice.

Zero personal data

Partners receive a yes/no and a Human ID — nothing else.

1. Get an API key

Connect a wallet, name your app, and copy the key. It's shown once.

2. Ask if someone is human

GET /api/public/v1/verify?wallet=… — also accepts POST with a JSON body. Look up a public profile with GET /api/public/v1/human/{id}.

curl "https://iamhuman.live/api/public/v1/verify?wallet=WALLET_ADDRESS" \
  -H "x-api-key: ih_live_xxxxxxxxxxxxxxxx"
{
  "verified": true,
  "human_id": 1,
  "verified_at": "2026-08-24T21:04:11.921Z",
  "human_percentage": 96.4,
  "voters": 132,
  "profile_url": "https://iamhuman.live/human/1"
}

3. Drop-in SDK

Keep the key server-side — never ship it to the browser.

// iamhuman.js — drop-in SDK (server side only)
export async function isHuman(wallet, apiKey) {
  const res = await fetch(
    `https://iamhuman.live/api/public/v1/verify?wallet=${wallet}`,
    { headers: { "x-api-key": apiKey } },
  );
  if (!res.ok) throw new Error("verification failed");
  const data = await res.json();
  return data.verified ? data.human_id : null;
}

// usage
const humanId = await isHuman(user.wallet, process.env.IAMHUMAN_KEY);
if (!humanId) return deny("Bot or unverified account");

Responses are yes/no only. Wallet addresses, videos and photos are never exposed through the API.