daimon.email
Api referenceInboxes

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

usernamestringbodyrequired

Username 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_namestringbody

Human-readable display name for the inbox

Optional. Defaults to the username if not provided.

client_idstringbody

Idempotency 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

resultobject
properties
idstring

Unique inbox identifier (format: inb_...)

addressstring

Full email address (e.g., username@daimon.email)

api_keystring

Inbox-scoped API key for accessing this specific inbox

Format: dm_free_... (free tier) or dm_live_... (paid tier)

account_api_keystring

Account-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_namestring

Display name for the inbox

statusstring

Current inbox status (typically active)

tierstring

Account tier (free or paid)

view_urlstring

Web URL to view inbox status and messages in browser

created_atstring

ISO 8601 timestamp of inbox creation

next_stepsarray

Array 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.