
Sendloop still advertises a “full-featured API and webhooks”, but the API you would build against is v3, announced on September 28, 2011, and no v4 has ever followed. All three official client libraries are PHP, all have been renamed “legacy” by Octeth, and the newest release among them shipped on April 1, 2015. There is no official MCP server, no public endpoint catalogue, no OpenAPI spec and no published rate limits, and the documentation URL Sendloop’s own SDK points to returns HTTP 404.
Integrating in 2026 is therefore a reverse-engineering exercise supported by one attested command name and three third-party agent wrappers. This page records what first-party sources verify and marks the rest unpublished. For a documented API with maintained SDKs, compare EmailOctopus, MailerLite, Sender and Moosend.
Model Context Protocol is how an AI agent discovers and calls a vendor’s tools without bespoke glue. By 2026 most active ESPs ship a first-party MCP server. Sendloop ships none, so the question is not whether an agent can reach it, it can, through resellers, but how much those resellers expose.
Octeth publishes no first-party MCP endpoint for Sendloop and has announced no plan to build one. Every agent path is third-party and read-mostly: 5 read-only tools via Composio, or 4 triggers and 2 subscriber actions via the official Zapier app. None can compose or dispatch a campaign or a transactional message, agents read Sendloop and manage list membership, nothing more.
All three are third-party, not Octeth, and each needs your own Sendloop API3 key. None is a managed app, so credential handling is yours.
Exposes Sendloop over MCP as 5 read-only tools: account info, overall list report, campaigns, lists, subscribers. Toolkit version 20260721_00.
The official Zapier app is agent-reachable via Zapier’s MCP layer: 4 triggers (subscriber, unsubscriber, open, hard bounce) and 2 actions. The most complete path, still only subscriber CRUD.
Workflow platform listing Sendloop as a connectable app. Usable as an agent surface if you write the HTTP steps yourself; no curated tool list.
An MCP surface is now a proxy for whether a vendor still invests in its API. Sendloop’s absence matches the rest of its developer story: last SDK release 2015, last blog post May 26, 2023, documentation portal unreachable. If your 2026 roadmap includes agents that draft or send campaigns, Sendloop cannot participate. Agent-driven reporting and list hygiene work today; sending does not.
API v3 is RPC-style, not REST: you POST a form-encoded payload carrying a Command in Resource.Action form, an API key and a response format, and receive JSON back. There are no verbs beyond POST, and status semantics live in the body, not the status line.
| API version | v3, announced September 28, 2011 CURRENT |
| Style | RPC over HTTP POST, dotted command names (List.GetList) |
| Base URL | Not published. Account-scoped under your own Sendloop subdomain |
| Response format | JSON, selectable at call time; XML is the historical alternative |
| Authentication | API key (API3 key) plus account subdomain |
| Key location | App Settings › API Settings |
| Request timeout | Not published |
| Pagination | Not published |
| Rate limits | Not published in any official material |
| OpenAPI spec | None |
| Public reference | None. The SDK’s docs link returns HTTP 404 |
| Webhooks | Pro-plan ($39/mo) feature; no payload schema published |
The account-scoped design matters more than it looks. Because the PHP SDK takes your subdomain as a separate argument, the request host differs per customer and no single base URL exists to publish. You cannot copy a working call from another account, nor lift one from documentation. Treat the endpoint as configuration from your own account or a support ticket.
Sendloop authenticates with a per-account key its SDK labels the API3 key, generated at Settings › API Settings. It travels in the request payload, not an Authorization header, consistent with the API’s 2011 design. So the key lands in POST bodies, and there is no documented rotation, scoping or expiry. Treat it as a full-privilege account credential. The account subdomain is a second required argument, the wrapper takes it as its second constructor parameter, and a mismatch surfaces as an authentication error rather than a routing error, which is hard to debug with no documentation.
Composio’s toolkit lists both OAuth2 and API-key schemes. Sendloop publishes no OAuth documentation, no authorization URL, token endpoint, scope list or client registration. Only the API-key path is attestable, so build against that and treat any OAuth affordance in a third-party console as undocumented behaviour.
With no key-scoping documentation, assume one API3 key grants full account access: read subscribers, mutate lists, read reports. Handing a key to an agent platform such as Composio hands over the whole account, the toolkit’s tools are read-only, the credential is not. For customer-facing work, front the API with your own proxy.
Sendloop publishes no rate limit of any kind. Every row below reads unpublished because no official page carries a figure and the help portal that would have held them is offline. These cells are empty by choice, not estimated.
| Limit | Documented value | Notes |
|---|---|---|
| API requests per minute | Not published | No throttling policy, 429 semantics or retry guidance in any official source. |
| Emails per hour | Not published | Plans meter subscribers stored, not send rate. |
| Recipients per message | Not published | No per-message recipient cap is stated anywhere. |
| Concurrent connections | Not published | Moot, there is no SMTP relay to hold connections against. |
| Maximum message size | Not published | No MB ceiling stated for campaign or transactional payloads. |
| Plan metering | Subscribers stored | Pro $39/mo covers 500–45,000; High Volume $235/mo covers 50,000–500,000. |
| Free-plan sending | $0.01 per email | The $0 tier explicitly includes “no email delivery”. |
The workaround is empirical: instrument the client, start conservative, back off on anything that is not a clean success. Sane defaults for an undocumented 2011-era API are 1 request per second with exponential backoff and full jitter, a client-side timeout of 30 seconds, and a circuit breaker after 5 consecutive failures. Log every non-success body verbatim, with no error catalogue, your logs are the reference.
Sendloop has shipped exactly three official client libraries and every one is PHP. All three repositories were renamed by Octeth to carry the word “legacy”, with last commits between 2013 and 2017. There is no official Python, Node.js, Ruby, Go, Java or .NET client.
| Language | Package | Install | Repo |
|---|---|---|---|
| PHP | sendloop/sendloop v3.0.0 | composer require "sendloop/sendloop" | sendloop-legacy-php-api-wrapper |
| PHP | Sendloop MTA PHP SDK | composer require sendloop/mta-api-php | sendloop-legacy-mta-api-php |
| Multiple (legacy) | Engage libraries | Not published | sendloop-legacy-engage_libraries |
The first is the general v3 wrapper: Packagist shows v3.0.0 dated April 1, 2015, roughly 6,830 installs, 1 dependent and a “not auto-updated” flag. The second is the MTA transactional client; despite the name it is an HTTP wrapper, not an SMTP client, with no relay credentials, last commit November 16, 2017. The third is a 2013 grab-bag with no install path.
The wrapper’s README sends you to sendloop.com/help/api-001/getting-started for the endpoint reference. That URL returns HTTP 404, and the help portal that hosted it resolves only to 100::, the RFC 6666 discard-only block. Adopting the SDK means vendoring it: no security fixes, no testing against modern PHP, no maintainer on the tracker.
There are none worth naming. Unlike EmailOctopus or MailerLite, Sendloop’s API has produced no maintained third-party client on npm, PyPI or RubyGems. What exists is platform-level coverage: Composio wraps 5 read operations as agent tools, and the official Zapier app handles subscriber CRUD without code. For most teams that beats writing a client against an undocumented API.
The caveat first: only one Sendloop command name is attested verbatim in official material, List.GetList, the worked example in the PHP SDK README. Every other row describes a capability a first-party surface demonstrably performs, the MTA SDK, the official Zapier app, Composio’s toolkit, but whose command string Sendloop has never published. Those paths read “unpublished” on purpose; they are not callable strings.
The nearest official reference is the SDK repository; the documentation URL it cites returns HTTP 404.
| Resource | Method | Description |
|---|---|---|
| Lists List.GetList | POST | The only command attested verbatim in official material. Confirms the RPC shape: dotted names, not REST paths. |
| Account unpublished | POST | Account-level details for the authenticated key. Composio tool. |
| Lists unpublished | POST | Enumerates subscriber lists. Composio tool. |
| Subscribers unpublished | POST | Enumerates subscribers within a list. Composio tool. |
| Campaigns unpublished | POST | Enumerates campaigns. Read-only everywhere it is exposed. |
| Reports unpublished | POST | Aggregate performance statistics for a list. Composio tool. |
| Subscribers: add unpublished | POST | Adds a subscriber to a list. Zapier action. |
| Subscribers: remove unpublished | POST | Unsubscribes an address from a list. Zapier action. |
| Events: subscribes unpublished | Webhook | Fires when a subscriber joins. Zapier trigger; no payload schema published. |
| Events: unsubscribes unpublished | Webhook | Fires when a subscriber unsubscribes. Zapier trigger. |
| Events: opens unpublished | Webhook | Fires when a subscriber opens an email. Zapier trigger. |
| Events: bounces unpublished | Webhook | Fires when a subscriber’s status becomes hard bounce. Zapier trigger. |
| Transactional send Mailer::send() | POST | Sends one transactional message via the MTA HTTP API, returning a status ID. Attested only by the 2017 SDK. |
| Transactional status Mailer::status() | POST | Delivery status for a sent message, keyed on the ID from the send call. |
Read that as a capability inventory, not a call reference. Turning any of it into working code means the legacy PHP SDK or a support ticket.
The single published Sendloop code sample in existence. Note the three constructor arguments: key, subdomain, response format.
// Verbatim from the official SDK README
// (github.com/octeth/sendloop-legacy-php-api-wrapper):
$sendloop = new Sendloop\SendloopAPI3('YOUR_API3_KEY', 'SENDLOOP_SUBDOMAIN', 'json');
$sendloop->run('List.GetList', array());
print_r($sendloop->Result);No official Python or Node SDK exists, so this is a minimal RPC helper. The endpoint comes from the environment because no public base URL exists.
# No official Python SDK and no public API reference exist.
# Attested shape: API v3, RPC-style with dotted command names such as
# "List.GetList", an "API3 key" from Settings > API Settings, scoped
# to your account subdomain. The request PATH is not published.
import os
import requests
API_KEY = os.environ["SENDLOOP_API_KEY"] # from Settings > API Settings
ENDPOINT = os.environ["SENDLOOP_API_ENDPOINT"] # account-specific, undocumented
def sendloop(command, **params):
"""Call an API v3 RPC command, e.g. sendloop('List.GetList')."""
payload = {"Command": command, "APIKey": API_KEY,
"ResponseFormat": "json", **params}
response = requests.post(ENDPOINT, data=payload, timeout=30)
response.raise_for_status()
return response.json()
print(sendloop("List.GetList"))A separate abandoned package. An HTTP wrapper, not an SMTP client; it supports merge variables, custom arguments and tracking flags for opens, clicks, eCommerce and tags.
// Sendloop MTA PHP SDK, last commit 2017-11-16.
// HTTP API client, NOT an SMTP client.
$mailer = new \Sendloop\MTA\Mailer("YOUR-API-KEY-HERE");
$message = new \Sendloop\MTA\Message();
$message->setFrom("sender@example.com", "Example Sender");
$message->setSubject("Your receipt");
$messageStatusID = $mailer->send("test@recipient.com", $message);
$status = $mailer->status($messageStatusID);The homepage still promises a “full-featured API and webhooks”, but v3 was announced on September 28, 2011 and no v4 followed. The official SDK shipped v3.0.0 on April 1, 2015 and has not been touched since; the repository is now sendloop-legacy-php-api-wrapper. No OpenAPI spec, no endpoint catalogue, no rate-limit documentation. Building against it in 2026 means reverse-engineering or Composio’s 5 read-only wrappers.
Every help.sendloop.com/docs/... link still indexed by search engines is unreachable: the subdomain resolves only to 100::, the RFC 6666 discard-only block, routed nowhere. Sendloop’s own help-portal page sends users to a personal Notion workspace that renders blank. There is no working product documentation; budget for support tickets.
Sendloop advertised “SMTP access” to its Transaction Email Gateway in a December 9, 2016 blog post, and Zapier still files the app under “Transactional Email”. No current pricing, feature or integration page mentions SMTP. smtp.sendloop.com does resolve, to 95.216.107.99, the same address as the app, api, gateway and status hostnames, because *.sendloop.com is a wildcard pointing at the web load balancer. Postfix or a WordPress SMTP plugin will not work against it. For a documented relay, use Brevo, Mailjet, Postmark or Amazon SES.
All three MCP-reachable surfaces are read-mostly: Composio exposes 5 read-only tools, Zapier 4 triggers and 2 actions, Pipedream nothing curated. If your design assumes an agent can dispatch a campaign or fire a transactional message, that exists on no Sendloop surface in 2026-you would call the undocumented API yourself, via the 2017 MTA SDK.
The $0/mo tier lists the bullet “no email delivery”, and sending is billed at $0.01 per email. It is a free account, not a free send allowance. Prototyping, you can read and mutate lists but hit billing the moment you send, a 10,000-recipient test costs $100, against $39/mo for Pro covering 45,000 stored subscribers. Domain authentication also requires Pro, so DKIM-signed test sends are impossible on the free tier.
Sendloop maintains no changelog and no release-notes page. There is no /changelog path in its sitemap and no status page-status.sendloop.com resolves through the same wildcard and serves the login screen. The timeline below is reconstructed from dated blog posts, Packagist metadata and GitHub timestamps. Every entry predates 2024.
sendloop/sendloop v3.0.0, on Packagist (about 6,830 installs). Nothing has followed.sendloop-legacy-mta-api-php.With no vendor changelog, the closest thing to a release feed is the Octeth GitHub organisation. Watch it for the pattern: every actively-updated repository there belongs to the self-hosted Octeth Email Platform, not to Sendloop.
API v3, announced on the official blog on September 28, 2011 by co-founder Cem Hurturk. No v4 has ever been announced, so v3 is both the current and the only version fifteen years later. The credential is labelled the API3 key inside the app, which is why that string appears in the SDK.
There is none that works. The URL Sendloop’s SDK README points to, sendloop.com/help/api-001/getting-started, returns HTTP 404, and the help portal that hosted the endpoint catalogue resolves only to the IPv6 discard address 100::. Its replacement is an empty Notion page and the sitemap has no /api or /docs path. The only surviving official reference is the legacy PHP wrapper repository.
In the Sendloop app, open Settings › API Settings. That page issues the per-account API3 key used by the official SDK and every third-party wrapper. You also need your account subdomain. Sendloop publishes no scoping, rotation or expiry documentation, so treat the key as a full-privilege credential.
No. Every official SDK is PHP and all three are abandoned, the general wrapper last released April 1, 2015, the MTA client last committed November 16, 2017, the Engage libraries in 2013. No maintained community client exists on npm, PyPI or RubyGems. For Python or Node, write the HTTP calls yourself or route through Zapier or Pipedream.
Not an official one. Octeth publishes no first-party MCP endpoint for Sendloop. Three third-party paths exist: Composio exposes 5 read-only tools, the official Zapier app is reachable through Zapier’s MCP layer with 4 triggers and 2 actions, and Pipedream lists Sendloop as a connectable app. None can send an email, agents read list and campaign data and add or remove subscribers, and that is the whole surface.
Not published. No official page states a requests-per-minute limit, an emails-per-hour cap, a recipients-per-message ceiling or a maximum message size, and the help portal that would have carried them is offline. Sendloop’s plans meter subscribers stored, not send rate: Pro at $39/mo covers 500 to 45,000 subscribers, High Volume at $235/mo covers 50,000 to 500,000. Build defensively, one request per second, exponential backoff with jitter, and treat your logs as the error reference.
This review follows our email infrastructure testing methodology. We disclose affiliate relationships in our editorial independence policy.