Creator email platform Bootstrapped since 2019; the flat unlimited rate ended 2 December 2025
Flodesk logo

Flodesk API + MCP (2026): rebuilt v1, native MCP, no send endpoint

Last verified Aug 27, 2026

Flodesk spent most of its life without a usable public API, and that reputation is out of date. The developer API was rebuilt and relaunched in January 2026 at https://api.flodesk.com/v1, included on every paid plan at no extra cost, alongside a first-party Model Context Protocol server that makes Flodesk one of the few design-first ESPs with native AI-agent access. The catch is what it does not do: no send endpoint, no transactional surface and no SMTP relay anywhere in the product, so the API manages people and automations rather than messages.

The practical question is therefore not “does Flodesk have an API” but “can it do the thing I need”. Subscriber sync, segmentation, workflow entry, custom fields and webhooks: yes, cleanly. Receipts, password resets and app notifications: no, you will need a companion such as Postmark or Amazon SES on the same domain.

At a glance

v1
REST API version
Path-versioned, JSON over HTTPS, rebuilt January 2026

0
Official SDKs
No first-party client library in any language; curl examples only

Native
MCP server
First-party remote server at mcp.flodesk.com, free for members

MCP integration in 2026

Model Context Protocol lets an AI client such as Claude, ChatGPT or Gemini call a vendor’s tools directly instead of scraping a UI or being handed an API key in a prompt. For most marketing ESPs the 2026 answer is still “community wrappers only”. Flodesk is an exception.

First-party MCP server, read-oriented today

Flodesk operates an official remote MCP server at https://mcp.flodesk.com/mcp, included for members at no extra cost. Setup takes roughly 2 minutes-copy the per-account connector URL from app.flodesk.com/account/integrations/mcp, paste it into your AI client’s connector settings and authorize with a Flodesk login rather than a pasted key. The tool surface is query oriented: open and click rates, subscriber inquiries, segmentation, form and checkout performance, workflow results, list management. Full account management through AI, creating and sending emails, workflows, forms and checkouts, is planned but not shipped.

Available MCP servers

One official server plus wrappers. The wrappers matter because they expose write actions the first-party server does not yet cover.

Why buyers should care. MCP availability is becoming a real procurement signal. A native server means an analyst can ask which of last month’s campaigns beat a given open rate, and why, without an API key, a script or a CSV export. Two caveats: it is read-oriented, so it reports rather than acts, and it inherits the product’s hard limit, no amount of AI access creates a send endpoint that does not exist. Compare Mailchimp, Kit and MailerLite if agent-driven campaign creation is the requirement.

Flodesk API essentials

The v1 API is a small, conventional REST surface: JSON in, JSON out, HTTPS only, five resources, offset pagination. Nothing exotic to learn and nothing to work around, no GraphQL layer, no partial-response syntax, no bulk job queue beyond one batch endpoint.

Base URLhttps://api.flodesk.com/v1
Version1.0.0, path-versioned as /v1 CURRENT
TransportJSON over SSL (HTTPS) only, no plaintext, no SMTP
Response formatJSON object with a meta block and a data array on list calls
PaginationQuery params page (default 1) and per_page (default 20, max 100)
Lookup keyFlodesk ID or email address, interchangeably, in {id_or_email} paths
Bulk operationsPOST /v1/subscribers/batch-up to 50 subscribers per call
Rate-limit headersX-Fd-RateLimit-Limit and X-Fd-RateLimit-Remaining on every response
Webhook events3 documented events, managed through /v1/webhooks
Send endpointNone. Sending is triggered by workflow entry, not by an API call
Plan requirementPaid members only. API keys are unavailable on trial and free accounts

Five resources carry the whole surface: subscribers (upsert, read, unsubscribe), segments (the list-equivalent, plus membership), workflows (list automations, push subscribers into them), custom fields and webhooks (full CRUD)-24 documented resource-and-method pairs. The mental model matters more than the count: a Flodesk segment is closer to a tag than a list, and an email only leaves the building when a subscriber crosses into a workflow you built in the visual editor. Your integration’s job is to get the right person into the right segment or workflow with the right custom fields attached.

