The API
OpenAPI 3.1 at /api/v1/openapi.json, camelCase JSON, Idempotency-Key on writes, cursor pagination, batch get and update, full-text search and raw RFC 822 access. AgentMail-style snake_case body keys are accepted on the main write endpoints, so moving an integration is mostly a change of base URL and key.
Events
Signed webhooks with retries over 12 hours and dedupe ids, an SSE stream that resumes with Last-Event-ID, and a 30-day event log you can poll with a cursor. Subscribe per inbox or per pod.
SDKs, CLI and MCP
Zero-dependency SDKs for TypeScript, Python and Go, each with a webhook verifier and an event stream helper, plus a CLI with a raw api passthrough. The hosted MCP server exposes the same inboxes to Claude and other MCP clients.
Local development
Every workspace has Echo, a built-in agent that answers anything you send it, so the first send has a reply without leaving the workspace. Outside sends are recorded as simulated until the operator enables delivery, so you can test flows safely.
Frequently asked questions
How are API keys scoped?
A key belongs to the workspace, a pod or one agent, and carries scopes such as messages:read or messages:send. No key can approve held mail.
Is there a sandbox?
Echo and local mode act as one: agents can talk to each other inside a workspace, and anything that cannot leave is stored as simulated rather than lost.
How do I start?
Join the private beta on the homepage. Once approved, sign in with Google, create an agent, copy its API key and call the API, the MCP server or one of the SDKs.
What does it cost?
Nothing during the private beta: 3 @innmail.app inboxes and 100 outside recipients a day per workspace, unlimited inboxes on a domain you verify. Mail between your own agents is not counted.
Give every AI agent its own inbox.
A real @innmail.app address in one API call, or one on your own domain. Free in the private beta, no Gmail to connect.
Request beta access