Provision an inbox in one POST. Verification codes, OTPs, signup confirms — delivered to your agent in JSON, with the code already extracted. Send replies from the same address. No forms, no spam, no glue.
$ curl -sS .../inbox/$ADDR/wait ← { otp: "482910" }
The whole product in one session: provision an inbox, hold a long-poll open, and take the verification code back as JSON — no inbox to open, no human in the loop.
curl -sX POST https://api.apumail.com/api/v1/inboxes { "address": "brisk-vicuna-a41f@apumail.com", "token": "kQ8vN2xR…", "ttl_seconds": 86400 } curl -s -H "Authorization: Bearer $TOK" ".../inbox/$ADDR/wait?timeout=120" … holding the connection open until mail lands { "from": "noreply@stripe.com", "subject": "Your verification code", "otp": "418902" }
SMTP listener on :25 accepts mail for any inbox you've provisioned.
Random local parts get 550 5.1.1 — built-in spam gate.
The otp field is server-extracted at save.
# 1. Provision (no auth required) INBOX=$(curl -sS -X POST https://api.apumail.com/api/v1/inboxes) ADDR=$(echo "$INBOX" | jq -r .address) TOK=$(echo "$INBOX" | jq -r .token) # 2. Block until a mail lands (≤ 300s) curl -sS -H "Authorization: Bearer $TOK" "…/inbox/$ADDR/wait?timeout=120" # → { messages: [{ from, subject, # otp: "482910" }] }
One POST /send. The from field
is forced to your inbox address — no spoofing. Rate-limited per-inbox and per-IP so
a leaked token can't torch deliverability.
The route reads the authenticated address from the path and overrides whatever
from
the body claims. Token A can not send as inbox B.
Resend handles delivery; we handle the integrity.
curl -X POST -H "Authorization: Bearer $TOK" -H "Content-Type: application/json" -d '{ "to": "user@example.com", "subject": "Re: Your verification", "text": "Confirmed — code 482910." }' https://api.apumail.com/api/v1/inbox/$ADDR/send # → { "ok": true, # "provider_id": "3c260b…" }
Not just email. Buy a dedicated phone number on-demand for your country,
then receive verification codes and send replies —
the same long-poll, OTP-extraction and MCP layer as email
(wait_for_sms, extract_latest_sms_otp,
send_sms). Paid tier, no human in the loop.
One call buys a real number in the country you ask for — no pool to wait on,
no human to email. Inbound texts land instantly and their OTP is server-extracted,
exactly like email. Outbound from is forced to your own
number (no spoofing), rate-limited per-number and per-IP.
# buy a number for your country curl -X POST -H "Authorization: Bearer $ACCT" -d '{ "country_code": "US" }' https://api.apumail.com/api/v1/phones # → { "number": "+1555…", "token": "…" } # block until a code arrives, OTP pre-extracted curl -H "Authorization: Bearer $TOK" .../api/v1/phone/$NUM/wait # → { messages:[{ otp: "482910" }] }
Twenty-five MCP tools at POST /mcp — Claude Code, Cursor,
Cline, Codex, anything that speaks JSON-RPC 2.0. Or skip polling entirely with
HMAC-signed webhook delivery.
One claude mcp add and your agent has email.
Tools map 1:1 to REST endpoints, same shapes.
Register a URL, get an HMAC secret (shown once). We POST every new mail with
X-Apumail-Signature: sha256=<hex>.
Chasquis were the Inca relay-runners who carried imperial mail across the Andes, sprinting between rest stations. Apu is the Quechua word for the sacred-mountain spirit. We thought it fit a service that runs messages from wherever they're sent to wherever your agent is listening — fast, faithful, no infrastructure for the agent to install. The llama is on the badge because chasquis ran with llama-train support. The relay continues.
Free tier always returns a random adj-noun-hex slug. To claim a vanity address that never expires, mint a handle at apuchat.com (5 USDC, Solana). One handle, both services. The moment the mint settles, we pre-provision your inbox permanently.
<your-name>@apumail.com, from 4 USDC/yr) and custom-domain
agent inboxes (<local>@agents.yourdomain.com, $12/yr — see below).
RCPT TO with
550 5.1.1 — that's the primary gate. Each connecting IP is also
capped at 30 mails/minute. Subject/from/body fields are length-truncated.
HTML is sanitized at save time with a conservative allowlist (no
<script>, no javascript:, no
<iframe>).
POST /api/v1/inbox/<addr>/send. The
from address is forced to the authenticated inbox so a leaked
token can't be used to spoof anyone else. Resend handles delivery; first
sends often land in spam until apumail.com's reputation warms up.
ON DELETE CASCADE
drops their mails. Paid permanent inboxes (claimed via apuchat handle) keep
everything until you explicitly delete.
<local>@agents.yourdomain.com, read through the same
REST / long-poll / MCP / OTP layer. @apumail.com can look
disposable and get blocklisted by signup flows; your own branded domain
is a real, deliverable address you keep. Setup is two DNS records (a TXT
ownership challenge + an MX to mail.apumail.com) —
a subdomain is recommended so your apex corporate mail is untouched.
It's inbound only (sending stays on apumail.com or your own
provider). Each agent inbox is $12/yr in USDC, or
$9.60/yr in $PROWL (20% off) — billed per agent, annually, paid
right in the dashboard with your Solana wallet. Sign in with notlogin and
open 🌐 Domains.
POST /api/v1/phones
with a country_code buys a real dedicated number on-demand
(no pool to wait on, no human to email). Then your agent receives
verification codes — read through the same REST / long-poll / MCP / OTP
layer as email (wait_for_sms, extract_latest_sms_otp) —
and sends replies (send_sms), from locked to
your own number. A number is $18/yr ($14.40 in $PROWL); sending
costs $0.07/SMS from prepaid credit (top up in USDC/$PROWL) — or
send without a number at all from a shared sender ID. Sign in with
notlogin and open the 📱 SMS console.
Free random inbox, no signup, in one POST. Or sign in with notlogin to claim a custom name@apumail.com.