Send Email From Your Domain via API for $9/mo
You want to send password resets, invoices, or notifications from noreply@yourapp.com. But setting up email sending infrastructure directly means SMTP credentials, DKIM key rotation, and bounce handling. Bottled wraps all of that into a single REST endpoint.
The problem with DIY email infrastructure
Setting up transactional email from your own domain sounds simple, but getting from "I have a domain" to "my app sends authenticated email" takes hours:
- Request production access from an email provider
- Configure API credentials and access policies
- Generate SMTP credentials or use the SDK
- Set up DKIM, SPF, and DMARC DNS records manually
- Handle bounces, complaints, and suppression lists
- Monitor sending reputation
For a side project or a startup MVP, that's a full day of yak-shaving before you send a single email.
Bottled's API: one endpoint, done
Bottled handles email delivery under the hood. You get a REST API with API key auth. Here's the entire integration:
curl -X POST https://bottled.email/api/v1/send \
-H "Authorization: Bearer btl_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "noreply@yourapp.com",
"to": "user@example.com",
"subject": "Your invoice is ready",
"text": "Hi Alex, your invoice for $49 is ready.",
"html": "<p>Hi Alex, your invoice for <strong>$49</strong> is ready.</p>"
}'That's it. DKIM, SPF, and deliverability are handled.
In JavaScript / TypeScript
const res = await fetch("https://bottled.email/api/v1/send", {
method: "POST",
headers: {
"Authorization": "Bearer btl_YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "noreply@yourapp.com",
to: "user@example.com",
subject: "Password reset",
text: "Click here to reset: https://yourapp.com/reset?token=abc",
html: '<p>Click <a href="https://yourapp.com/reset?token=abc">here</a> to reset.</p>',
}),
});
const data = await res.json();
// { data: { id: 42, messageId: "...", status: "sent" } }In Python
import requests
response = requests.post(
"https://bottled.email/api/v1/send",
headers={
"Authorization": "Bearer btl_YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"from": "noreply@yourapp.com",
"to": "user@example.com",
"subject": "Welcome to YourApp",
"text": "Thanks for signing up!",
"html": "<p>Thanks for signing up!</p>",
},
)
print(response.json())What you get
- DKIM + SPF out of the box. Your emails don't go to spam. Bottled configures authentication when you add your domain.
- Recipient validation. The API checks email syntax, role-address denylists, and MX records before sending. Bad addresses return
INVALID_RECIPIENT(422) instead of bouncing. - Domain warmup. New domains start with a daily cap (100/day) that ramps to unlimited over 7 days. This protects your sending reputation automatically.
- Email-safe HTML wrapping. Send raw HTML and Bottled wraps it in an email-safe shell with Outlook VML fixes, client resets, and a system font stack.
- Send logging. Every API send is logged with message ID, timestamp, and status — visible in the dashboard.
Pricing for developers
The API is available on every plan, including free:
- Starter (free): 25 sends/month — enough for a prototype or personal project
- Essentials ($9/mo): 300 sends/month — good for a small SaaS or client project
- Pro ($29/mo): 5,000 sends/month — campaigns, bulk sends, and open/click tracking
Compare that to Resend ($20/mo for 5,000), Postmark ($15/mo for 10,000), or the complexity tax of running email infrastructure yourself.
Setup in 5 minutes
- Sign in at bottled.email
- Add your domain, follow the DNS wizard
- Go to Dashboard > API > Generate Key
- Call
POST /api/v1/sendfrom your app
Send from your domain in 5 minutes
Free tier includes 25 API sends/month. No credit card.
Get Started Free