Skip to content
Transactional Email Infrastructure

Your SES or
ours. One API. Zero friction.

Route transactional email through your own AWS SES account - zero data stored on our servers - or use our managed infrastructure. Same REST endpoint. Same keys. Your choice.

BYOC - Your SES, your data
Managed - zero AWS setup
$0 to get started
BYOC zero content stored
$9 unlimited BYOC sends
1 endpoint for both modes
sendfleet · POST /api/send/
curl -X POST https://sendfleet.net/api/send/ \
  -H "X-API-Key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "to":         "[email protected]",
    "from_email": "[email protected]",
    "from_name":  "Acme",
    "subject":    "Your order is confirmed",
    "message":    "Thanks for your order!"
  }'
import requests

response = requests.post(
    "https://sendfleet.net/api/send/",
    headers={"X-API-Key": "sk_live_your_key"},
    json={
        "to":         "[email protected]",
        "from_email": "[email protected]",
        "subject":    "Your order is confirmed",
        "message":    "Thanks for your order!",
    },
)
data = response.json()  # {"success": true, "mode": "byoc"}
const res = await fetch("https://sendfleet.net/api/send/", {
  method: "POST",
  headers: {
    "X-API-Key":      "sk_live_your_key",
    "Content-Type":  "application/json",
  },
  body: JSON.stringify({
    to:         "[email protected]",
    from_email: "[email protected]",
    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'         => '[email protected]',
    'from_email' => '[email protected]',
    'subject'    => 'Your order is confirmed',
    'message'    => 'Thanks for your order!',
]);
$ch = curl_init('https://sendfleet.net/api/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":         "[email protected]",
    "from_email": "[email protected]",
    "subject":    "Your order is confirmed",
    "message":    "Thanks for your order!",
})
req, _ := http.NewRequest("POST",
    "https://sendfleet.net/api/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)
200 OK - queued
mode: byoc

Pick the model that fits
your stack.

Same API. Same dashboard. The difference is whose AWS account actually sends the mail - and who stores what.

BYOC - Bring Your Own SES
Your AWS.
Your data. Always.
Email routes through your own AWS SES account via a short-lived IAM role we assume per-send. Your recipient, subject, and body never touch our database. Your sender reputation lives entirely in your account - isolated from every other SendFleet customer.

Starter is free forever (50 emails/month). $9/month for unlimited sends - still your SES, your limits.
Zero data stored Your reputation Your SES limits ExternalId protected
Shared SES - Managed
SendFleet handles
everything.
We handle delivery on our managed AWS infrastructure. Zero AWS setup - verify your domain, drop in a DNS record, you're sending. Full email logs in your dashboard. Bounce and complaint handling built in. Webhook events for every state change.

Growth at $15/month (25k emails) or Pro at $59/month (100k emails). Requires manual account approval to protect shared reputation.
Zero AWS setup Full email logs Webhook events Bounce handling

Security and reliability
at every layer.

01
SHA-512 hashed API keys
We store only a hash - the raw secret is shown once and never persisted. Prefix-based lookup keeps DB queries fast. Revoke any key instantly, set optional expiry dates.
02
HMAC-signed queue payloads
Every SQS message is HMAC-SHA256 signed before queuing. we reject any unsigned or tampered message - no unverified email ever gets delivered.
03
Idempotent delivery
Every shared SES send carries a unique idempotency key. we use ON CONFLICT DO NOTHING to handle SQS at-least-once retries without duplicate sends.
04
Webhook delivery events
Subscribe your HTTPS endpoint to sent, delivered, bounced, complained, and failed events. HMAC-signed payloads. Shared SES plans only - BYOC respects your data privacy.
05
Rate limiting + abuse detection
60 requests/minute per key. Failed auth attempts tracked via Redis. Bounce and complaint rates monitored over a rolling 7-day window - accounts suspended automatically at threshold.
06
Full DNS verification suite
Guided setup for SPF, DKIM, MAIL FROM, and DMARC. Per-record verify buttons. BYOC domains registered directly in your SES via assumed role. DNS propagation up to 48 hours - check status anytime.

Minutes, not days.

BYOC or Shared SES - both modes share the same onboarding flow up to step 3.

01
Create a free account
Register with your email - no credit card, no approval process, instant access. The Starter plan (50 BYOC emails/month) works immediately without any AWS configuration on our end.
02
Add a sending domain
For BYOC: paste your IAM Role ARN - we validate it instantly and register the domain in your SES. For Shared SES: request approval and add DNS records. Both modes give you exact records to copy.
03
Generate a key and send
Create an API key (shown once - store it). Then POST /api/send/ with X-API-Key: your_key. That's the entire integration. Delivery happens in the background.

Plans that respect
your wallet.

Start free. Scale when you're ready. Switch modes anytime.

Starter
$0
free, forever
  • 50 emails/month via your own SES
  • Unlimited API keys
  • Full dashboard access
  • - Email log history
  • - Webhook events
Unlimited sends
BYOC
$9
per month
  • Unlimited emails your AWS SES quota applies
  • Unlimited API keys
  • Complete data privacy
  • Your SES reputation & limits
  • Domain verification via your SES
  • Priority email support
Most popular
Growth
$15
per month
  • 25,000 emails/month
  • Full email log history
  • Webhook delivery events
  • Bounce & complaint handling
  • Domain verification (Shared SES)
  • Priority email support
Pro
$59
per month
  • 100,000 emails/month
  • Everything in Growth
  • Priority support + SLA
  • Advanced analytics

Straight answers.

BYOC means your emails send through your own AWS SES account. We assume your IAM role with a short-lived STS credential (15 minutes per send) to make the API call. Your email content never touches our servers. You need an AWS account with SES approved for production access.
BYOC routes email through your AWS account - your reputation, your SES limits, and zero content stored on our side. Shared SES sends via our managed AWS infrastructure, stores your email logs in your dashboard, and requires no AWS setup. Both use the exact same API endpoint.
We store only a SHA-512 hash of your key - the same approach used for passwords. The raw secret is shown exactly once at creation. Lookup uses an 8-character prefix so DB queries are fast even with many keys. Revoke any key instantly from the dashboard; revocation propagates in under 2 minutes via Redis cache.
ExternalId is a unique 48-character value generated when you save your BYOC config. It must appear in your IAM trust policy's 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.
Yes. Plans and domains are independent. Note that sending domains are registered to a specific mode at creation time - BYOC domains live in your SES, Shared domains live in ours. Adding a new domain after switching modes takes a few minutes but is fully self-serve.
Yes. 50 BYOC emails per month, no credit card, no time limit. It's deliberately low - enough to validate your integration end-to-end before committing to a paid plan. Upgrade to $9/month for unlimited sends with no other changes to your code.

Your SES or ours.
One API. Start today.

50 emails/month free via BYOC. No credit card. No AWS setup required from us until you're ready.