Campaigns / CLI
Save campaign sequence touches
Persist externally authored LinkedIn sequence touches into the same Launchpad Messaging store used by the UI. This is deterministic, invokes no hosted model, records current brief, skill, table, evidence, fallback, and operation provenance, and leaves every touch in draft status.
pipeline save-campaign-sequence-touchesDeterministic operationParameters
workspaceIdOptional · string- Optional with API-key auth. Inferred from the key.
briefIdRequired · string- See the input schema for this field.
tableIdRequired · string- See the input schema for this field.
workOrderIdOptional · string- Claimed external Writer work-order ID.
bundleIdOptional · string- Claimed external Writer execution-bundle ID.
touchesRequired · array- See the input schema for this field.
pipeline save-campaign-sequence-touches \
--brief-id "00000000-0000-4000-8000-000000000000" \
--table-id "00000000-0000-4000-8000-000000000000" \
--touches-json '[{"rowId":"00000000-0000-4000-8000-000000000000","touchIndex":0,"channel":"connection_note","outputRole":"example","body":"example","framework":"example","selectedBranch":"example","evidence":{"fact":"example","sourceUrl":"https://example.com"},"operations":["example"]}]'Full input schema
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"description": "Optional with API-key auth. Inferred from the key."
},
"briefId": {
"type": "string"
},
"tableId": {
"type": "string"
},
"workOrderId": {
"type": "string",
"description": "Claimed external Writer work-order ID."
},
"bundleId": {
"type": "string",
"description": "Claimed external Writer execution-bundle ID."
},
"touches": {
"type": "array",
"minItems": 1,
"maxItems": 500,
"items": {
"type": "object",
"properties": {
"rowId": {
"type": "string"
},
"touchIndex": {
"type": "integer",
"minimum": 0,
"maximum": 20
},
"channel": {
"type": "string",
"enum": [
"connection_note",
"linkedin_dm"
]
},
"outputRole": {
"type": "string"
},
"body": {
"type": "string"
},
"framework": {
"type": "string"
},
"daysAfterPrevious": {
"type": "integer",
"minimum": 0
},
"gatedOnAccept": {
"type": "boolean"
},
"selectedBranch": {
"type": "string",
"description": "Exact label from the brief messageDecisionTree."
},
"variables": {
"type": "object",
"additionalProperties": true
},
"evidence": {
"type": [
"object",
"null"
],
"properties": {
"fact": {
"type": "string",
"description": "Exact canonical research fact stored on the table row."
},
"sourceUrl": {
"type": "string",
"description": "Exact canonical research source URL stored on the table row."
}
},
"required": [
"fact",
"sourceUrl"
],
"additionalProperties": false
},
"fallbackReason": {
"type": [
"string",
"null"
]
},
"requiredVariables": {
"type": "array",
"items": {
"type": "string"
}
},
"operations": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
}
},
"required": [
"rowId",
"touchIndex",
"channel",
"outputRole",
"body",
"framework",
"selectedBranch",
"evidence",
"operations"
]
}
}
},
"required": [
"briefId",
"tableId",
"touches"
]
}