Live Direct Marketing Campaigns API
The Campaigns API from Live Direct Marketing — 38 operation(s) for campaigns.
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.
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.
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.
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}.
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}.
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.
GET
/api/campaigns/{id}/recipients/{recipientId}/attachment-link
Refresh a recipient's personal PDF link · Refresh a signed link to a recipient personal PDF without regeneration.
#
Ask an LLM
“Can I get a fresh signed link to a recipient's personal PDF without regenerating it?”
“When does a recipient's PDF attachment link expire?”
Tell an agent
Refresh the PDF attachment link for recipient {recipientId} in campaign {id}.
Get a new signed attachment link for recipient {recipientId} on campaign {id}.
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}.
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}.
Documentation
📖
Documentation
https://developers.live-direct-marketing.online/
📖
APIReference
https://developers.live-direct-marketing.online/api-reference
📖
GettingStarted
https://developers.live-direct-marketing.online/quickstart
📖
Authentication
https://developers.live-direct-marketing.online/authentication
📖
Documentation
https://check.live-direct-marketing.online/docs
📖
APIReference
https://check.live-direct-marketing.online/api/docs