Reference
API Changelog
Changes to the public Warmerly API (/api/v1/*), most recent first. This tracks the
API and these docs — for product feature announcements, see the in-app changelog at
app.warmerly.com.
2026-09-28
- Fixed
PUT /campaigns/{id}/stepsrejecting the documented request body. The endpoint had moved to an internal graph format and answered400 invalid_bodyto the{ "steps": [...] }list shown in Campaigns, so no sequence could be written through the API. The documented list is accepted again;waitentries are folded into the next step's delay. - Changed
GETandPUT /campaigns/{id}/stepsnow returnsteps, the sequence in send order, as documented, alongside the graph fields the dashboard uses. - Added the documentation for language models: /llms.txt
(an index of every page), /llms-full.txt (the
whole documentation and API reference as one Markdown file) and a Markdown version of every
page at
<page>.md(for example /campaigns.md). See Use with AI.
2026-09-12
Documentation pass against the live API: every documented endpoint was called with a real API key and checked, rather than re-read.
- Corrected Suppression.
GET /suppression(including?format=csv) andDELETE /suppressionwere documented as customer endpoints but are staff-only and return404for any customer key, Agency included. The page now documentsPOST(the one endpoint you can call) and says where removal requests go. - Removed
GET/POST /inbox/templatesandPATCH/DELETE /inbox/templates/{id}from Inbox. Those routes do not exist and never did. - Corrected the quota-reset claim in Errors & rate limits: monthly allowances reset on the 1st of the month, not on your subscription's renewal date.
- Documented Usage & limits:
GET /usage/quotasreturns every monthly allowance in one call, andGET /billing/me?limits=1returns plan capacity. The first is promoted from internal dashboard plumbing to supported API. - Documented many endpoints that were live but absent from this reference:
- Accounts: bulk connect, provider detection, connection testing, DNS checks, placement tests, blocklist status, per-mailbox stats/events/warmup log, warmup toggle, send test, OAuth reconnect, channel limits.
- Campaigns: readiness, message preview, duplicate, cross-campaign lead list, per-lead email history, enrichment retry, lead research.
- Warmup: worker health, and mailbox health alerts (
GET /alerts). - Leads: exact match counts (
GET /leads/count) and LinkedIn people search. - Verify: send tests, the deliverability-grade check for catch-all domains.
- Workspaces & Projects: project stats, workspace activation, logo, invite revocation.
- Documented
X-Workspace-Idand the three request scopes (account, workspace, project) in Authentication. Workspace-scoped calls previously looked project-scoped, so a key serving several workspaces could silently read the wrong one. - Added an all-DNS-records checklist covering MX, SPF, DKIM, DMARC and the tracking CNAME together, plus what Warmerly's own check does and does not look at.
- Fixed in-page anchor links across these docs. Headings carried no
id, so every#sectionlink silently landed at the top of the page. - No API behaviour changed in this entry.
2026-08-19
- Documented the Leads, Suppression, and Webhooks endpoints for the first time. These were live in the API but previously undocumented.
- Added this changelog and a shared Errors & Rate Limits reference page, consolidating error-shape and rate-limit details that were previously scattered across (or missing from) individual endpoint pages.
- Added an explicit statement of which routes are deliberately excluded from these docs, see What's not documented here on the overview page.
- No API behavior changed as part of this entry. This was a documentation-only pass (tracked as Octelis/warmerly#61).
Deprecation policy
Warmerly is a small, actively developed API, so this policy is intentionally simple:
- Breaking changes (removing a field, changing a field's type or meaning, changing required parameters) ship as a new endpoint or a new path rather than mutating an existing one in place. Existing integrations keep working unchanged.
- Deprecated endpoints get a minimum of 90 days' notice before removal, announced here in this changelog, before they stop working. Deprecated endpoints continue to function normally during the notice period.
- Additive changes (new optional fields, new endpoints, new optional query parameters) are not considered breaking and may ship without advance notice, always code defensively against unknown extra fields in a JSON response.
- Security fixes (e.g. tightening an input validator that was incorrectly permissive) are exempt from the notice period when a delay would leave a real vulnerability open.
Summarize with AI

