LinkedIn campaigns and sequences

Create a campaign, add people, set a sequence and move people between states, with sample requests.

GuideDeveloperChecked 2026-10-10

The campaign routes hold LinkedIn campaigns: a name, a queue of people with LinkedIn addresses, and a sequence of steps. The Chrome extension reads the queue and does the work in your own browser.

Method and path What it does
GET /market/campaigns Your campaigns with counts. Archived ones are left out
POST /market/campaigns Create a draft. The same name returns the existing campaign
GET /market/campaigns/{id} One campaign with its sequence
PATCH /market/campaigns/{id} Rename, or set status to draft, active, paused or done
PUT /market/campaigns/{id}/sequence Save the sequence tree
POST /market/campaigns/{id}/leads Add people
GET /market/campaigns/{id}/leads The people and their states
POST /market/campaigns/{id}/state Record that a person was sent, accepted, replied and so on
DELETE /market/campaigns/{id} Archives. Nothing is removed
POST /market/campaigns/{id}/unarchive Brings it back, paused if it was running
GET/POST /market/sequences, GET/PUT/DELETE /market/sequences/{id} Saved sequences kept apart from a campaign

Create and fill a campaign

POST /market/campaigns
{"name": "Sheffield accountants", "source": "api"}
{"id": "6650f0c2a1b2c3d4e5f60aaa", "name": "Sheffield accountants", "status": "draft", "steps": 0, "total": 0, "queued": 0, "sent": 0, "accepted": 0, "replied": 0}
POST /market/campaigns/6650f0c2a1b2c3d4e5f60aaa/leads
{"people": [{"linkedin_url": "https://www.linkedin.com/in/sample-person", "name": "Jess Morgan", "company": "Marsh and Keel Accountants", "domain": "marshandkeel.example"}]}
{"added": 1, "already_there": 0, "rejected": 0, "total": 1}

Up to 200 people per call, and adding the same address again is safe. An archived campaign answers 409 until it is brought back. domain helps match the person to a business in the book. A person needs linkedin_url (5 to 300 characters). name, company, headline and lead_id are optional.

States

A person is queued, sent, accepted, replied, skipped or failed. POST .../state takes {"linkedin_url": "...", "state": "sent", "note": "optional"}. An unknown state gives 400 unknown state.

Starting

Setting status to active through PATCH is what the app does when you press Start, after its own checks. The Chrome extension works a campaign only while it is active. The MCP connector can never set a campaign active. See What the connector will not do.

The sequence

PUT .../sequence takes {"name": "...", "root": {...}}. The tree's shape belongs to the app's sequence editor and the extension, so it is not fixed here. The server bounds it at 200 nodes and 12 levels deep and refuses anything bigger.