Referral tracking, email notifications, and a hosted signup page — behind one API call, built for your AI agent to use autonomously.
Why teams use it
No stitching together forms, email tools, and spreadsheets. Your AI agent gets one tool that handles the entire pre-launch flow.
Every signup gets a unique referral code and shareable link. Track clicks, conversions, and see your top referrers on a leaderboard.
Welcome emails on signup, invite emails when you're ready. CAN-SPAM compliant with one-click unsubscribe built in.
A ready-to-share signup page with light and dark themes. No frontend code needed — just share the link.
Invite up to 20 people at once. Each gets a personalized invite email with your branding and a CTA to get started.
Total signups, today's count, this week's growth, and a top referrers leaderboard — one API call away.
Every waitlist is fully isolated at the database level with PostgreSQL Row-Level Security. Your data never leaks.
Built for AI agents
No SDK, no webhooks, no config files. Point your AI agent at the CLI or API — it discovers the actions and runs them autonomously.
$ 25t waitlist add --email "alice@example.com" --name "Alice" ✓ Added position #42 · referral code 25T-ABCDE · welcome email sent
$ 25t waitlist list --status waiting --limit 10 #1 alice@example.com Alice waiting referrals: 3 #2 bob@example.com Bob waiting referrals: 1 #3 carol@example.com Carol waiting referrals: 0 showing 3 of 150 entries
$ 25t waitlist stats total: 150 · today: 12 · this week: 45 top referrers: alice@example.com 15 referrals 23 clicks bob@example.com 8 referrals 19 clicks
# Single invite $ 25t waitlist invite --email "alice@example.com" ✓ Invited alice@example.com · invite email sent # Batch invite (up to 20) $ 25t waitlist invite --emails "alice@example.com,bob@example.com" ✓ Batch complete 2 invited · 0 already invited · 0 not found
$ 25t waitlist remove --email "spam@bot.com" ✓ Removed spam@bot.com
curl -X POST https://api.25.tools/api/v1/waitlist/add \
-H "Authorization: Bearer 25t_..." \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"name": "Alice"
}'
{
"data": {
"email": "alice@example.com",
"name": "Alice",
"position": 42,
"referral_code": "25T-ABCDE",
"status": "waiting",
"email_status": "sent"
}
}
curl -X POST https://api.25.tools/api/v1/waitlist/list \
-H "Authorization: Bearer 25t_..." \
-H "Content-Type: application/json" \
-d '{
"status": "waiting",
"limit": 10
}'
{
"data": {
"entries": [{
"email": "alice@example.com",
"position": 1,
"referral_count": 3,
"status": "waiting"
}],
"total": 150
}
}
curl -X POST https://api.25.tools/api/v1/waitlist/stats \
-H "Authorization: Bearer 25t_..." \
-H "Content-Type: application/json" \
-d '{}'
{
"data": {
"total": 150,
"today": 12,
"this_week": 45,
"top_referrers": [{
"email": "alice@example.com",
"referral_count": 15
}]
}
}
curl -X POST https://api.25.tools/api/v1/waitlist/invite \
-H "Authorization: Bearer 25t_..." \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com"
}'
{
"data": {
"email": "alice@example.com",
"status": "invited",
"email_status": "sent"
}
}
curl -X POST https://api.25.tools/api/v1/waitlist/remove \
-H "Authorization: Bearer 25t_..." \
-H "Content-Type: application/json" \
-d '{
"email": "spam@bot.com"
}'
{
"data": {
"email": "spam@bot.com",
"status": "removed"
}
}
Hosted signup page
Every waitlist gets a hosted signup page out of the box. Light or dark theme, referral tracking included, no code required.
Be the first to know when we launch.
Match your brand with a single config flag. No CSS needed.
Appends ?ref= codes automatically. Shows referral URL after signup.
Hosted on 25.tools infrastructure. Share the link, start collecting signups.
One API key. Referrals, emails, and a hosted page — included.
Get started →