SendFleet · Transactional Email API
Your SES or
ours.
One API.
One endpoint, two sending modes.
Route transactional email through your own AWS SES account, with message bodies never stored in our database, or use our managed infrastructure. Same sending endpoint. Same keys. Your choice.
curl -X POST https://api.sendfleet.net/v1/send \ -H "X-API-Key: sk_live_your_key" \ -H "Content-Type: application/json" \ -d '{ "to": "user@example.com", "from_email": "hello@yourdomain.com", "from_name": "Acme", "subject": "Your order is confirmed", "message": "Thanks for your order!" }'
import requests response = requests.post( "https://api.sendfleet.net/v1/send", headers={"X-API-Key": "sk_live_your_key"}, json={ "to": "user@example.com", "from_email": "hello@yourdomain.com", "subject": "Your order is confirmed", "message": "Thanks for your order!", }, ) data = response.json() # {"success": true, "mode": "byoc"}
const res = await fetch("https://api.sendfleet.net/v1/send", { method: "POST", headers: { "X-API-Key": "sk_live_your_key", "Content-Type": "application/json", }, body: JSON.stringify({ to: "user@example.com", from_email: "hello@yourdomain.com", subject: "Your order is confirmed", message: "Thanks for your order!", }), }); const { message_id, mode } = await res.json(); // mode → "byoc" | "shared"
<?php $payload = json_encode([ 'to' => 'user@example.com', 'from_email' => 'hello@yourdomain.com', 'subject' => 'Your order is confirmed', 'message' => 'Thanks for your order!', ]); $ch = curl_init('https://api.sendfleet.net/v1/send'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => [ 'X-API-Key: sk_live_your_key', 'Content-Type: application/json', ], ]); $data = json_decode(curl_exec($ch), true);
body, _ := json.Marshal(map[string]string{ "to": "user@example.com", "from_email": "hello@yourdomain.com", "subject": "Your order is confirmed", "message": "Thanks for your order!", }) req, _ := http.NewRequest("POST", "https://api.sendfleet.net/v1/send", bytes.NewBuffer(body)) req.Header.Set("X-API-Key", "sk_live_your_key") req.Header.Set("Content-Type", "application/json") http.DefaultClient.Do(req)
BYOC and Shared SES,
side by side.
Same API. Same dashboard. The difference is whose AWS account actually sends the mail, and who stores what.
SendFleet handles
everything.
Managed Starter at $5/month (5k emails), Managed Growth at $15/month (25k emails), or Managed Pro at $59/month (100k emails). Requires account email verification and a verified sending domain.
Your AWS.
Your data. Always.
Free BYOC is free forever (3,000 emails/month). The BYOC plan is $5/month with 20,000 emails included, then $0.10 per 1,000, with delivery tracking, webhooks and bounce protection from your own SES.
What the API
guarantees.
SHA-512 hashed API keys
Integrity-checked queue
Idempotent delivery
Webhook delivery events
Rate limiting & deliverability protection
Full DNS verification suite
Three steps to your first send.
BYOC or Shared SES: both modes share the same onboarding flow up to step 3.
Create a free account
Add a sending domain
Generate a key and send
POST /v1/send with X-API-Key: your_key. That's the entire integration. Delivery happens in the background.
Running WordPress? The official SendFleet plugin is step 3 for you: paste the key and every wp_mail() email goes through SendFleet, with no SMTP settings. Free on WordPress.org.
Plans and prices,
side by side.
Start free. Scale when you're ready. Switch modes anytime.
Free BYOC
- ✓3,000 emails/month via your own SES
- ✓Unlimited API keys
- ✓Full dashboard access
- ✓Shared SES smoke test, to your own address only
- − Email log history
- − Webhook events
BYOC
- ✓20,000 emails/month included, then $0.10 per 1,000
- ✓One-click AWS connection
- ✓Delivery tracking, webhooks and email logs
- ✓Bounce and complaint protection
- ✓Production access requested for you
- ✓Your SES reputation, never shared
Managed Starter
- ✓5,000 emails/month
- ✓Full email log history
- ✓Webhook delivery events
- ✓Bounce & complaint handling
- ✓Priority email support
Managed Growth
- ✓25,000 emails/month
- ✓Full email log history
- ✓Webhook delivery events
- ✓Bounce & complaint handling
- ✓Domain verification (Shared SES)
- ✓Priority email support
Managed Pro
- ✓100,000 emails/month
- ✓Everything in Growth
- ✓Priority support + SLA
- ✓Advanced analytics
The API reference.
Guides and references for integrating SendFleet.
Frequently asked questions.
Condition block. Without it, any party who learns your Role ARN could ask our infrastructure to assume it, the "confused deputy" attack. With ExternalId, only requests carrying the correct value (only we know it) can assume your role.