ReplySparrow Docs

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.

patchhttps://app.replysparrow.com/api/v1/campaigns/{id}

Authorizations

Authorizationstringheaderrequired

Your API key from Settings → API, sent as Bearer <token>.

Path Parameters

idstringrequired

Campaign id

Body

application/json
namestring
channelenum<string>

Available options: linkedinmultiemail

list_idsstring[]
goalenum<string>

Available options: conversationsmeetings

toneenum<string>

Available options: professionalconversationaldirect

languageenum<string>

Available options: English (US)English (UK)SpanishFrenchGermanItalianPortugueseDutchSwedishDanishNorwegianFinnishPolishCzechRomanianGreekTurkishArabicHebrewHindiIndonesianJapaneseKoreanChinese (Simplified)Chinese (Traditional)VietnameseThaiRussianUkrainian

stepsobject[]

Response

application/json

Campaign updated

idstringrequired

Unique identifier for the campaign (the agent id in the app)

namestringrequired

Name of the campaign

activebooleanrequired

Whether the campaign is active: outreach is on and enrolled contacts move through the sequence

channelenum<string>required

Channels the campaign uses

Available options: linkedinmultiemail

exclude_first_degreebooleanrequired

Exclude first degree connections from the campaign (contacts already connected on LinkedIn)

split_messagesbooleanrequired

When enabled, LinkedIn message steps with several paragraphs are sent as 2-4 shorter messages

list_idsstring[]required

Other lists whose contacts the campaign reaches

stepsobject[]required

The sequence, LinkedIn track first, each track in order

created_atstring<date-time>required

Creation timestamp

updated_atstring<date-time>required

Last update timestamp

statusenum<string>

Lead finding state of the agent behind the campaign (managed in the Agents section)

Available options: draftactivepaused

goalenum<string>

Campaign goal: what replies should lead to

Available options: conversationsmeetings

toneenum<string>

Campaign tone, used by AI-written messages

Available options: professionalconversationaldirect

languagestring

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

list_idstring

The campaign's own list: contacts its agent finds and enrolls land here

The sequence behind the campaign

Update one 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"}