Provision a new AgentMail-backed inbox on a verified custom domain and register it with Instantly for warmup.
accounts table with type = "email".
Email sender accounts correspond 1:1 to AgentMail inboxes and (while warmup is active) Instantly accounts. Warmup analytics live behind a separate endpoint — GET /api/email/accounts/warmup-analytics — and are not returned here.
/api/email/accounts with the list verb. See List email sender accounts to enumerate existing inboxes.createEmailAccount rejects any domain_id whose backing email_domains.status is not verified. The usual flow is:createEmailDomain — register the domain, DNS auto-synced if you own the Cloudflare zone.verifyEmailDomain with ?poll=true on a cadence until status === "verified" (or status === "failed").createEmailAccount with that domain_id.createInbox, Instantly addAccount + enableWarmup, tag creation/assignment, and the final Supabase insert. If any step after the inbox creation fails, the AgentMail inbox is cleaned up. AgentMail blocks reusing the local part of a previously-deleted inbox — callers will see a 409 if they try.Warmup blocks sending. Accounts with status: "warming" will NOT send campaign emails until warmup completes (or is disabled). Plan for a warmup window before scheduling the first real campaign.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Required: username + domain_id. The full address is composed as <username>@<domain>. Provisioning runs five external side effects (AgentMail inbox, Instantly account, warmup enable, tag creation/assignment, DB insert) — partial failures trigger best-effort rollback.
Local part of the email (everything before @). Lowercased server-side. Only a-z, 0-9, ., -, _ are allowed.
1UUID of an email_domains row owned by the caller. The domain's status must be verified — see POST /api/email/domains/{id}/verify.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Human-friendly sender name. If omitted and first_name/last_name are set, display_name is derived from them.
Account created. If warmup enablement succeeded, status is warming and warmup_status is warming. If warmup failed, status is pending and the client can retry via update-account-retry-warmup.
An AgentMail-backed email sending inbox. Each account row maps 1:1 to exactly one AgentMail inbox and (optionally) one Instantly warmup account.