Authentication methods

Two schemes, split by who owns the account you call on behalf of. Your own account: API key. Other people’s accounts, from a product you ship: OAuth2 plus Flodesk’s approval.

HTTP Basic with an API key

The private-integration path. Create a key in account settings, then send it as the username of an HTTP Basic credential with an empty password. The trailing colon is not optional, and omitting it is the most common cause of a 401 on a first request: the encoded value is base64("YOUR_API_KEY:"). Keys are shown exactly once at creation with no retrieval screen, so store yours in a secret manager before closing the dialog.

OAuth2 authorization code, for partner apps

Partner integrations use a standard authorization-code flow: authorize at https://api.flodesk.com/oauth2/authorize, exchange at https://api.flodesk.com/oauth2/token, resolve identity with GET /oauth2/userinfo. There is a single scope, all, granting full API access, no read-only variant exists, so least-privilege is not achievable through scoping. Refresh tokens are single-use: every refresh issues a new one and invalidates the old.

Two gates before you write a line of code. API keys are paid-plan only, so you cannot prototype against a free workspace. And OAuth2 partner access is not self-serve: you must be approved through Flodesk’s Partner Integration Request Form before your client credentials work. Budget calendar time if you are shipping a public connector.

Rate limits

Two published limits, and the headline number is not the one that bites.

LimitValueNotes
Default request rate100 requests / minuteApplies across all endpoints, per account
Batch endpoint rate20 requests / minutePOST /v1/subscribers/batch only, a separate, stricter bucket
Batch payload size50 subscribers / requestHard cap on the array length
Effective import ceiling1,000 subscribers / minute20 calls × 50 records
Page size100 records / pageper_page maximum on all list endpoints
Over-limit responseHTTP 429Watch X-Fd-RateLimit-Remaining before you get there

The workaround is planning, not engineering. A 100,000-contact migration at the batch ceiling needs at least 100 minutes of continuous, correctly-throttled calls before retries, so run it as a resumable background job with a checkpoint, not a request-scoped script that dies at the load balancer timeout. Read X-Fd-RateLimit-Remaining and slow down as it drops rather than sprinting into 429s. For one-off list moves, Flodesk’s CSV import beats any API path.

Official SDKs

There are none. Flodesk publishes no first-party client library in any language, maintains no public SDK repositories, and documents the API entirely with curl examples. This is a confirmed absence, not a documentation gap, and it says where the API sits on the roadmap: shipped and supported, not courted. The upside is that auth is plain HTTP Basic and payloads are flat JSON, so a working client is roughly 20 lines.

LanguagePackageInstallRepo
PythonNone publishedpip install requestsdevelopers.flodesk.com
Node.jsNone publishedBuilt-in fetch on Node 18+developers.flodesk.com
PHPNone publishedcomposer require guzzlehttp/guzzledevelopers.flodesk.com
RubyNone publishedgem install faradaydevelopers.flodesk.com
GoNone publishedStandard library net/httpdevelopers.flodesk.com

Plan for the absence, not around it. With no SDK there is no typed subscriber model, no version pinning and no upstream fix when a field changes shape. Write a thin wrapper with one place that builds the Basic header and one that handles 429 and 5xx, contract-test it in CI, and treat every response field as optional until you have seen it. Teams needing a maintained client library are better served by MailerLite or Mailchimp.

Notable community SDKs

No maintained, independently-published Flodesk client library could be verified against an official source as of August 2026. What exists instead are platform-level clients: the official Zapier app (3 triggers, 7 actions), the official Make app (10 modules, one of them a generic authenticated API call that reaches endpoints the others do not), Pabbly Connect and Pipedream. Those are the closest thing to an SDK with someone else maintaining the auth layer.

Endpoints reference

