Official Node.js client for the EmailAlias.io REST API. TypeScript types included.
API access is a Premium feature. Generate a key from Settings → API Keys in the web dashboard.
npm install emailalias
# or
yarn add emailalias
# or
pnpm add emailaliasRequires Node.js 18+ (uses the global fetch).
import{Client}from"emailalias";constclient=newClient({apiKey: process.env.EMAILALIAS_API_KEY!,});// Create an aliasconstalias=awaitclient.createAlias({alias_type: "random",label: "Shopping",});console.log(alias.alias_email);// "x7k9m@email91.com"// List aliasesconstaliases=awaitclient.listAliases();aliases.forEach((a)=>console.log(a.alias_email,"→",a.destination_email));// Forward to a verified additional destinationconstworkAlias=awaitclient.createAlias({alias_type: "custom",custom_code: "work-signup",label: "Work",destination_email: "work@mycompany.com",// must be verified on your account});// Send email from an aliasawaitclient.sendEmail({alias_id: alias.id,to_email: "recipient@example.com",subject: "Hello",body: "Sent from my alias.",});// Disable an aliasawaitclient.updateAlias(alias.id,{active: false});import{Client,AuthenticationError,RateLimitError,EmailAliasError,}from"emailalias";constclient=newClient({apiKey: "ea_live_xxx"});try{awaitclient.listAliases();}catch(err){if(errinstanceofAuthenticationError){// Invalid key, or account no longer Premium}elseif(errinstanceofRateLimitError){// Respect X-RateLimit-Reset and retry}elseif(errinstanceofEmailAliasError){console.error(err.status,err.message);}}constclient=newClient({apiKey: "ea_live_xxx",baseUrl: "https://emailalias.io",// override for staging / self-hosttimeoutMs: 30_000,fetchImpl: fetch,// inject a custom fetch (e.g. `undici`)});Never put a live API key in frontend code. Any user can open devtools and read it. If you're building a browser/React app, call EmailAlias.io from your backend and proxy requests from the client, or use emailalias-react from a Next.js Route Handler / server action.
| Method | Endpoint |
|---|---|
listAliases() | GET /api/aliases |
createAlias(opts) | POST /api/aliases |
updateAlias(id, opts) | PATCH /api/aliases/{id} |
updateAliasDisplayName(id, displayName) | PATCH /api/aliases/{id}/display-name |
deleteAlias(id) | DELETE /api/aliases/{id} |
listAvailableDomains() | GET /api/aliases/domains |
listDestinations() | GET /api/destinations |
addDestination(email) | POST /api/destinations |
resendDestinationVerification(id) | POST /api/destinations/{id}/resend |
deleteDestination(id) | DELETE /api/destinations/{id} |
sendEmail({alias_id, to_email, subject, body, html_body?}) | POST /api/send-email |
listDomains() | GET /api/domains |
addDomain(name) | POST /api/domains |
verifyDomain(id) | POST /api/domains/{id}/verify |
deleteDomain(id) | DELETE /api/domains/{id} |
getDashboardStats() | GET /api/analytics/dashboard |
listLogs(page, perPage) | GET /api/analytics/logs |
listExposureEvents(page, perPage) | GET /api/analytics/exposure |
Full API reference: https://emailalias.io/documentation
MIT