RefreshDocsConsole →

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().