Open Source Microservice

Email collection for
any project, in minutes

A multi-tenant, rate-limited, CORS-aware email waitlist API. Register a project, drop in one API call, and start collecting emails.

Read the Docs View Source
JavaScript
cURL
HTML Form
const res = await fetch('https://emailwaitlist.ayushojha.com/api/v1/subscribe', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'wl_your_project_key'
  },
  body: JSON.stringify({ email: 'user@example.com' })
});

const data = await res.json();
// { "message": "Successfully joined the waitlist!" }
curl -X POST https://emailwaitlist.ayushojha.com/api/v1/subscribe \
  -H "Content-Type: application/json" \
  -H "X-API-Key: wl_your_project_key" \
  -d '{"email":"user@example.com"}'

# Response:
# {"message":"Successfully joined the waitlist!","subscriber":{...}}
<form id="waitlist">
  <input type="email" id="email" placeholder="you@example.com" required />
  <button type="submit">Join Waitlist</button>
</form>

<script>
document.getElementById('waitlist').addEventListener('submit', async (e) => {
  e.preventDefault();
  const res = await fetch('https://emailwaitlist.ayushojha.com/api/v1/subscribe', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', 'X-API-Key': 'wl_...' },
    body: JSON.stringify({ email: document.getElementById('email').value })
  });
});
</script>

Built for developers

Everything you need for email collection, nothing you don't.

Multi-tenant

Each project gets isolated API keys and subscriber lists. One instance serves all your apps.

Rate limited

Built-in per-IP rate limiting on subscribe endpoints prevents abuse without extra infrastructure.

CORS-aware

Per-project allowed origins. Works seamlessly from any frontend framework or static site.

CSV export

Export your entire subscriber list as CSV with one API call. Ready for Mailchimp, Resend, or a spreadsheet.

Built-in stats

Subscriber counts by day, week, month. Track growth trends without a separate analytics tool.

Custom metadata

Attach arbitrary JSON to each subscriber — name, referral source, plan interest, or anything else.

Three steps to integrate

Add email collection to any project in under 5 minutes.

1

Register your project

Create a project with the admin key. You'll get a unique wl_ API key.

curl -X POST /api/v1/projects \
  -H "X-Admin-Key: $ADMIN_KEY" \
  -d '{"name":"My App","slug":"my-app",
       "allowed_origins":["https://myapp.com"]}'
2

Add the subscribe call

One POST request from your frontend collects the email.

fetch('/api/v1/subscribe', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'wl_your_key'
  },
  body: JSON.stringify({
    email: 'user@example.com'
  })
})
3

View & export

List subscribers, check stats, or export as CSV anytime.

# Stats
GET /api/v1/stats

# List
GET /api/v1/subscribers?limit=50

# Export
GET /api/v1/subscribers/export

API at a glance

Full documentation available at /docs

MethodEndpointDescriptionAuth
POST /api/v1/subscribe Collect an email address API Key
GET /api/v1/subscribers List subscribers (paginated) API Key
GET /api/v1/subscribers/export Export subscribers as CSV API Key
DELETE /api/v1/subscribers/{email} Remove a subscriber API Key
GET /api/v1/stats Subscriber growth stats API Key
POST /api/v1/projects Create a new project Admin
GET /api/v1/projects List all projects Admin
GET /health Health check None

Ready to start collecting emails?

Read the full API documentation with integration examples for React, vanilla JS, and more.

View Full Docs