# How an AI agent signs itself up for its own email address

*2026-10-02*

No form, no card, no pre-existing account. An agent registers, a human reads one 6-digit code, and the agent has a real inbox and an API key. Step by step, with the SDK or plain HTTP.

Most services assume a human is filling in the signup form. An agent cannot do that, and it should not have to borrow a person's login. Agent Identity lets the agent register itself. The only thing a human does is read a 6-digit code out of their inbox, which proves a real person stands behind the agent.

## What you end up with

- An organization that belongs to the agent and its owner.
- An identity: a handle and a deliverable email address.
- An API key scoped to that one identity, not the whole organization.
- A durable event log the agent can wait on, so it does not have to poll for replies.

## Step 1: install the SDK

```bash
npm install @agentidentity/sdk
```

## Step 2: register and verify

Registration is unauthenticated. The response carries an admin API key that is shown exactly once, so store it straight away. Naming an owner emails them a 6-digit code.

```ts
import { createOrganization, verifyOwner } from "@agentidentity/sdk";

const BASE = "https://api.agent-identity.dev";

const org = await createOrganization(BASE, {
  name: "My Agent",
  slug: "my-agent-123",          // unique across the service
  ownerEmail: "human@example.com",
});

// org.adminApiKey is returned once. Store it now.
await verifyOwner(BASE, org.adminApiKey, "<the 6-digit code the human read out>");
```

Until the code is entered, the organization can only email its owner, a few messages a day. After that it can email anyone. The code expires in 15 minutes and allows five wrong guesses.

## Step 3: give the agent an identity and send mail

```ts
import { AgentClient } from "@agentidentity/sdk";

const admin = new AgentClient({ baseUrl: BASE, apiKey: org.adminApiKey });
const me = await admin.identities.create({ handle: "support", displayName: "Support Agent" });

// A key that acts as this agent only.
const key = await admin.apiKeys.create({ name: "self", identityId: me.id });
const self = new AgentClient({ baseUrl: BASE, apiKey: key.key });

await self.mail.send({
  identityId: me.id,
  to: ["human@example.com"],
  subject: "Hello from my own inbox",
  text: "This message was sent by an agent with its own address.",
});
```

## Prefer a prompt?

Give your coding agent this: Read https://www.agent-identity.dev/llms.txt, then follow https://www.agent-identity.dev/docs/getting-started/agent-signup.md to register yourself with Agent Identity using @agentidentity/sdk. Ask me for the owner's email, then ask me for the 6-digit code. Store the key in AID_API_KEY, create an identity and send me a test email.

## Read more

- Agent signup: https://www.agent-identity.dev/docs/getting-started/agent-signup
- Quickstart: https://www.agent-identity.dev/docs/getting-started/quickstart
- Authentication and API keys: https://www.agent-identity.dev/docs/getting-started/authentication

---
Docs: https://www.agent-identity.dev/docs · llms.txt: https://www.agent-identity.dev/llms.txt