---
title: "Sign Up"
method: POST
path: "/v0/agent/sign-up"
tags: ["Agent"]
---

# Sign Up

`POST /v0/agent/sign-up`

Create a new agent organization with an inbox and API key. This endpoint is for signing up for the first time. If you've already signed up, you're all set — just use your existing API key.

A 6-digit OTP is sent to the human's email for verification.

This endpoint is idempotent. Calling it again with the same `human_email` will rotate the API key and resend the OTP if expired.

The returned API key has limited permissions until the organization is verified via the verify endpoint.

**CLI:**
```bash
agentmail agent sign-up --human-email user@example.com --username my-agent
```

## Request body

- AgentSignupRequest — Request body to sign up an agent.
  - `human_email` string, required — Email address of the human who owns the agent. A 6-digit OTP will be sent to this address.
  - `username` string, required — Username for the auto-created inbox (e.g. "my-agent" creates my-agent@agentmail.to).
  - `source` string, nullable — The SDK, framework, or platform issuing this sign-up (e.g. `agentmail-python`, `agentmail-cli`, `agentmail-mcp`). Identifies the caller — answers "who is signing up". Max 2048 characters.
  - `referrer` string, nullable — The channel that drove this sign-up — where the agent or its developer discovered AgentMail (e.g. `agent.email`, a partner URL, a campaign tag). Answers "where did this sign-up come from". Max 2048 characters.

## Response `200`

- AgentSignupResponse — Response after successful agent sign-up.
  - `organization_id` string, required — ID of the created organization.
  - `inbox_id` string, required — ID of the auto-created inbox.
  - `api_key` string, required — API key for authenticating subsequent requests. Store this securely, it cannot be retrieved again.

## Other responses

- `400`

## Changes

- **2026-07-15** `394ddcdd9c29` — 4 info
  - added the optional property `code` to the response with the `400` status
  - added the optional property `docs` to the response with the `400` status
  - added the optional property `fix` to the response with the `400` status
  - added the optional property `message` to the response with the `400` status
- **2026-05-14** `14a2403820b1` — 2 info
  - added the new optional request property `referrer`
  - added the new optional request property `source`
- **2026-03-31** `27965096e618` — 1 info
  - endpoint added
- **2026-03-28** `8a5b5e92ae2d` — 1 breaking
  - api path removed without deprecation
- **2026-03-28** `543818df77d9` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/agentmail-to/apis/api/changes/v0/agent/sign-up/post.md)

---

[API](https://skmtc.dev/agentmail-to/apis/api.md) · [All operations](https://skmtc.dev/agentmail-to/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/agentmail-to/api/revisions/394ddcdd9c29/schema)
