Patch a single sequence node’s content — subject, body, delays, or AI extension. Draft campaigns only.
400 without writing.
Immutable fields:
type — to change a node’s kind, delete it and add a new one with addSequenceNode.position — to reorder, use the PATCH verb on the collection (moveSequenceNode).campaign_id — set at creation.| Field | Applies to |
|---|---|
subject | email |
body | connection_request, message, email |
include_message | connection_request |
is_reply | email |
delay_days / delay_hours | delay |
ai_node.purpose / ai_node.output_type | ai |
type === "ai". If the extension row doesn’t exist yet, the server creates it; otherwise it’s updated in place.
addSequenceNode with { type: "ai" }, immediately PUT the same node with ai_node: { purpose, output_type } to populate the extension row. The builder UI does this in one motion; agents should do the same.Delay validation happens at launch. This endpoint does not enforce the “total delay must be 1 minute to 30 days” rule — that’s checked when you call POST /api/campaigns/{id}/launch. Fail-fast validation for a full sequence is available via GET /api/campaigns/{id}/validate.Read-after-write. The response includes the fully-refreshed node with its AI extension flattened into node.ai_node. No separate GET needed.POST to insert a new node.DELETE the collection with { nodeId } to remove.sequence_nodes in ordered form.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Campaign UUID
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Sequence node UUID
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$All fields optional. Only keys present in the body are applied. type, position, and campaign_id are immutable — use moveSequenceNode to reorder.
Email subject template. email nodes only.
Message body template — supports %first_name%, %company%, %sender_first%, and other variables resolved at launch time.
connection_request only. If true, the invite includes a message body (<=300 chars).
email only. If true, the email is sent as a reply on the previous email's thread.
delay only. Days to wait before advancing.
0 <= x <= 9007199254740991delay only. Hours to wait before advancing.
0 <= x <= 9007199254740991AI extension patch. Only applied when the existing node type === 'ai'. Creates the extension row if it doesn't exist yet, otherwise updates it.
Node updated. Returns the refreshed node.
The updated node with its AI extension (if any) flattened from the 1:1 join.