The fifteen below are the pairs an integration actually calls; the full reference is at developers.flodesk.com. Note what is absent and stays absent: anything named /messages, /send or /transactional.

ResourceMethodsDescription
Subscribers
/v1/subscribers
GETList subscribers, paginated, filterable by subscription status.
Subscribers
/v1/subscribers
POSTCreate a subscriber, or update one matched on email. Upsert semantics.
Subscribers
/v1/subscribers/batch
POSTBatch upsert up to 50 subscribers; 20 req/min bucket.
Subscribers
/v1/subscribers/{id_or_email}
GETRetrieve one subscriber by Flodesk ID or email address.
Subscribers
/v1/subscribers/{id_or_email}/segments
POSTAdd a subscriber to one or more segments.
Subscribers
/v1/subscribers/{id_or_email}/segments
DELETERemove a subscriber from one or more segments.
Subscribers
/v1/subscribers/{id_or_email}/unsubscribe
POSTUnsubscribe from all mailings; returns 204.
Segments
/v1/segments
GET, POSTList segments (paginated) or create one.
Segments
/v1/segments/{id}
GETRetrieve a single segment by ID.
Segments
/v1/segments/colors
GETColour values accepted when creating a segment.
Workflows
/v1/workflows
GETList automation workflows, filterable by status.
Workflows
/v1/workflows/{workflow_id}/subscribers
POSTPush a subscriber into a workflow, triggering its sequence. The closest thing to a send call.
Workflows
/v1/workflows/{workflow_id}/subscribers/{id_or_email}
DELETERemove a subscriber from a running workflow.
Custom fields
/v1/custom-fields
GET, POSTList custom fields (paginated) or define one. /all returns the non-paginated set.
Webhooks
/v1/webhooks
GET, POST, PUT, DELETEFull CRUD on webhook subscriptions; /{id} for read, update, delete.

Code examples

Verify credentials with curl

The fastest way to confirm a key works. Remember the trailing colon: the password half of the Basic credential is deliberately empty.

# Basic auth: API key as username, empty password.
curl -sS "https://api.flodesk.com/v1/segments?per_page=5" \
  -H "Authorization: Basic $(printf '%s:' "$FLODESK_API_KEY" | base64)" \
  -D - -o /dev/null

# 200 plus X-Fd-RateLimit-Limit: 100 and X-Fd-RateLimit-Remaining: 99.
# A 401 almost always means the colon after the key was omitted, or the
# account is on trial/free where API keys do not exist.

Python: upsert, segment, paginate

import requests
from requests.auth import HTTPBasicAuth

API_KEY = "your_flodesk_api_key"
BASE = "https://api.flodesk.com/v1"

# API key is the Basic-auth username; the password is an empty string.
auth = HTTPBasicAuth(API_KEY, "")

# 1. Create or update a subscriber (upsert on email)
r = requests.post(
    f"{BASE}/subscribers",
    auth=auth,
    json={"email": "reader@example.com", "first_name": "Alaa",
          "custom_fields": {"source": "smtpedia"}},
    timeout=30,
)
r.raise_for_status()
print(r.json()["id"])

# 2. Add them to a segment so your automation can pick them up
requests.post(
    f"{BASE}/subscribers/reader@example.com/segments",
    auth=auth,
    json={"segment_ids": ["YOUR_SEGMENT_ID"]},
    timeout=30,
).raise_for_status()

# 3. Page through subscribers (per_page max is 100)
page = 1
while True:
    resp = requests.get(f"{BASE}/subscribers", auth=auth,
                        params={"page": page, "per_page": 100}, timeout=30)
    if resp.status_code == 429:  # watch X-Fd-RateLimit-Remaining
        break
    resp.raise_for_status()
    rows = resp.json()["data"]
    if not rows:
        break
    for row in rows:
        print(row["email"])
    page += 1

# There is no endpoint to send an arbitrary email. To make Flodesk send,
# push the subscriber into a workflow built in the UI:
# POST /v1/workflows/{workflow_id}/subscribers

