OutFlo Public API / Guide
Campaign management
Create, configure, launch, pause, and inspect LinkedIn outreach campaigns.
Overview
Campaign operations cover lifecycle control, sequence configuration, lead retrieval, timelines, and campaign-level reporting. Open an endpoint below to see its complete request and response contract.
Authentication
Send the same x-api-key header with every request.
Request and response schemas
Every operation below follows the same contract order. All responses use the standard status, data, and error envelope.
GET/api/public/campaignsList campaigns
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
No path parameters.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| status | enum | No | active, paused, draft, or completed. |
| search_text | string | No | Case-insensitive campaign-name search. |
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | List campaigns result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"status": "<string>",
"search_text": "<string>"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaignsCreate a campaign
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
| Content-Type | string | Yes | Must be application/json.Example: application/json |
Path parameters
No path parameters.
Query parameters
No query parameters.
Request body · application/json
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Campaign name. |
| senderUrls | string[] | One sender source | Connected sender LinkedIn profile URLs. |
| senderAccountIds | string[] · UUID | One sender source | Connected OutFlo account IDs. |
| timeZone | string | No | Campaign timezone.Example: UTC |
| leadListId | string · UUID | No | Existing lead list to attach. |
| sendMessageToPreviousConnectedLeads | boolean | No | Allow messages to leads who were already connected.Example: true |
| sequenceView sequence definition | object | No | Inline classic or smart outreach sequence. |
| sequenceCampaignId | string · UUID | No | Existing campaign whose sequence should be cloned. |
| operationalTimesView operationalTimes definition | object | No | Enabled days and operating hours. |
| variableResolutionView variableResolution definition | object | No | Template-variable fallback behavior. |
| launchCampaign | boolean | No | Launch immediately after creation.Example: false |
Object definitions
Object and array fields link to their immediate child schema below.
sequence
Inline classic or smart outreach sequence.
| Field | Type | Required | Description |
|---|---|---|---|
| sequenceType | enum | No | classic or smart.Example: classic |
| sequenceStepsView sequence.sequenceSteps definition | record<string, object> | Classic sequences | Classic sequence steps keyed consecutively from "0". |
| graphView sequence.graph definition | object | Smart sequences | Node-and-edge graph for a smart sequence. |
sequence.sequenceSteps
Classic sequence steps keyed consecutively from "0".
| Field | Type | Required | Description |
|---|---|---|---|
| {step}View sequence.sequenceSteps.{step} definition | object | Yes | One classic sequence step. |
sequence.sequenceSteps.{step}
One classic sequence step.
| Field | Type | Required | Description |
|---|---|---|---|
| actionType | enum | Yes | SEND_CONNECTION_REQUEST, SEND_MESSAGE, SEND_VOICE_NOTE, FOLLOW_PROFILE, LIKE_A_POST, VIEW_PROFILE, WITHDRAW_INVITE, CHECK_CONNECTION, CHECK_OPEN_PROFILE, SEND_INMAIL, SEND_FREE_INMAIL, or ENDORSE_SKILLS. |
| standardText | string | No | Connection-request note. Only valid for SEND_CONNECTION_REQUEST. |
| premiumText | string | No | Premium connection-request note. Only valid for SEND_CONNECTION_REQUEST. |
| messageText | string | Message and InMail actions | Message or InMail body. |
| subject | string | InMail actions | InMail subject. |
| voiceNoteUrl | string · URL | SEND_VOICE_NOTE | Public voice-note URL. |
| delay | number | No | Delay before execution, in minutes. Message, InMail, and voice-note actions require at least 180.Example: 180 |
sequence.graph
Node-and-edge graph for a smart sequence.
| Field | Type | Required | Description |
|---|---|---|---|
| nodesView sequence.graph.nodes[] definition | object[] | Yes | At least two nodes, including exactly one start node. |
| edgesView sequence.graph.edges[] definition | object[] | Yes | At least one edge connecting node IDs. |
sequence.graph.nodes[]
At least two nodes, including exactly one start node.
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Stable node ID referenced by graph edges. |
| type | enum | Yes | start, action, or end. |
| actionType | enum | Action nodes | SEND_CONNECTION_REQUEST, SEND_MESSAGE, SEND_VOICE_NOTE, FOLLOW_PROFILE, LIKE_A_POST, VIEW_PROFILE, WITHDRAW_INVITE, CHECK_CONNECTION, CHECK_OPEN_PROFILE, SEND_INMAIL, SEND_FREE_INMAIL, or ENDORSE_SKILLS. |
| dataView sequence.graph.nodes[].data definition | object | No | Payload accepted by the selected action type. |
sequence.graph.nodes[].data
Payload accepted by the selected action type.
| Field | Type | Required | Description |
|---|---|---|---|
| messageText | string | No | Message body. |
| attachments | string[] | No | Message attachment URLs. |
| standardText | string | No | Connection-request note. |
| premiumText | string | No | Premium connection-request note. |
| subject | string | No | InMail subject. |
| voiceNoteUrl | string · URL | No | Public voice-note URL. |
sequence.graph.edges[]
At least one edge connecting node IDs.
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | No | Optional stable edge ID. |
| source | string | Yes | Source node ID. |
| target | string | Yes | Target node ID. |
| outcome | enum | Branching actions | positive, negative, or open_profile_false. |
| waitMinutes | number | No | Delay before following the edge, in minutes.Example: 0 |
operationalTimes
Enabled days and operating hours.
| Field | Type | Required | Description |
|---|---|---|---|
| {day}View operationalTimes.{day} definition | object | No | A capitalized weekday from Monday through Sunday. |
operationalTimes.{day}
A capitalized weekday from Monday through Sunday.
| Field | Type | Required | Description |
|---|---|---|---|
| enabled | boolean | When day is provided | Whether outreach can run on this day.Example: true |
| startTime | string · HH:MM | When day is provided | Start of the operating window in 24-hour time.Example: 09:00 |
| endTime | string · HH:MM | When day is provided | End of the operating window in 24-hour time.Example: 18:00 |
variableResolution
Template-variable fallback behavior.
| Field | Type | Required | Description |
|---|---|---|---|
| {variable}View variableResolution.{variable} definition | object | No | Resolution rule keyed by the template variable name. |
variableResolution.{variable}
Resolution rule keyed by the template variable name.
| Field | Type | Required | Description |
|---|---|---|---|
| fixType | enum | Yes | skipLead, sendBlank, or fallbackValue.Example: fallbackValue |
| fallbackValue | string | fixType = fallbackValue | Replacement text when fixType is fallbackValue.Example: there |
Success response · 201
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 201. |
| data | object | array | null | Yes | Create a campaign result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"name": "<string>",
"senderUrls": [],
"senderAccountIds": [],
"timeZone": "UTC",
"leadListId": "00000000-0000-4000-8000-000000000000",
"sendMessageToPreviousConnectedLeads": true,
"sequence": {
"sequenceType": "classic",
"sequenceSteps": {
"0": {
"actionType": "SEND_CONNECTION_REQUEST",
"standardText": "Hi {firstName}, I would like to connect.",
"delay": 180
}
}
},
"sequenceCampaignId": "00000000-0000-4000-8000-000000000000",
"operationalTimes": {
"Monday": {
"enabled": true,
"startTime": "09:00",
"endTime": "18:00"
}
},
"variableResolution": {
"firstName": {
"fixType": "fallbackValue",
"fallbackValue": "there"
}
},
"launchCampaign": false
}{
"status": 201,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}GET/api/public/campaigns/{id}/sequenceGet a campaign sequence
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | string · UUID | Yes | id path identifier. |
Query parameters
No query parameters.
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Get a campaign sequence result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"headers": {
"x-api-key": "<string>"
}
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}GET/api/public/campaigns/{id}/leads/{leadId}/timelineGet a campaign lead timeline
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | string · UUID | Yes | id path identifier. |
| leadId | string · UUID | Yes | leadId path identifier. |
Query parameters
No query parameters.
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Get a campaign lead timeline result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"headers": {
"x-api-key": "<string>"
}
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}GET/api/public/campaigns/{id}/analytics/overviewGet campaign analytics overview
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | string · UUID | Yes | id path identifier. |
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| connection_status | string · CSV | No | Comma-separated connection statuses. |
| reply_status | string · CSV | No | Comma-separated reply statuses. |
| account_id | string · CSV | No | Comma-separated sender account UUIDs. |
| overall_status | string · CSV | No | Comma-separated lead workflow statuses. |
| from_date | string · date-time | No | Inclusive ISO 8601 start timestamp. |
| to_date | string · date-time | No | Inclusive ISO 8601 end timestamp. |
| search_text | string | No | Case-insensitive lead search text. |
| timezone | string | No | Timezone used for date grouping. |
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Get campaign analytics overview result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"connection_status": "<string>",
"reply_status": "<string>",
"account_id": "<string>",
"overall_status": "<string>",
"from_date": "<string>",
"to_date": "<string>",
"search_text": "<string>",
"timezone": "<string>"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}GET/api/public/campaigns/{id}/analytics/funnelGet campaign funnel analytics
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | string · UUID | Yes | id path identifier. |
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| connection_status | string · CSV | No | Comma-separated connection statuses. |
| reply_status | string · CSV | No | Comma-separated reply statuses. |
| account_id | string · CSV | No | Comma-separated sender account UUIDs. |
| overall_status | string · CSV | No | Comma-separated lead workflow statuses. |
| from_date | string · date-time | No | Inclusive ISO 8601 start timestamp. |
| to_date | string · date-time | No | Inclusive ISO 8601 end timestamp. |
| search_text | string | No | Case-insensitive lead search text. |
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Get campaign funnel analytics result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"connection_status": "<string>",
"reply_status": "<string>",
"account_id": "<string>",
"overall_status": "<string>",
"from_date": "<string>",
"to_date": "<string>",
"search_text": "<string>"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}GET/api/public/campaigns/{id}/analytics/sequencesGet campaign sequence analytics
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | string · UUID | Yes | id path identifier. |
Query parameters
No query parameters.
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Get campaign sequence analytics result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"headers": {
"x-api-key": "<string>"
}
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}GET/api/public/campaigns/{id}/leadsList campaign leads
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | string · UUID | Yes | id path identifier. |
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| connection_status | string · CSV | No | Comma-separated connection statuses. |
| reply_status | string · CSV | No | Comma-separated reply statuses. |
| account_id | string · CSV | No | Comma-separated sender account UUIDs. |
| overall_status | string · CSV | No | Comma-separated lead workflow statuses. |
| from_date | string · date-time | No | Inclusive ISO 8601 start timestamp. |
| to_date | string · date-time | No | Inclusive ISO 8601 end timestamp. |
| search_text | string | No | Case-insensitive lead search text. |
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | List campaign leads result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"connection_status": "<string>",
"reply_status": "<string>",
"account_id": "<string>",
"overall_status": "<string>",
"from_date": "<string>",
"to_date": "<string>",
"search_text": "<string>"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaigns/launchLaunch a campaign
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
No path parameters.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| campaign_id | string · UUID | Yes | Campaign to launch. |
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Launch a campaign result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"campaign_id": "00000000-0000-4000-8000-000000000000"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaigns/pausePause a campaign
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
No path parameters.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| campaign_id | string · UUID | Yes | Campaign to pause. |
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Pause a campaign result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"campaign_id": "00000000-0000-4000-8000-000000000000"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaigns/resumeResume a campaign
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
Path parameters
No path parameters.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| campaign_id | string · UUID | Yes | Campaign to resume. |
Request body
No request body.
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Resume a campaign result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"campaign_id": "00000000-0000-4000-8000-000000000000"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaigns/exclude-leadsExclude leads from a campaign
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
| Content-Type | string | Yes | Must be application/json.Example: application/json |
Path parameters
No path parameters.
Query parameters
No query parameters.
Request body · application/json
| Field | Type | Required | Description |
|---|---|---|---|
| campaign_id | string · UUID | Yes | Campaign whose leads should be updated. |
| linkedin_urls | string[] | Yes | LinkedIn profile URLs to update. |
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Exclude leads from a campaign result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"campaign_id": "00000000-0000-4000-8000-000000000000",
"linkedin_urls": []
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaigns/pause-leadsPause campaign leads
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
| Content-Type | string | Yes | Must be application/json.Example: application/json |
Path parameters
No path parameters.
Query parameters
No query parameters.
Request body · application/json
| Field | Type | Required | Description |
|---|---|---|---|
| campaign_id | string · UUID | Yes | Campaign whose leads should be updated. |
| linkedin_urls | string[] | Yes | LinkedIn profile URLs to update. |
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Pause campaign leads result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"campaign_id": "00000000-0000-4000-8000-000000000000",
"linkedin_urls": []
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaigns/resume-leadsResume campaign leads
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
| Content-Type | string | Yes | Must be application/json.Example: application/json |
Path parameters
No path parameters.
Query parameters
No query parameters.
Request body · application/json
| Field | Type | Required | Description |
|---|---|---|---|
| campaign_id | string · UUID | Yes | Campaign whose leads should be updated. |
| linkedin_urls | string[] | Yes | LinkedIn profile URLs to update. |
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Resume campaign leads result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"campaign_id": "00000000-0000-4000-8000-000000000000",
"linkedin_urls": []
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}PUT/api/public/campaigns/sequenceUpdate a campaign sequence
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
| Content-Type | string | Yes | Must be application/json.Example: application/json |
Path parameters
No path parameters.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| campaign_id | string · UUID | Yes | Draft campaign to update. |
Request body · application/json
| Field | Type | Required | Description |
|---|---|---|---|
| sequenceView sequence definition | object | No | Replacement classic or smart sequence. |
| sequenceCampaignId | string · UUID | No | Campaign whose sequence should be cloned. |
Object definitions
Object and array fields link to their immediate child schema below.
sequence
Replacement classic or smart sequence.
| Field | Type | Required | Description |
|---|---|---|---|
| sequenceType | enum | No | classic or smart.Example: classic |
| sequenceStepsView sequence.sequenceSteps definition | record<string, object> | Classic sequences | Classic sequence steps keyed consecutively from "0". |
| graphView sequence.graph definition | object | Smart sequences | Node-and-edge graph for a smart sequence. |
sequence.sequenceSteps
Classic sequence steps keyed consecutively from "0".
| Field | Type | Required | Description |
|---|---|---|---|
| {step}View sequence.sequenceSteps.{step} definition | object | Yes | One classic sequence step. |
sequence.sequenceSteps.{step}
One classic sequence step.
| Field | Type | Required | Description |
|---|---|---|---|
| actionType | enum | Yes | SEND_CONNECTION_REQUEST, SEND_MESSAGE, SEND_VOICE_NOTE, FOLLOW_PROFILE, LIKE_A_POST, VIEW_PROFILE, WITHDRAW_INVITE, CHECK_CONNECTION, CHECK_OPEN_PROFILE, SEND_INMAIL, SEND_FREE_INMAIL, or ENDORSE_SKILLS. |
| standardText | string | No | Connection-request note. Only valid for SEND_CONNECTION_REQUEST. |
| premiumText | string | No | Premium connection-request note. Only valid for SEND_CONNECTION_REQUEST. |
| messageText | string | Message and InMail actions | Message or InMail body. |
| subject | string | InMail actions | InMail subject. |
| voiceNoteUrl | string · URL | SEND_VOICE_NOTE | Public voice-note URL. |
| delay | number | No | Delay before execution, in minutes. Message, InMail, and voice-note actions require at least 180.Example: 180 |
sequence.graph
Node-and-edge graph for a smart sequence.
| Field | Type | Required | Description |
|---|---|---|---|
| nodesView sequence.graph.nodes[] definition | object[] | Yes | At least two nodes, including exactly one start node. |
| edgesView sequence.graph.edges[] definition | object[] | Yes | At least one edge connecting node IDs. |
sequence.graph.nodes[]
At least two nodes, including exactly one start node.
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Stable node ID referenced by graph edges. |
| type | enum | Yes | start, action, or end. |
| actionType | enum | Action nodes | SEND_CONNECTION_REQUEST, SEND_MESSAGE, SEND_VOICE_NOTE, FOLLOW_PROFILE, LIKE_A_POST, VIEW_PROFILE, WITHDRAW_INVITE, CHECK_CONNECTION, CHECK_OPEN_PROFILE, SEND_INMAIL, SEND_FREE_INMAIL, or ENDORSE_SKILLS. |
| dataView sequence.graph.nodes[].data definition | object | No | Payload accepted by the selected action type. |
sequence.graph.nodes[].data
Payload accepted by the selected action type.
| Field | Type | Required | Description |
|---|---|---|---|
| messageText | string | No | Message body. |
| attachments | string[] | No | Message attachment URLs. |
| standardText | string | No | Connection-request note. |
| premiumText | string | No | Premium connection-request note. |
| subject | string | No | InMail subject. |
| voiceNoteUrl | string · URL | No | Public voice-note URL. |
sequence.graph.edges[]
At least one edge connecting node IDs.
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | No | Optional stable edge ID. |
| source | string | Yes | Source node ID. |
| target | string | Yes | Target node ID. |
| outcome | enum | Branching actions | positive, negative, or open_profile_false. |
| waitMinutes | number | No | Delay before following the edge, in minutes.Example: 0 |
Success response · 200
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 200. |
| data | object | array | null | Yes | Update a campaign sequence result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"sequence": {
"sequenceType": "classic",
"sequenceSteps": {
"0": {
"actionType": "SEND_MESSAGE",
"messageText": "Hi {firstName}",
"delay": 180
}
}
},
"sequenceCampaignId": "00000000-0000-4000-8000-000000000000"
}{
"status": 200,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}POST/api/public/campaign/addleadtoactivecampaign/{campaignId}Add a lead to an active campaign
Headers
| Field | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Workspace API key. |
| Content-Type | string | Yes | Must be application/json.Example: application/json |
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
| campaignId | string · UUID | Yes | campaignId path identifier. |
Query parameters
No query parameters.
Request body · application/json
| Field | Type | Required | Description |
|---|---|---|---|
| linkedinUrl | string · URL | Yes | Lead LinkedIn profile URL. |
| firstName | string | No | Lead first name. |
| lastName | string | No | Lead last name. |
| company | string | No | Lead company. |
| title | string | No | Lead job title. |
| {customField} | string | number | boolean | No | Any additional top-level key becomes a template variable. Keys cannot contain spaces.Example: SaaS |
Success response · 201
| Field | Type | Required | Description |
|---|---|---|---|
| status | integer | Yes | HTTP status mirrored in the JSON body. Success: 201. |
| data | object | array | null | Yes | Add a lead to an active campaign result. The exact data fields depend on the selected resource. |
| error | string | null | Yes | Null on success; a developer-readable message on failure. |
{
"linkedinUrl": "https://www.linkedin.com/in/example/",
"firstName": "<string>",
"lastName": "<string>",
"company": "<string>",
"title": "<string>",
"industry": "SaaS"
}{
"status": 201,
"data": "<endpoint-specific response data>",
"error": null
}{
"status": 400,
"data": null,
"error": "Developer-readable error message"
}