Create Inbox
Create a new inbox with instant API access - no authentication required
Overview
Create a new inbox at @daimon.email with instant API access. This is the only endpoint that doesn't require authentication - your agent can bootstrap itself completely autonomously.
Info
Bootstrap endpoint: No API key needed. Your agent can create its first inbox without any prior setup or human involvement.
Request Body
usernamestringbodyrequiredUsername for the inbox (will become username@daimon.email)
- Must be 3-32 characters
- Lowercase alphanumeric and hyphens only
- Must start and end with alphanumeric character
- Must be unique across all inboxes
display_namestringbodyHuman-readable display name for the inbox
Optional. Defaults to the username if not provided.
client_idstringbodyIdempotency key to prevent duplicate inbox creation
Optional. If provided and matches an existing inbox for this account, returns the existing inbox instead of creating a duplicate (200 response with existing inbox data).
Response
resultobjectproperties
idstringUnique inbox identifier (format: inb_...)
addressstringFull email address (e.g., username@daimon.email)
api_keystringInbox-scoped API key for accessing this specific inbox
Format: dm_free_... (free tier) or dm_live_... (paid tier)
account_api_keystringAccount-scoped API key for accessing all inboxes in this account
Use this to call GET /v1/inboxes (list all inboxes) and GET /v1/capabilities.
display_namestringDisplay name for the inbox
statusstringCurrent inbox status (typically active)
tierstringAccount tier (free or paid)
view_urlstringWeb URL to view inbox status and messages in browser
created_atstringISO 8601 timestamp of inbox creation
next_stepsarrayArray of suggested actions for your agent to take next
Examples
curl -X POST https://api.daimon.email/v1/inboxes \
-H "Content-Type: application/json" \
-d '{
"username": "my-agent",
"display_name": "My AI Agent",
"client_id": "unique-idempotency-key-123"
}'import { DaimonClient } from 'daimon-email';
const client = new DaimonClient();
const inbox = await client.inboxes.create({
username: 'my-agent',
displayName: 'My AI Agent',
clientId: 'unique-idempotency-key-123'
});
console.log(`Created: ${inbox.address}`);
console.log(`Inbox API Key: ${inbox.apiKey}`);
console.log(`Account API Key: ${inbox.accountApiKey}`);from daimon_email import DaimonClient
client = DaimonClient()
inbox = client.inboxes.create(
username="my-agent",
display_name="My AI Agent",
client_id="unique-idempotency-key-123"
)
print(f"Created: {inbox.address}")
print(f"Inbox API Key: {inbox.api_key}")
print(f"Account API Key: {inbox.account_api_key}")Response
{
"result": {
"id": "inb_abc123def456",
"address": "my-agent@daimon.email",
"api_key": "dm_free_7d8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o",
"account_api_key": "dm_free_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"display_name": "My AI Agent",
"status": "active",
"tier": "free",
"view_url": "https://daimon.email/inbox/inb_abc123def456?key=dm_free_7d8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o",
"created_at": "2026-03-16T12:34:56Z"
},
"next_steps": [
"Save the api_key to authenticate requests for this inbox",
"Save the account_api_key to list all inboxes or check capabilities",
"Call GET /v1/inboxes/{id}/messages to poll for incoming messages",
"Call POST /v1/webhooks to receive real-time notifications"
]
}{
"result": {
"id": "inb_abc123def456",
"address": "my-agent@daimon.email",
"api_key": "dm_free_7d8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o",
"account_api_key": "dm_free_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"display_name": "My AI Agent",
"status": "active",
"tier": "free",
"view_url": "https://daimon.email/inbox/inb_abc123def456?key=dm_free_7d8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o",
"created_at": "2026-03-16T12:34:56Z"
},
"next_steps": [
"This inbox was created previously with the same client_id",
"Use the existing api_key to authenticate requests"
]
}{
"error": "INVALID_USERNAME",
"message": "Username must be 3-32 characters, lowercase alphanumeric and hyphens only",
"next_steps": [
"Choose a username between 3-32 characters",
"Use only lowercase letters, numbers, and hyphens",
"Ensure username starts and ends with alphanumeric character"
]
}{
"error": "USERNAME_TAKEN",
"message": "The username 'my-agent' is already taken",
"next_steps": [
"Try a different username",
"Add a suffix like 'my-agent-2' or 'my-agent-prod'"
]
}Idempotency
When you provide a client_id, the API will return the existing inbox if one was already created with the same client_id for your account. This prevents duplicate inbox creation if your agent retries the request.
The response will be identical whether the inbox is newly created or already exists - check the created_at timestamp to determine if this is a new inbox.
Important Notes
Note
Store both API keys: The api_key is inbox-scoped (for this specific inbox), while account_api_key is account-scoped (for all inboxes). Store both securely.
Warning
Free tier domain: Free tier inboxes are always created at @daimon.email. Custom domains require a paid tier.