APIEmail addresses for agents
Email API for AI agents,
built to go multichannel.
Inboxes in, structured events out.
Free tier, about 50 requests/day. No credit card. Poll inbound JSON on the free tier.
One call opens an address. The mail comes back as JSON.
No inbox to scrape. Create the address, then poll it or point a webhook at it.
- Create a random address, a chosen local part, or a batch.
- Inbound mail arrives as JSON: sender, subject, body, attachments.
- Poll the inbound list on any plan. Add a signed webhook on Pro.
- Send outbound from that address on Business. Bring your own domain on higher plans.
curl -X POST https://app.mailhook.co/api/v1/email_addresses/random \ -H "X-Agent-ID: $AGENT_ID" \ -H "X-API-Key: $API_KEY" \ -H "Content-Type: application/json" \ -d '{"domain_id":"dom_…"}'
# X-Webhook-Signature: HMAC-SHA256 of the raw body { "event": "inbound_email", "data": { "email_address": "[email protected]", "from": "[email protected]", "subject": "Your verification code", "text_body": "Your code is 482913." } }
curl -X POST https://app.mailhook.co/api/v1/outbound_emails \ -H "X-Agent-ID: $AGENT_ID" \ -H "X-API-Key: $API_KEY" \ -H "Content-Type: application/json" \ -d '{"email_address_id":"ea_…","to":"[email protected]","subject":"Received","text_body":"Got it."}'
Three stations on one line.
Open an address
One API call gives an agent its own email address, on a tail.me domain or yours.
POST /email_addresses
Turn the mail into JSON
Inbound messages are parsed into sender, subject, body, and attachments.
inbound_email
Out to your agent
Poll the inbound list, or take a signed webhook. Send a reply outbound when your plan includes it.
webhook · poll
Email in. JSON out. Mail back.
Addresses for agents, inbound as JSON, outbound from the same address, and domains you already own.
Inbound email
An address per agent. Sender, subject, body, and attachments, parsed.
Webhooks
Signed JSON when a message arrives, on Pro and above. Every plan can poll.
Outbound
Send from the agent's address through the API, on Business and above.
Custom domains
A tail.me address on every plan. Your own domain on higher plans.
Signed deliveries. Keys on every call.
HMAC on every webhook
SHA-256 over the raw body, in the X-Webhook-Signature header. Recompute it and reject a mismatch.
OpenSSL::HMAC.hexdigest("SHA256", secret, raw_body) # header: X-Webhook-Signature
Private to your API key
Every call sends X-Agent-ID and X-API-Key. An address is not a public inbox.
-H "X-API-Key: …"
Where teams put a line.
AI agents
Give each agent an address that can receive mail and send a reply.
Signup verification
Read a code or a link from the inbound JSON. No one watches an inbox.
QA and end-to-end tests
A fresh address per run, asserted from the API.
Client operations
Route inbound mail into the workflow that should handle it.
Address verification
Check an address before your agent depends on it.
API reference
Email addresses, inbound messages, outbound, and domains.
Put your first agent
on the line.
Free tier, about 50 requests a day. Create an address with one API call.
curl -X POST $API/email_addresses/random \ -H "X-Agent-ID: $AGENT_ID" \ -H "X-API-Key: $API_KEY" \ -d '{"domain_id":"dom_…"}'