Email is one of the most fundamental primitives in Naive API v2. Every company gets a system domain auto-provisioned on registration, and agents can create inboxes, send mail, and read replies — all scoped to the authenticated identity.
This guide covers the full email lifecycle: domain setup, inbox provisioning, sending, and reading.
CLI First
| Tool | Type | Description |
|---|
create_inbox | Core | Create a new email inbox on the company’s domain |
delete_inbox | Core | Deactivate an email inbox |
list_inboxes | Core | List all available inboxes for the company |
send_email | Core | Send an email from a specific inbox |
list_inbox_emails | Core | List received emails for an inbox |
get_email | Core | Read the full body of a specific email |
Domain Prerequisites
Before sending email, your company needs an active (verified) domain. System domains are auto-provisioned on registration but may start as pending_dns until the email-provider records are verified.
If your domain shows pending_dns, trigger verification:
See Domain Management for the full BYOD workflow.
Creating Inboxes
Create email addresses on your company’s active domain. Each inbox gets a dedicated identity.
Response:
Parameters
| Param | Type | Required | Default | Description |
|---|
local_part | string | Yes | — | The part before @ (min 2 chars, alphanumeric + dots/hyphens) |
domain_id | string | No | Auto | Specific domain UUID (defaults to company’s first active domain) |
You can create multiple inboxes on the same domain — support@, sales@, notifications@, etc.
Sending Email
The send_email tool requires the inbox UUID you’re sending from. This enforces identity — agents can only send from addresses they own.
Response:
Parameters
| Param | Type | Required | Default | Description |
|---|
from_inbox | string | Yes | — | Inbox UUID to send from |
to | string | Yes | — | Recipient email address |
subject | string | Yes | — | Email subject line |
body | string | Yes | — | Email body (plain text or HTML) |
reply_to | string | No | — | Reply-to address override |
Cost: 10 credits per email (deducted immediately on success)
Reading the Inbox
List received emails
Response:
Read a specific email
Error Handling
| Error | Cause | Recovery |
|---|
invalid_inbox | Inbox UUID not found or not owned by this agent | Use GET /v1/email/inboxes to see available inboxes |
no_active_domain | Company has no verified domain | Check GET /v1/domains and verify with POST /v1/domains/:id/verify |
domain_not_verified | Sending from an unverified domain | Run naive domains verify <id> or POST /v1/domains/:id/verify |
insufficient_credits | Not enough credits to send | Check balance with GET /v1/status |
duplicate_record | Email address already exists (active) | Use a different local_part |
Typical Workflow