API & developers
GetNada API — integrate temporary email & inboxes
The GetNada API lets you automate disposable email: list domains, open temporary inboxes, and fetch messages with the token from open. Build apps that create throwaway addresses, poll inboxes, or wire verification flows without hosting mail yourself. API keys unlock member-tier domains. There is no billing here; premium is manual via Contact.
Trouble signing in? From Log in, use Forgot password. If you registered but are still pending, open Account to enter your activation code.
Prerequisites
Guests can call public endpoints and open guest-tier inboxes. To use ?api_key= on open, register, verify your email, then create a key on this page after sign-in.
Lost your password? Use Forgot password from the login page.
Step 0 — Health check (optional)
Confirms the app can reach the database. No API key or inbox token.
curl -sS "https://your-domain.example/api/ready"
Step 1 — List available domains
GET /api/public/domains returns enabled hostnames. Pick one for the local part of your disposable address.
curl -sS "https://your-domain.example/api/public/domains"
Step 2 — Open (create) an inbox
POST /api/inbox/open with JSON body { "email": "local@domain" }. Append ?api_key=YOUR_API_KEY when you need member-tier domains (verified account). Omit the query param for guest-only domains. The JSON response includes visibility (public or private) and recipient.
Public vs private: New addresses opened through this route create a public inbox row unless the address already exists as a private inbox. If the row is private, the server returns HTTP 403 unless the request is authenticated as the owner: either your browser session (signed-in, verified user — same cookies as the site) or an account API key that belongs to that same user. Guests, pending accounts, and other users’ keys cannot open someone else’s private inbox. Public inbox behavior for anonymous open is unchanged when the row is public.
JSON body uses error: "PRIVATE_INBOX_ACCESS_DENIED" for that 403 — useful for scripts; the web UI shows a friendly message instead of the raw code.
curl -sS -X POST "https://your-domain.example/api/inbox/open?api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}'Response includes token (inbox JWT), inboxId, and activeUntil. Use token in Step 3 — it is not the same as your account API key.
Step 3 — List messages
GET /api/inbox/messages requires the inbox token from Step 2. Either pass ?token=… or Authorization: Bearer … (same JWT).
Option A — query string
curl -sS "https://your-domain.example/api/inbox/messages?token=YOUR_INBOX_TOKEN"
Option B — Authorization header
curl -sS -H "Authorization: Bearer YOUR_INBOX_TOKEN" \ "https://your-domain.example/api/inbox/messages"
Step 4 — Keep-alive, polling, realtime
- Heartbeat —
POST /api/inbox/heartbeatwith JSON{ "token": "…" }extends the session (browser UI does this on a timer). - Polling — repeat Step 3 on an interval if Redis/SSE is unavailable.
- SSE —
GET /api/inbox/streamwith the same inbox token (Bearer or?token=) when Redis is configured; otherwise use polling.
Heartbeat example
curl -sS -X POST "https://your-domain.example/api/inbox/heartbeat" \
-H "Content-Type: application/json" \
-d '{"token":"YOUR_INBOX_TOKEN"}'Authentication cheat sheet
Account API key (verified members only) — used so open can resolve member-tier domain access. Preferred for scripts: append ?api_key=… to the /api/inbox/open URL. Also supported: X-API-Key or Authorization: Bearer … on that same request.
Query parameters may be logged by proxies and browsers. For production integrations in hostile networks, prefer sending the account key in headers instead of the query string.
Inbox token — short-lived JWT returned by open (or POST /api/account/inboxes / …/inboxes/<id>/open for private create/refresh). Use it for messages, heartbeat, stream. Pass ?token=… or Authorization: Bearer ….
Access tiers
- Guest — no account API key; guest-tier domains only on
open. - Member — verified email; API keys within plan limits; member + guest domains for
open. - Premium — data-level higher access; upgrades only via Contact.
Reference
Key storage, issuance, and HTTP errors: docs/PART_2_API_KEYS.md. Auth and activation: docs/PART_2_AUTH_PLAN.md.
Not built here: Swagger portal, org sharing, admin key console, usage analytics dashboards, or automated key rotation wizards.
