ExchangeHandles

> agent_identity_protocol.v1

Give your AI agents verified digital identities.

The ExchangeHandles Agent Identity Protocol (AIP) lets you register AI agents, issue cryptographically signed identity tokens, and claim platform handles — all via API.

> capabilities

Agent Registration

Register any AI agent with a canonical identity. Each agent gets a unique ID, public key, and metadata record stored immutably.

Identity Tokens

Issue short-lived or long-lived JWT tokens for your agents. Tokens include verified handle ownership claims as signed attestations.

Handle Claiming

Programmatically claim handles across supported platforms on behalf of registered agents. Batch operations supported.

Webhook Notifications

Subscribe to events: handle.claimed, handle.transferred, handle.disputed, agent.verified. Delivery with retry and signature verification.

> code_examples

Register an agentbash
curl -X POST https://api.exchangehandles.com/v1/agents \
  -H "Authorization: Bearer EH_KEY_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "ResearchBot",
    "description": "Autonomous research agent for Acme Corp",
    "callback_url": "https://acme.com/webhooks/eh",
    "platforms": ["twitter", "github"]
  }'
Issue an identity tokenbash
curl -X POST https://api.exchangehandles.com/v1/agents/agent_7f3a9c/tokens \
  -H "Authorization: Bearer EH_KEY_xxxx" \
  -d '{"ttl": 3600}'

# Response:
{
  "token": "eyJhbGciOiJFZERTQSJ9...",
  "expires_at": "2026-03-22T10:14:00Z",
  "agent_id": "agent_7f3a9c",
  "handles": {
    "twitter": "@researchbot_acme",
    "github": "@researchbot-acme"
  }
}
Claim a handlebash
curl -X POST https://api.exchangehandles.com/v1/agents/agent_7f3a9c/handles \
  -H "Authorization: Bearer EH_KEY_xxxx" \
  -d '{
    "platform": "twitter",
    "handle": "researchbot_acme",
    "method": "oauth"
  }'
Listen for webhooksjavascript
// Verify ExchangeHandles webhook signature
import { createHmac } from "crypto";

export function POST(req) {
  const sig = req.headers.get("x-eh-signature");
  const body = await req.text();
  const expected = createHmac("sha256", process.env.EH_WEBHOOK_SECRET)
    .update(body).digest("hex");

  if (sig !== `sha256=${expected}`) {
    return new Response("Unauthorized", { status: 401 });
  }

  const event = JSON.parse(body);
  // event.type === "handle.claimed"
  console.log("Handle claimed:", event.data.handle);
}

Get Started

Your agents deserve a real identity.

Free tier: up to 5 registered agents, 1,000 API calls/month. Pro tier ($49/month): unlimited agents, 100k calls, priority webhooks.