Campaigns
Update one campaign
Update the campaign name, settings, associated list IDs and steps. Only the fields sent are changed. list_ids replaces the attached lists ([] detaches them all; contacts already enrolled stay). steps replaces the sequence, also while the campaign is active: contacts mid-sequence keep their place on steps sent back with their id, and continue after their last completed step when theirs was removed. skip_invitation_after_days is applied to the sequence's connect step (after steps when both are sent). linkedin_account_ids / email_account_ids replace the sender pools (an array wins over the single linkedin_account_id / email_account_id; [] or null removes them all); the contacts of a removed sender that have not started its steps move to the remaining senders, and contacts already mid-sequence finish on theirs. An active campaign must keep a sender. Needs the campaigns:write scope.
Steps. steps is the whole sequence in order. email steps go on the email track, every other type on the LinkedIn track; the two tracks run side by side for each contact. Waits are delay steps (delay_days; set track when the next step does not tell), or delay_days on any other step, which adds a wait before it. ai: true (the default) lets the agent write the step for each contact, with your text as the fallback; ai: false sends your text as written (message for messages and InMails, email_body and a first email_subject for emails). voice steps need a recording made in the app: send the id of an existing voice step to keep it.
https://app.replysparrow.com/api/v1/campaigns/{id}Authorizations
Path Parameters
Campaign id
Body
application/jsonAvailable options: linkedinmultiemail
Available options: conversationsmeetings
Available options: professionalconversationaldirect
Available options: English (US)English (UK)SpanishFrenchGermanItalianPortugueseDutchSwedishDanishNorwegianFinnishPolishCzechRomanianGreekTurkishArabicHebrewHindiIndonesianJapaneseKoreanChinese (Simplified)Chinese (Traditional)VietnameseThaiRussianUkrainian
Response
application/jsonCampaign updated
Unique identifier for the campaign (the agent id in the app)
Name of the campaign
Whether the campaign is active: outreach is on and enrolled contacts move through the sequence
Exclude first degree connections from the campaign (contacts already connected on LinkedIn)
When enabled, LinkedIn message steps with several paragraphs are sent as 2-4 shorter messages
Other lists whose contacts the campaign reaches
The sequence, LinkedIn track first, each track in order
Creation timestamp
Last update timestamp
Lead finding state of the agent behind the campaign (managed in the Agents section)
Available options: draftactivepaused
Campaign tone, used by AI-written messages
Available options: professionalconversationaldirect
Campaign language, used by AI-written messages; null = the account language
Meeting link AI-written messages may offer
Number of days after which a pending invitation is skipped and only email steps are sent (default 7; 0 = never, though no invitation waits more than 60 days). Set on the sequence's first connect step; null when the sequence has none
The first LinkedIn account of linkedin_account_ids (the primary), kept for existing integrations
The first mailbox of email_account_ids (the primary), kept for existing integrations
LinkedIn accounts sending the LinkedIn steps. Contacts are spread across them; each contact keeps one account for its whole sequence
Mailboxes sending the email steps. Contacts are spread across them; each contact keeps one mailbox for its whole sequence
The campaign's own list: contacts its agent finds and enrolls land here
The sequence behind the campaign
curl --request PATCH \ --url https://app.replysparrow.com/api/v1/campaigns/string \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "tone": "direct", "list_ids": [ "9f8e7d6c-0000-4000-8000-000000000002" ]}'{ "id": "5b0c6c1e-8a43-4f7e-9d7d-1f8a2b3c4d5e", "name": "Q4 founders", "active": false, "channel": "linkedin", "status": "draft", "goal": "conversations", "tone": "professional", "language": null, "booking_url": null, "exclude_first_degree": true, "split_messages": false, "skip_invitation_after_days": 7, "linkedin_account_id": "acc_123", "email_account_id": null, "linkedin_account_ids": [ "acc_123" ], "email_account_ids": [], "list_id": "9f8e7d6c-0000-4000-8000-000000000001", "list_ids": [ "9f8e7d6c-0000-4000-8000-000000000002" ], "workflow_id": "wf_123", "steps": [ { "id": "st_1", "track": "linkedin", "order": 1, "type": "connect", "delay_days": null, "message": null, "connect_note": null, "email_subject": null, "email_body": null, "ai": true }, { "id": "st_2", "track": "linkedin", "order": 2, "type": "delay", "delay_days": 1, "message": null, "connect_note": null, "email_subject": null, "email_body": null, "ai": false }, { "id": "st_3", "track": "linkedin", "order": 3, "type": "message", "delay_days": null, "message": "Hi {{first_name}}, thanks for connecting!", "connect_note": null, "email_subject": null, "email_body": null, "ai": false } ], "created_at": "2026-10-24T09:12:44.000Z", "updated_at": "2026-10-24T09:12:44.000Z"}