Actions

Call the updateDraftCampaign MCP tool

Edit a DRAFT campaign: rename, change description, swap the lead list, replace sender accounts, adjust the InMail free/paid policy, and rewrite message copy. Rewritten copy follows getPlaybook("copywriting"). LEAD-MAGNET drafts take name, description, sender_account_ids, delivery_message, comment_reply, followups, document_id, keyword, post_id (rebind or unlink the hook), and replace_existing (read the current copy back with getCampaignSequence first); their outreach copy fields and custom_sequence are refused. DRAFTS ONLY: active or paused campaigns must be edited in /campaigns. Copy edits work on standard sequences (one connection request, up to two messages, one InMail step); more complex or A/B-variant sequences are refused with a pointer to the UI editor. To restructure the sequence itself (step order, warm-up steps, A/B copy, InMail follow-ups), pass custom_sequence: it recompiles and replaces the whole sequence.

Called through the Actions bridge: the response is that tool's own result, wrapped as { data: <tool result> } under HTTP 200. Billing, daily-cap, and confirm-step outcomes are embedded INSIDE data, never remapped to an HTTP status (see the templated /api/v1/actions/{toolName} operation above for the full protocol, and x-mcp-actions for this tool's machine-readable scope/cap/confirm_behavior fields). Authentication, request-shape, and optional idempotency-protocol failures still use their documented non-200 statuses.

post/api/v1/actions/updateDraftCampaign

Request

  • Base URL: https://app.reachium.io
  • URL: https://app.reachium.io/api/v1/actions/updateDraftCampaign
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Optional caller-generated key (8-200 characters: letters, digits, dot, underscore, colon, or hyphen). A final tool result is replayed for the same key and body. An ambiguous result remains 409 under that key; reconcile external state before using a new key. Reuse with a different body returns 422.

Request body

campaign_idstring uuid required

The DRAFT campaign to edit (from getCampaigns).

namestring

New name; the " (Rio)" attribution suffix is appended automatically. Lead with WHAT it is - the offer, audience or goal - then any context, e.g. "10 DM Templates - Gabriel Palacios - SYSTEM". Never include "draft".

descriptionstring

New one-line description for the campaign card.

connection_notestring

New connection note; empty string removes it.

first_messagestring

New first message: sent after connection acceptance for outreach campaigns, or IS the drip message itself for retargeting/re_engagement campaigns (which have no connection step).

followup_messagestring

New follow-up; only works if the sequence already has a follow-up step.

inmail_subjectstring

New InMail subject; only works if the sequence has an InMail step.

inmail_messagestring

New InMail body; only works if the sequence has an InMail step.

lead_list_idstring uuid

Swap the attached lead list (from getLeadLists).

sender_account_idsstring[]

Replaces the sender set (getCampaignSenderAccounts). Empty array detaches all.

delivery_messagestring

LEAD-MAGNET drafts: the private delivery DM, stored verbatim on both branch nodes. Must contain {{document_link}} while a document is attached; use {{first_name}}.

comment_replystring

LEAD-MAGNET drafts: the public comment reply, stored verbatim on every reply node. No links.

document_idstring uuid nullable

LEAD-MAGNET drafts: swap the delivered document (from getDocuments), or null to detach it (the delivery message must then drop {{document_link}}).

keywordstring

LEAD-MAGNET drafts: change the trigger keyword. Warns when the hook post body does not contain it or another campaign already uses it.

post_idstring uuid nullable

LEAD-MAGNET drafts: bind this post as the hook (pending until it publishes; a published post is armed by URN right away), or null to unlink the pending hook. Refuses a post bound elsewhere unless replace_existing is true, refuses to move a hook off an ACTIVE campaign (pause it first), and refuses a post whose keyword the campaign does not watch (pass keyword in the same call to set both).

replace_existingboolean

With post_id: take the post even if it is the hook of another non-active campaign; that campaign is detached and both changes are logged.

Response

The result of calling this tool.

dataunknown required
errorunknown required

Changes

No recorded changes to this operation across all 1 revision of this API.