Developers

Sending, Behind An API You Can Read

Enrol contacts from product events, stream replies into your own systems, and relay transactional mail through the same warmed infrastructure your campaigns use. REST, webhooks and SMTP.

Trusted by teams sending millions of emails a month
NorthwindLumenKestrelFieldnoteArcadiaBeaconTrellis

Suppress An Address In One Call

Predictable REST, cursor pagination on every list, and errors that name the field that broke rather than returning a bare 400.

POST /api/v2/suppressions
curl https://app.outfrank.com/api/v2/suppressions \
  -H "Authorization: Bearer $OF_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"dana@arcadia.io"}'

{
  "id": "clyq3f8x10004l208d6h2b9wq",
  "email": "dana@arcadia.io",
  "reason": "manual",
  "source": "api",
  "created_at": "2026-08-29T09:14:02Z"
}

Three Ways In

Pick whichever fits the job. They all sit on the same sending infrastructure and share the same domain budgets.

API

REST

Contacts, campaigns, sequences, domains and reporting. Rate limits are per key and returned on every response, so you never have to guess.

HOOK

Webhooks

Signed with HMAC, retried with backoff for 24 hours, and replayable from the dashboard. Events for sent, opened, replied, bounced and unsubscribed.

SMTP

Relay

Point your app's transactional mail at our relay and it inherits the same authentication and reputation monitoring as your outbound.

Developer Questions

Answered before you read the reference.

What are the rate limits?

120 requests a minute per key on reads, 60 on writes, burstable to 300. Every response carries the remaining budget and a reset timestamp in the headers.

Is there a sandbox?

Yes. Test keys accept the full API surface, run verification for real, and route every message to a capture inbox instead of the recipient.

How do you version?

Date-based, pinned per key. Breaking changes ship behind a new version and the previous one is supported for at least twelve months with deprecation warnings in the headers.

Can I bring my own domains?

Always. The API manages domains as first-class objects — add them, check authentication status, and read the current warmup ceiling programmatically.

Start Sending With Outfrank

Import a list, connect an inbox, and send your first campaign today. No credit card, no sales call.