LinkedIn campaigns and sequences
Create a campaign, add people, set a sequence and move people between states, with sample requests.
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.