Configure a campaign
Change a campaign's settings and wiring: name, goal, priority, end date, daily targets, email pacing and auto-reply mode, and its audiences, templates and weighted senders by name. Each list you send replaces the current one; a sender named without a weight keeps its weight. A name that does not resolve is reported rather than silently dropped.
PATCH
https://app.trygtm.com/api/v1/campaigns/{campaign}- Scope
write- MCP tool
- configure_campaign
Path parameters
campaignstringrequired- The campaign, by id or exact name (case-insensitive).
Headers
Idempotency-Keystringoptional- A key unique to this write, up to 255 characters. A retry carrying the same key returns the first response instead of running again. Kept for 24 hours.
Body
audiencesstring[]optional- Names of the lists the campaign targets. Replaces the current set.
templatesobject[]optional- The templates the campaign runs, by name. More than one is an A/B split by weight. Replaces the current set.
namestringrequired- The name to give it. Names are how campaigns, templates and lists are referred to, so make it specific.
weightintegeroptional- This template's share of the split, 1 to 100. Defaults to an even split.
sendersstring | object[]optional- The sending accounts the campaign may use: each a handle, or { handle, weight } to set its share of the day. Replaces the current set. See list_senders.
namestringoptional- A new name for the campaign. Unique within the workspace.
goalstringoptional- What the campaign is for. Steers how the copy agent writes its messages.
start_conversationbook_meetingbook_demoevent_signupnurturereengage priorityintegeroptional- Which campaign gets the day when several want the same senders: 0 normal, 1 elevated, 2 high, 3 urgent.
end_datestring | nulloptional- The last day the campaign enters people, YYYY-MM-DD. Null removes the end date.
min_intent1optional- The minimum intent heat a contact needs to enter. Campaigns email their whole audience, so the only accepted value is 1.
wait_for_intentfalseoptional- Whether entry waits for recorded intent. Neither email nor LinkedIn waits: every contact is emailed, and every contact with a profile gets a connection request, from day one. The only accepted value is false.
daily_targetinteger | nulloptional- How many new contacts to enter per day, 1 to 1000. Null means as many as the senders' allowances permit.
email_min_gap_minutesintegeroptional- The shortest gap between two of this campaign's emails from one sender, in minutes.
email_random_gap_minutesintegeroptional- Up to this many extra minutes, chosen at random, added to each email gap.
email_auto_reply_modestringoptional- What an automatic email reply does: stop ends the sequence, smart_pause holds it until the person is back.
stopsmart_pause email_prioritize_new_leadsbooleanoptional- Send first touches to new contacts ahead of follow-ups that are due.
auto_sourcebooleanoptional- Include the workspace's ongoing ICP sourcing pool. False limits entry to attached audiences.
email_daily_send_limitinteger | nulloptional- Maximum campaign emails per day. Zero holds email; null removes the campaign-specific limit.
email_daily_new_lead_limitinteger | nulloptional- Maximum new email recipients per day. Zero holds new recipients; null removes this campaign limit.
Request
curl -X PATCH https://app.trygtm.com/api/v1/campaigns/Q4%20logistics%20leaders \
-H "Authorization: Bearer $TRYGTM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"audiences": [
"Logistics VPs — US"
],
"templates": [
{
"name": "Logistics opener"
}
]
}'Response
{
"data": {
"detail": "Audiences set to Logistics VPs — US. Senders set to outreach@mail.acme.example.",
"campaign": {
"id": "3b7f0c52-91aa-4e0d-8c11-5a2d6e4f7b90",
"name": "Q4 logistics leaders",
"status": "active",
"goal": "book_meeting",
"template_id": "c1d2e3f4-0a1b-4c2d-8e3f-4a5b6c7d8e9f",
"template_name": "Logistics opener",
"audiences": [
{
"id": "5e6f7a8b-1c2d-4e3f-9a0b-1c2d3e4f5a6b",
"name": "Logistics VPs — US"
}
],
"daily_target": 40,
"min_intent": 1,
"wait_for_intent": false,
"auto_source": true,
"end_date": null,
"created_at": "2026-09-01T12:00:00.000Z"
}
}
}