Send email like a jet
Email API for Indonesian developers. OTPs, notifications, invoices — flat Rupiah pricing.
3,000 free emails every month · No credit card required
import { F14 } from 'f14';
const f14 = new F14(process.env.F14_API_KEY);
const { data, error } = await f14.emails.send({
from: 'noreply@acme.id',
to: 'user@email.com',
subject: 'Your verification code',
html: '<p>Your code: <strong>482193</strong></p>',
});{
"emailId": "cm3x9k2a10001qz8f7d2h4v1s"
}Works with the stack you already use
- Next.js
- Laravel
- Supabase
- Django
- Node.js
- Python
- WordPress
- Go
Dashboard
Every email, one view
Track delivery status, search emails, and see every event — from queued to clicked.
Sent (30 days)
18,420
Delivered
99.2%
Bounced
0.4%
| Recipient | Subject | Status | Time |
|---|---|---|---|
| budi@tokoonline.id | Login code | delivered | 2s ago |
| finance@kledo.com | Invoice INV-0892 | opened | 1m ago |
| sari@klinikmedika.co.id | Month-end promo | clicked | 4m ago |
| wrong@invalid.id | Reset password | bounced | 9m ago |
| andi@studionusantara.id | Welcome aboard | scheduled | tomorrow 9:00 |
Platform
One platform for all your product email
From OTPs to newsletters. Send via API, SMTP, or the dashboard — everything logged in one place.
REST API & SDKs
TypeScript and Python SDKs, or plain REST. Batch up to 100 emails per request, schedule with scheduledAt, and retry safely with an Idempotency-Key.
SMTP relay
Connect existing backends — Supabase Auth, Laravel, Django, NextAuth, or WordPress — by swapping SMTP credentials.
Real-time webhooks
Delivered, opened, clicked, bounced, complained, and more. Signed with HMAC SHA-256 and retried automatically on failure.
Campaigns & contacts
Manage contact books, send campaigns to thousands of contacts, schedule, pause, or resume. One-click unsubscribe included.
Templates & visual editor
Design emails in a visual editor, save them as templates, then send via API with a templateId and variables.
Logs & analytics
Search emails by recipient or status, see each email's event timeline, and monitor bounce and complaint rates.
Integration
Up and running in minutes
Create an API key in the dashboard, verify your domain, and send. Copy-paste examples included.
import { F14 } from 'f14';
const f14 = new F14(process.env.F14_API_KEY);
await f14.emails.send({
from: 'billing@startupmu.id',
to: 'pelanggan@perusahaan.com',
subject: 'Invoice #0891 paid',
html: '<p>Thank you for your payment.</p>',
});Event lifecycle
Every step is logged and delivered via webhook.
queued00:00.000Accepted and queued
sent00:00.214Handed off to the receiving server
delivered00:00.871Landed in the inbox
Deliverability
Land in the inbox, not spam
Deliverability depends on authentication, reputation, and content quality. We handle the technical foundation.
Custom domains + DNS verification
Add the DKIM, SPF, MX, and DMARC records we provide. Status is verified automatically.
Automatic suppression list
Hard-bounced and complained addresses are never retried. You can add entries manually too.
Bounce & complaint details
Every bounce and complaint is logged and delivered via webhook.
Open & click tracking
Enable per domain when you need open and click data.
One-click unsubscribe
Campaigns include an unsubscribe link compliant with global inbox standards.
DKIMTXT
f14._domainkey.acme.id
SPFTXT
mail.acme.id
MX
mail.acme.id
DMARCTXT
_dmarc.acme.id
Example dashboard view
For teams & agencies
One account, many domains
Made for software houses, digital agencies, and dev studios. Manage each client's domain, scope API keys per domain, and invite your team.
Multi-domain
Add unlimited client domains on paid plans. Verification status and logs are visible per domain.
Per-domain API keys
Restrict an API key to a single domain, with Full access or Sending-only permission.
Team members & roles
Invite teammates as Admin or Member in one workspace.
batik-productionSending onlymedika-backendSending onlystudio-adminFull accessPricing
Simple pricing. Paid in Rupiah.
No USD exchange-rate swings. Start free, upgrade when you're ready for production.
Free
ExploreFor trying the integration and development.
- 3,000 emails / month
- 100 emails / day limit
- 1 domain
- 1 contact book
- 1 team member
- 1 webhook endpoint
- REST API, SDKs & SMTP relay
Developer
Most popularFor SaaS, startups, and agencies in production.
- Includes 30,000 transactional emails / month
- No daily limit
- Unlimited domains, contact books & team members
- Unlimited webhook endpoints
- Marketing campaigns & templates
- Overage: Rp 4 / transactional email
- Overage: Rp 10 / marketing email
Scale
High volumeVolume pricing for millions of emails per month.
- Custom per-email pricing
- Dedicated infrastructure migration
- Priority support
- Pay by invoice
Comparison
Why f14.email
Feature parity with global providers, with supersonic speed and fixed Rupiah pricing.
| f14.email | Global providers | Bulk platforms | |
|---|---|---|---|
| Currency | Rupiah, fixed price | USD, FX exposure | Rupiah / manual credits |
| Email types | Transactional + campaigns | Transactional + marketing | Newsletters / promos |
| Integration | REST API, TS & Python SDKs, SMTP | REST API, SDKs, SMTP | SMTP / CSV upload |
| Webhooks | 15+ events, HMAC-signed | Yes | Limited |
| Reliability & SLA | 99.9% Uptime SLA & dedicated IP pools | Varies | No SLA guarantee |
FAQ
Frequently asked questions
Technical details before you integrate f14.email.
Yes. Besides transactional email (OTPs, password resets, invoices), f14.email supports contact books and campaigns for newsletters and product announcements, with one-click unsubscribe. Marketing email is billed at a different rate than transactional.
Email delivery runs on enterprise-grade sending infrastructure with optimized IP reputation and a 99.9% uptime SLA. f14.email adds a developer-first REST API, SMTP relay, dashboard, webhooks, and Rupiah billing on top.
Yes, and it's required to send. Add a domain or subdomain, set up the DKIM, SPF, MX, and DMARC records shown in the dashboard, then verify.
Yes. Use the f14.email SMTP host on port 465 or 2465 (TLS), or 587 or 2587 (STARTTLS). The password is your API key.
Send an Idempotency-Key header. Requests with the same key and body won't send twice within 24 hours.
Upgrade from the billing page in the dashboard. You're billed in Rupiah and can cancel anytime.