Flow

Patch flow node content

Live content-only patch for supported node types (email, waitTime, dataSender).

PATCH/v1/campaigns/{id}/flow/nodes/{nodeId}

Authorization

bearerAuth
AuthorizationBearer <token>

Use an account API key in the Authorization header: Authorization: Bearer f_....

In: header

Path Parameters

idstring

Campaign id.

Formatuuid
nodeIdstring

Flow node id.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

dataobject
[key: string]?any
curl -X PATCH "https://example.com/v1/campaigns/497f6eca-6276-4993-bfeb-53cbbbba6f08/flow/nodes/string" \  -H "Content-Type: application/json" \  -d '{    "data": {}  }'
{  "data": {    "flow": {      "nodes": [        {          "id": "leadSource-1",          "type": "leadSource",          "position": {            "x": 0,            "y": 0          },          "data": {            "label": "Lead Bucket",            "customFieldKeys": [              "company"            ],            "mappedStandardFieldKeys": [              "email",              "first_name",              "last_name"            ],            "isRequired": true          },          "deletable": false        },        {          "id": "email-1",          "type": "email",          "position": {            "x": 220,            "y": 0          },          "data": {            "label": "Intro Email",            "priority": false,            "variants": [              {                "id": "11111111-1111-4111-8111-111111111111",                "label": "A",                "subject": "Quick question for {{first_name}}",                "template": "Hi {{first_name}} - reaching out about {{custom.company}}.",                "isActive": true,                "order": 0              },              {                "id": "11111111-1111-4111-8111-111111111112",                "label": "B",                "subject": "Following up for {{first_name}}",                "template": "Hi {{first_name}} - wanted to share a quick idea for {{custom.company}}.",                "isActive": true,                "order": 1              }            ]          }        },        {          "id": "waitTime-1",          "type": "waitTime",          "position": {            "x": 460,            "y": 0          },          "data": {            "label": "Wait 1 day",            "duration": "1",            "unit": "days",            "wait_duration_seconds": 86400          }        },        {          "id": "email-2",          "type": "email",          "position": {            "x": 700,            "y": 0          },          "data": {            "label": "Follow-up",            "priority": false,            "variants": [              {                "id": "22222222-2222-4222-8222-222222222221",                "label": "A",                "subject": "Bumping this for {{first_name}}",                "template": "Hi {{first_name}} - circling back in case this is relevant for {{custom.company}}.",                "isActive": true,                "order": 0              },              {                "id": "22222222-2222-4222-8222-222222222222",                "label": "B",                "subject": "Any thoughts, {{first_name}}?",                "template": "Hi {{first_name}} - should I close the loop or send more detail?",                "isActive": true,                "order": 1              }            ]          }        }      ],      "edges": [        {          "id": "e1",          "source": "leadSource-1",          "target": "email-1"        },        {          "id": "e2",          "source": "email-1",          "target": "waitTime-1"        },        {          "id": "e3",          "source": "waitTime-1",          "target": "email-2"        }      ]    },    "flow_revision": "string",    "field_sync": {      "declared_custom_added": [        "string"      ],      "declared_standard_added": [        "string"      ]    },    "change_kind": "none",    "change_reasons": [      "string"    ],    "reactivated_count": 0  }}
{  "error": {    "type": "invalid_request_error",    "code": "invalid_flow",    "message": "Flow validation failed"  },  "details": [    {      "path": "nodes[1].data.variants[0].id",      "code": "invalid_variant_id",      "message": "Email variants must have a stable UUID id."    }  ]}
{  "error": {    "type": "authentication_error",    "code": "invalid_api_key",    "message": "A valid Furnace API key is required"  }}
{  "error": {    "type": "permission_error",    "code": "smartlead_read_only",    "message": "Smartlead campaigns are read-only via the API"  }}
{  "error": {    "type": "invalid_request_error",    "code": "campaign_not_found",    "message": "Campaign not found"  }}
{  "error": {    "type": "rate_limit_error",    "code": "rate_limit_exceeded",    "message": "Rate limit exceeded for this account"  }}
{  "error": {    "type": "api_error",    "code": "internal_error",    "message": "Internal server error"  }}