API reference
OpenAPI & SDK
The machine-readable API description and the single-file TypeScript client.
OpenAPI document
GET https://api.f5send.com/api/v1/openapi.json
The endpoint needs no key. The document is OpenAPI 3.1. The platform generates the request schemas from the same validators that the routes use, so the document and the API cannot drift. A test checks the hand-written response shapes and error codes against Errors.
Use it to generate a client in any language or to import the API into Postman or Bruno. It also gives an agent the full surface in one file.
TypeScript client
The client is one file with no dependencies, sdk/f5send.ts. Ask support for it. Copy it into your project, or publish it to your private registry. It wraps every endpoint, adds Idempotency-Key pass-through, and retries 429 (honouring Retry-After) and 5xx up to three times with jitter.
import { F5send } from "./f5send";
const f5 = new F5send({ apiKey: process.env.F5SEND_API_KEY! });
const { id } = await f5.emails.send({ from: "Acme <hello@example.com>", to: "jane@example.org", subject: "Welcome", text: "Hi Jane" }, { idempotencyKey: "welcome:jane" });
const page = await f5.emails.list({ status: "delivered", limit: 50 });
Errors throw F5sendError with status, code and message, so a sending_paused or rate_limited answer is one catch away.
Two thin clients sit on the same file: the CLI for shells and scripts, and the MCP server for agents.
Not in the document
The SMTP relay is not part of the OpenAPI document, because it is not an HTTP endpoint. The relay calls GET /keys/me and POST /emails. Both are in the document, and the client exposes the first as f5.keys.me().