This guide takes you from “I just signed up” to “my agent is reading a real email and submitting a draft for approval.”Documentation Index
Fetch the complete documentation index at: https://docs.actionlayer.dev/llms.txt
Use this file to discover all available pages before exploring further.
1. Sign up
Create an account at app.actionlayer.dev. You start on Builder Pack — free, with a lifetime cap of 50 inbound and 50 outbound emails. Counters never reset. Builder Pack is for evaluating the integration, not for production. Upgrade to Pro (79/mo) when you’re ready.2. Add a domain
Go to Onboarding and enter the domain your AI will send from. ActionLayer gives you five DNS records to add at your registrar:| Type | Name | Purpose |
|---|---|---|
| TXT | _novacore.{subdomain} | Domain-ownership token |
| TXT | {subdomain} | SPF — authorizes ActionLayer to send |
| TXT | <selector>._domainkey.{subdomain} | DKIM — signs outbound for deliverability |
| TXT | _amazonses.{subdomain} | AWS SES identity verification (required for inbound) |
| MX | {subdomain} → inbound-smtp.us-east-1.amazonaws.com | Routes inbound mail into your ActionLayer inbox |
Some registrars (GoDaddy, Squarespace, Namecheap) auto-append the root domain to the Name field. ActionLayer accounts for this and shows registrar-relative names — paste exactly what the dashboard displays.
3. Create a sender identity
Go to Identities → New and pick a local part (e.g.assistant). The full address (assistant@yourcompany.com) becomes the From: your AI sends as.
You can also do this via the API:
4. Set up an approval channel
Edit the identity and pick how you want to be notified when your AI submits a draft:- Telegram — fastest. You get a chat message with Approve / Reject buttons.
- Slack — posts a preview to a channel with action buttons.
- Email — emails you a preview with one-click Approve / Reject links.
5. Get your API key
Go to Settings → API Keys → Create API Key. The key is shown exactly once and prefixednc_live_. Copy it immediately — it can’t be retrieved later.
6. Verify auth — list threads
{"data": [], "total": 0, "limit": 20, "offset": 0}. Anything else means the key is wrong or the domain isn’t verified yet.
7. Send yourself a test inbound
Send a real email from your personal address toassistant@yourcompany.com. Within a few seconds it appears in your inbox:
id and the id of the last inbound message — your agent needs both.
8. Submit a draft
based_on_message_id is required and powers stale detection: if a newer message arrives before send, the draft is blocked at delivery time.
The response includes stale_warning: true if a newer message already exists. If so, re-read the thread and regenerate.
9. Approve in your channel — then send
Your approval channel pings you. Tap Approve. Then send:202 and queues delivery. If a newer inbound arrived since the draft, you get 409 stale_draft instead — reject the draft and start over.
What to read next
Features overview
Plain-English tour of approval channels, rules, contacts, webhooks, and pricing.
MCP integration
Use ActionLayer as a native tool from Claude Code, OpenClaw, and Codex.
API reference
Full endpoint reference grouped by resource.
Code examples
End-to-end snippets in Python, TypeScript, and curl.