Live Direct Marketing Campaigns API

The Campaigns API from Live Direct Marketing — 38 operation(s) for campaigns.

Business capability
Demand Generation Management BC-400.40

Operations 41

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /api/campaigns/{id}/test-task Create a test send task for a campaign · Campaigns controller create test task #
Ask an LLM
“Can I send a test of a campaign to one intended recipient before launching it?”
“Is there a way to create a test-send task for a campaign with an idempotency key so retries don't duplicate it?”
Tell an agent
Create a test-send task for campaign {id} with idempotency key {key}.
Start a campaign test task on {id} addressed to intended recipient {recipient}, idempotency key {key}.
GET /api/campaigns/{id}/test-task/{taskId} Check a campaign test-send task · Campaigns controller get test task #
Ask an LLM
“What happened to the test send I queued for my campaign?”
“Can I look up a specific campaign test task by its task id?”
Tell an agent
Show test task {taskId} for campaign {id}.
Check whether test-send task {taskId} on campaign {id} has finished.
GET /api/campaigns/conveyor-health Check campaign conveyor health · Campaign conveyor health for this tenant (#347), read-only. #
Ask an LLM
“Which of my campaigns have due emails ready but aren't actually sending?”
“Is the campaign sending conveyor healthy for my tenant right now?”
Tell an agent
Show the campaign conveyor health report for my tenant.
List campaigns flagged as not sending despite having due READY emails.
GET /api/campaigns List campaigns · List campaigns #
Ask an LLM
“How do I see all my email campaigns page by page?”
“Can I list only the campaigns with a given status, like paused ones?”
Tell an agent
List my campaigns with status {status}, page {page}, {limit} per page.
Show page {page} of my campaigns.
POST /api/campaigns Create an email campaign · Create a campaign. #
Ask an LLM
“How do I set up a new outreach campaign?”
“Can I create a campaign where I render the emails myself instead of the platform's AI?”
Tell an agent
Create a new campaign named {name}.
Create campaign {name} in {renderMode} render mode using brief {briefId}.
POST /api/campaigns/backfill-historic-unsubscribes Backfill historic unsubscribes into campaigns · One-off backfill: mark campaign_recipients as UNSUBSCRIBED for addresses… #
Ask an LLM
“Can I mark campaign recipients as unsubscribed if their address is already on the suppression list?”
“Is there a dry run to preview which recipients a historic unsubscribe backfill would change?”
Tell an agent
Run the historic unsubscribe backfill across campaigns with dry run set to {dryRun}.
Preview which campaign recipients would be marked unsubscribed from past suppressions.
GET /api/campaigns/overview Get a campaigns overview for the dashboard · Campaigns overview for dashboard mailings widget #
Ask an LLM
“What does the mailings widget summary look like for my campaigns?”
“Can I get a dashboard overview of campaigns limited to certain statuses?”
Tell an agent
Give me the campaigns dashboard overview for statuses {statuses}.
Show the mailings widget overview of my active campaigns.
GET /api/campaigns/{id} Get a campaign · Get a campaign by id #
Ask an LLM
“How do I pull up the full settings of one campaign?”
“Can I fetch a single campaign by its id?”
Tell an agent
Get campaign {id}.
Show the configuration of campaign {id}.
PATCH /api/campaigns/{id} Update a campaign's settings · Update a campaign (creative pool, routing, status and campaign-owned… #
Ask an LLM
“How do I change the creative pool or routing on an existing campaign?”
“Can I edit just part of a campaign's send window without resetting the rest?”
Tell an agent
Rename campaign {id} to {name}.
Update the send window on campaign {id} to {sendWindow}.
DELETE /api/campaigns/{id} Delete a campaign · Delete a campaign (cascades recipients; ACTIVE must be paused first) #
Ask an LLM
“Can I permanently delete a campaign and its recipients?”
“Why can't I delete an active campaign without pausing it first?”
Tell an agent destructive · confirm first
Delete campaign {id}.
Remove campaign {id} along with all its recipients.
GET /api/campaigns/{id}/geo-risk Review a campaign's geo channel-policy risk · Geo channel-policy risk breakdown of recipients (read-only WARN report) #
Ask an LLM
“Which countries in my campaign's audience carry channel-policy risk?”
“Can I see a geographic risk breakdown of a campaign's recipients before sending?”
Tell an agent
Show the geo risk breakdown for campaign {id}.
Report recipient geo channel-policy warnings on campaign {id}.
GET /api/campaigns/{id}/metrics Get campaign performance metrics · Campaign metrics. #
Ask an LLM
“How many emails in my campaign were sent, delivered, opened and bounced?”
“How is the delivered count estimated for a campaign?”
Tell an agent
Show metrics for campaign {id}.
Give me delivery and engagement numbers for campaign {id}.
GET /api/campaigns/{id}/send-series Chart a campaign's sending speed over time · Sending speed time series. #
Ask an LLM
“Can I see how many emails a campaign sent per day or per week?”
“What timezone are campaign send-speed buckets counted in?”
Tell an agent
Chart daily sends for campaign {id} from {from} to {to} in timezone {tz}, bucketed by {bucket}.
Show the weekly send series for campaign {id} between {from} and {to}.
GET /api/campaigns/{id}/send-readiness Dry-run a campaign's send gates · Dry-run all send gates for a campaign: status, breaker, campaign-owned send… #
Ask an LLM
“Why isn't my campaign sending — which send gate is blocking it?”
“Can I check every send gate on a campaign without actually sending anything?”
Tell an agent
Dry-run all send gates for campaign {id}.
Check whether campaign {id} is ready to send right now.
GET /api/campaigns/{id}/operational-status See what a campaign is doing right now · Single source of truth for "what is happening with this campaign right now". #
Ask an LLM
“What is happening with my campaign at this moment — running, waiting or stuck?”
“Can I see a campaign's lifecycle status separately from its operational state?”
Tell an agent
Show the operational status of campaign {id}.
Tell me what campaign {id} is doing right now, {limit} items at a time.
GET /api/campaigns/{id}/task-history Page through a campaign's delivery-task history · Paginated durable delivery-task history for a campaign #
Ask an LLM
“Where can I see the durable delivery tasks a campaign has run?”
“Is there a paginated history of campaign delivery tasks?”
Tell an agent
List delivery-task history for campaign {id}.
Show the next page of delivery tasks for campaign {id} after cursor {cursor}.
GET /api/campaigns/{id}/hard-report Get a campaign quality snapshot · Deterministic read-only quality snapshot for a campaign (#1245, first slice… #
Ask an LLM
“Can I get a deterministic quality report on a campaign, including its auditor configuration?”
“What does the hard report show about a campaign's configured versus effective auditor?”
Tell an agent
Generate the hard quality report for campaign {id}.
Show the auditor configuration snapshot for campaign {id}.
GET /api/campaigns/{id}/activity Read a campaign's activity feed · Unified chronological event feed for a campaign: the full recipient lifecycle… #
Ask an LLM
“Can I see a chronological feed of everything that happened to a campaign's recipients?”
“Can I filter a campaign's event feed to one recipient or one stage?”
Tell an agent
Show the activity feed for campaign {id}.
Show campaign {id} events for recipient {recipientId} since {since}.
GET /api/campaigns/{id}/recipients List a campaign's recipients · List campaign recipients. #
Ask an LLM
“Which recipients in my campaign failed, and why?”
“Can I search a campaign's recipients by stage or failure reason?”
Tell an agent
List recipients of campaign {id} in stage {stage}.
Find recipients in campaign {id} matching {search}.
POST /api/campaigns/{id}/recipients/move-stage Move campaign recipients to a canvas stage · Move campaign recipients to a canvas stage (no send) #
Ask an LLM
“Can I move selected recipients to a different canvas stage without sending to them?”
“Is it possible to shift a batch of campaign recipients between canvas stages by filter?”
Tell an agent
Move recipients {recipientIds} in campaign {id} to canvas stage {toStage}.
Shift campaign {id} recipients matching {filter} to stage {toStage}.
POST /api/campaigns/{id}/recipients/rerender Re-render unsent campaign recipients · Reset unsent recipients back to SCREENED for a fresh re-render; force:true also… #
Ask an LLM
“Can I throw away generated emails for unsent recipients and render them again?”
“Does forcing a re-render give my recipients a new paid audit attempt?”
Tell an agent
Re-render unsent recipients in campaign {id}.
Reset recipients {recipientIds} in campaign {id} for a fresh render with force {force}.
POST /api/campaigns/{id}/recipients/repair-unsubscribe Repair missing unsubscribe blocks in rendered emails · Backfill missing unsubscribe block and reconcile bodyHash for already-rendered… #
Ask an LLM
“Some rendered emails are missing the unsubscribe block — can I fix them without paying for a re-render?”
“Can I recover recipients that failed on a body hash mismatch?”
Tell an agent
Repair the unsubscribe block for rendered recipients in campaign {id}.
Fix unsubscribe blocks for campaign {id} recipients in stages {stages}.
POST /api/campaigns/{id}/retry-ai-failures Retry AI rendering failures in a campaign · Retry unsent AI failures with the current tenant provider/model — reset=0 is an… #
Ask an LLM
“Can I retry recipients whose emails failed AI generation using my current AI model?”
“Why did retrying AI failures reset zero recipients?”
Tell an agent
Retry the AI render failures in campaign {id}.
Send campaign {id}'s CREATIVE_FAILED recipients back through AI generation.
POST /api/campaigns/{id}/reconcile-from-dialogs Reconcile campaign recipients from dialogs · One-time: reconcile campaign recipients from existing dialogs (migration) #
Ask an LLM
“Can I rebuild campaign recipient records from existing email dialogs as a one-time migration?”
“Is there a dry run before reconciling a campaign from its dialogs?”
Tell an agent
Reconcile campaign {id} from existing dialogs with dry run {dryRun} and link creatives {linkCreatives}.
Preview reconciling campaign {id} recipients from dialogs, dry run {dryRun}.
POST /api/campaigns/{id}/pour Add recipients to a campaign from a list · Pour recipients into a campaign. #
Ask an LLM
“How do I fill a campaign with recipients from one of my contact lists?”
“Can I pour a company list or all my contacts into a campaign?”
Tell an agent
Pour contact list {listId} into campaign {id}.
Pour company list {companyListId} into campaign {id}.
POST /api/campaigns/{id}/push Push contacts directly into a campaign · Push contacts directly into campaign (API-push, e.g. from form webhook) #
Ask an LLM
“Can a form webhook push new contacts straight into a running campaign?”
“Is there a way to add individual contact rows to a campaign without a list?”
Tell an agent
Push these contact rows {rows} into campaign {id}.
Add the submitted form contacts {rows} directly to campaign {id}.
POST /api/campaigns/{id}/pour-from-leads Add CRM leads to a campaign by filter · Pour recipients into a campaign from CRM leads by filter… #
Ask an LLM
“Can I add leads from a CRM pipeline stage into a campaign?”
“Do leads with only bounced email channels get poured into a campaign?”
Tell an agent
Pour leads from pipeline {pipelineId}, stage {stageId} into campaign {id}.
Add up to {limit} leads with interest status {interestStatus} to campaign {id}.
POST /api/campaigns/{id}/screen Screen new campaign recipients against suppressions · Screening of NEW recipients (suppression + stop-list): NEW→SCREENED|SKIPPED. #
Ask an LLM
“How are new campaign recipients checked against the suppression and stop lists?”
“What step comes between pouring recipients and preparing emails?”
Tell an agent
Screen the new recipients in campaign {id}.
Run suppression and stop-list screening on campaign {id}.
POST /api/campaigns/{id}/recipients/content Submit self-rendered email content · Submit self-rendered (BYOC) email content for SCREENED recipients… #
Ask an LLM
“If I write the emails myself, how do I submit the subject and body for each recipient?”
“How many self-rendered emails can I submit in one batch, and how large can the HTML be?”
Tell an agent
Submit these rendered emails {items} for campaign {id}.
Upload my own subject and HTML body per recipient {items} to campaign {id}.
PATCH /api/campaigns/{id}/recipients/{rid}/manual Manually edit a campaign recipient's email · Manual edit of a job by an operator: subject/body/scheduledAt/stage. #
Ask an LLM
“Can an operator hand-edit one recipient's subject, body or scheduled time?”
“Why do API keys get a human_only error when editing a recipient by hand?”
Tell an agent
Manually edit recipient {rid} in campaign {id}.
Change the scheduled time for recipient {rid} of campaign {id} by hand.
POST /api/campaigns/{id}/preparations Queue a background campaign preparation · Start or join a durable bounded preparation operation (no sending). #
Ask an LLM
“Can I prepare a campaign's emails as a background job instead of waiting synchronously?”
“Which preparation method is better for AI-generated emails with personal PDFs?”
Tell an agent
Queue a preparation run for campaign {id}.
Start a background preparation of up to {limit} recipients for campaign {id}.
GET /api/campaigns/{id}/preparations/{generationId} Check a campaign preparation job · Read a tenant-bound preparation operation. #
Ask an LLM
“Has my queued campaign preparation finished yet?”
“Why did a background preparation operation fail?”
Tell an agent
Check preparation {generationId} for campaign {id}.
Show the result of preparation job {generationId} on campaign {id}.
POST /api/campaigns/{id}/prepare Prepare and audit a batch of recipients now · Prepare and audit a bounded window of provider-eligible recipients. #
Ask an LLM
“Can I synchronously render and audit a batch of campaign recipients?”
“What does the limit on a campaign prepare call actually control?”
Tell an agent
Prepare and audit {limit} recipients in campaign {id} right now.
Synchronously prepare a batch of {limit} emails for campaign {id}.
POST /api/campaigns/{id}/dispatch Assign senders and schedule ready recipients · Assign sender account + schedule to READY recipients (no send yet). #
Ask an LLM
“How do I assign sender accounts and send times to recipients that are ready?”
“Can I override the schedule for specific recipients of a campaign?”
Tell an agent
Dispatch {limit} ready recipients in campaign {id}.
Assign senders and schedule up to {limit} READY recipients of campaign {id}.
POST /api/campaigns/{id}/send Send dispatched campaign emails · Hand dispatched READY recipients to the mail_outbox queue (limit=1 for first… #
Ask an LLM
“How do I actually send the emails that have been dispatched?”
“Can I hand dispatched recipients to the mail outbox for a first test send?”
Tell an agent
Send the dispatched emails for campaign {id}.
Hand campaign {id}'s dispatched READY recipients to the outbox.
POST /api/campaigns/{id}/sync-events Sync opens, clicks and bounces into a campaign · Sync open/click/bounce events from Dialog records back to recipients. #
Ask an LLM
“How do opens, clicks and bounces from email dialogs get back onto campaign recipients?”
“Does a hard bounce add the address to the global stop list?”
Tell an agent
Sync open, click and bounce events for campaign {id}.
Pull dialog engagement events back into campaign {id}.
POST /api/campaigns/{id}/restore-infra-failed Restore a paused campaign and recover AI failures · Resume a PAUSED campaign (reset circuit breaker) — also retries AI failures #
Ask an LLM
“Can I reset a tripped circuit breaker on a paused campaign?”
“Does restoring a paused campaign also retry its AI failures?”
Tell an agent
Restore campaign {id} by resetting its circuit breaker.
Dry-run restoring paused campaign {id}, dry run {dryRun}.
POST /api/campaigns/{id}/resume Resume a paused campaign · Campaigns controller resume #
Ask an LLM
“How do I resume sending on a campaign I paused?”
“Can I restart a paused campaign with a single call?”
Tell an agent
Resume campaign {id}.
Start sending again on paused campaign {id}.
POST /api/campaigns/{id}/pause Pause an active campaign · Pause an ACTIVE campaign (symmetric to /resume) #
Ask an LLM
“How do I stop an active campaign from sending?”
“Will a paused campaign resume on its own later?”
Tell an agent
Pause campaign {id}.
Pause campaign {id} with reason {reason}.
GET /api/campaigns/{id}/recipients/{rid} Get a campaign recipient and its event log · Get a recipient with its event log. #
Ask an LLM
“Can I see every send attempt and event for one campaign recipient?”
“What is the difference between a recipient's send attempts and retired sends?”
Tell an agent
Show recipient {rid} in campaign {id} with its event log.
Get the send attempt history for recipient {rid} of campaign {id}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/live-direct-marketing-online:live-direct-marketing-online-campaigns-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

live-direct-marketing-online-campaigns-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LDM v3 Campaigns API
  description: 'Multi-tenant B2B outreach automation platform. Auth: JWT Bearer (15-min) or tenant API key (ldm_*) managed in CRM Settings → API Keys. All tenant-scoped endpoints require the X-Tenant-Id header.'
  version: 1.0.0
  contact: {}
servers:
- url: https://api.live-direct-marketing.online
  description: Production
- url: https://api.dev.live-direct-marketing.online
  description: Development
- url: http://127.0.0.1:3000
  description: Local
tags:


# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/live-direct-marketing-online/refs/heads/main/openapi/live-direct-marketing-online-campaigns-api-openapi.yml