Node.js: batch upsert and workflow entry

// Node 18+ (built-in fetch). No official Flodesk SDK exists.
const BASE = "https://api.flodesk.com/v1";
const authHeader =
  "Basic " + Buffer.from(`${process.env.FLODESK_API_KEY}:`).toString("base64");

async function flodesk(path, options = {}) {
  const res = await fetch(`${BASE}${path}`, {
    ...options,
    headers: { Authorization: authHeader, "Content-Type": "application/json" },
  });
  if (res.status === 429)
    throw new Error(
      `Rate limited. Remaining=${res.headers.get("X-Fd-RateLimit-Remaining")}`
    );
  if (!res.ok) throw new Error(`Flodesk ${res.status}: ${await res.text()}`);
  return res.status === 204 ? null : res.json();
}

// 1. Batch upsert: up to 50 per call, 20 calls/min
await flodesk("/subscribers/batch", {
  method: "POST",
  body: JSON.stringify({
    subscribers: [
      { email: "a@example.com", first_name: "A" },
      { email: "b@example.com", first_name: "B" },
    ],
  }),
});

// 2. Trigger sending by entering a subscriber into a workflow
await flodesk(`/workflows/${process.env.FLODESK_WORKFLOW_ID}/subscribers`, {
  method: "POST",
  body: JSON.stringify({ subscriber_ids: ["SUBSCRIBER_ID"] }),
});

// There is no /messages or /send endpoint. Flodesk has no transactional API.

Common gotchas

There is no send endpoint, the API manages people, not messages

Developers routinely arrive expecting POST /messages, and there is none. The documented surface covers subscribers, segments, workflows, custom fields and webhooks only. To deliver an email programmatically you upsert the subscriber, then push them into a segment or a workflow via POST /v1/workflows/{workflow_id}/subscribers; the automation does the sending. Anything genuinely transactional, receipts, password resets, WP Mail SMTP, goes to a different provider on the same domain.

Two rate limits, and the batch one is what catches migrations

The headline figure is 100 requests per minute, but POST /v1/subscribers/batch sits in its own bucket throttled to 20 per minute. At 50 subscribers per call, the real import ceiling is 1,000 per minute. Sizing a migration off the 100/min number underestimates runtime by a factor of five. Treat 429 as a planning failure, not a control-flow signal.

OAuth2 has one scope and single-use refresh tokens

The only scope is all, granting full access to the connected account, so least-privilege must be enforced inside your application rather than at the grant. Refresh tokens are single-use: each refresh returns a new one and invalidates the previous, so an implementation that persists the original and replays it succeeds once, then fails permanently. Store the rotated token atomically with the access token.

The MCP server reports, it does not act

The first-party MCP server is genuinely official and useful, but its tool surface is read-oriented: analytics, subscriber queries, segmentation, form and checkout performance, workflow results. Full account management through AI is planned, not shipped. If you need an agent that creates and sends campaigns, use the Zapier MCP wrapper, which inherits Zapier’s action list rather than the full API.

Deprecations and changelog

Flodesk maintains no public changelog or release-notes feed for the API; developers.flodesk.com/changelog returns 403. The timeline below is reconstructed from Flodesk’s product blog and capability pages. Where the vendor states only a month, the entry is dated to the first of it.

  • August 19, 2026-2026 plan structure confirmed: Free $0, Lite $19/mo annual, Pro $25/mo annual, Everything $49/mo annual at up to 1,000 subscribers. All integrations, MCP and API access included on every paid plan at no extra cost.
  • January 2026-Native MCP server launched at https://mcp.flodesk.com/mcp, Flodesk positioning itself as one of the first email marketing platforms with one. Supports Claude, ChatGPT, Gemini and any MCP-compatible client.
  • January 2026-Developer API rebuilt and relaunched at https://api.flodesk.com/v1, covering subscribers, segments, workflows, custom fields and webhooks, with API-key Basic auth for private integrations and OAuth2 for partners. Supersedes the earlier, effectively unavailable surface.
  • August 26, 2025-Major platform release: ecommerce workflow triggers with 9 templates, subscription billing in Checkout via Stripe, team seats for up to 3 teammates, the Canva integration, and native integrations for ManyChat, HoneyBook, ThriveCart, Wix and Squarespace.

