Duplicate a campaign
Copy a campaign into a new draft with its own name, subject and recipients.
MCP tool privy_write → duplicate_campaign
write
Does the same as Duplicate in the Campaigns menu, then sets the To field, the subject and the name. The copy keeps the original design and stays a draft, so nothing is sent. It reaches no one and a draft can be deleted from the Campaigns menu, so it does not wait for your OK. The body is not edited; change it in the Privy editor.
Parameters
| Name | Type | Description |
|---|---|---|
| campaign_id string required | string | Campaign to copy (id from list_campaigns) |
| name string | string | Name of the copy |
| subject_line string | string | New subject line |
| segment_ids array | array | Segments to send to, replacing the original audience |
| exclude_segment_ids array | array | Segments to leave out |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "privy_write",
"arguments": {
"operation": "duplicate_campaign",
"arguments": {
"campaign_id": "cmp_41c8",
"name": "October sale resend",
"subject_line": "In case you missed it: our October sale",
"segment_ids": [
"seg_7d20"
]
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"campaign_id": "cmp_5b92",
"title": "October sale resend",
"status": "draft",
"copied_from": "cmp_41c8",
"subject_line": "In case you missed it: our October sale",
"audience": {
"included_segments": [
"Did not open October sale"
],
"excluded_segments": []
}
},
"isError": false
}