No API deprecations have been announced. The surface is path-versioned at /v1 and was rebuilt recently, so a breaking change should arrive as /v2 rather than in place, but with no changelog feed to subscribe to, monitor developers.flodesk.com directly and keep contract tests in CI.

Frequently asked questions

Does Flodesk have a public API in 2026?

Yes. The developer API was rebuilt and relaunched in January 2026 and is served at https://api.flodesk.com/v1, documented at developers.flodesk.com. It is generally available on every paid plan, not waitlisted, not partner-gated, and covers subscribers, segments, workflows, custom fields and webhooks across 24 resource-and-method pairs. Older guidance saying Flodesk has no usable API is out of date.

How do I get a Flodesk API key, and which plans include it?

Create it in your Flodesk account settings. API keys are available to paid members only-trial and free accounts cannot generate one, so you cannot prototype against a free workspace. The key is shown exactly once with no way to retrieve it later. In requests it goes in the username position of an HTTP Basic credential with an empty password: base64("YOUR_API_KEY:"). The trailing colon is required.

What is the Flodesk API rate limit?

100 requests per minute across all endpoints. Separately, POST /v1/subscribers/batch is limited to 20 requests per minute at 50 subscribers per call, an effective import ceiling of 1,000 subscribers per minute. Every response carries X-Fd-RateLimit-Limit and X-Fd-RateLimit-Remaining; exceeding the limit returns HTTP 429. Size migrations off the batch number, not the headline.

Can I send an email through the Flodesk API?

Not directly. There is no send endpoint, no /messages resource and no transactional API. The route is indirect: upsert the subscriber with POST /v1/subscribers, then place them into a segment or push them into an automation with POST /v1/workflows/{workflow_id}/subscribers, and the workflow you built in Flodesk does the sending. For receipts, password resets and app notifications use a separate provider such as Postmark or Amazon SES.

Does Flodesk have an official Node.js or Python SDK?

No. Flodesk publishes no first-party client library in any language and no public SDK repositories; the docs use curl examples only. This is a confirmed absence, not a research gap. Because auth is plain HTTP Basic and payloads are flat JSON, a functional client is short in any language, see the examples above. If a maintained official SDK is a hard requirement, MailerLite and Mailchimp both ship them.

Does Flodesk have an MCP server for Claude or ChatGPT?

Yes, a first-party one-unusual for a design-first marketing ESP. The remote endpoint is https://mcp.flodesk.com/mcp; copy the per-account connector URL from app.flodesk.com/account/integrations/mcp, paste it into your AI client’s connector settings and authorize with a Flodesk login rather than an API key. It works with Claude, ChatGPT, Gemini and any MCP-compatible client, at no extra cost for members. The tool surface is read-oriented; write-heavy agent workflows are better served by the Zapier MCP wrapper.

Changelog (recent)

  • 2026-08-19 2026 plan structure confirmed: Free $0, Lite $19/mo annual, Pro $25/mo annual and Everything $49/mo annual at up to 1,000 subscribers. All integrations, MCP and API access included on every paid plan at no extra cost.
  • 2026-01-01 Native MCP server launched at https://mcp.flodesk.com/mcp, with Flodesk positioning itself as one of the first email marketing platforms with a native MCP server. Exact day not published.
  • 2026-01-01 Developer API rebuilt and relaunched at https://api.flodesk.com/v1, covering subscribers, segments, workflows, custom fields and webhooks, with API-key Basic auth for private integrations and OAuth2 for partners. Exact day not published.
AAlaa Touil RRabeb How we test →

This review follows our email infrastructure testing methodology. We disclose affiliate relationships in our editorial independence policy.