---
title: "Update Sequence Draft"
method: PUT
path: "/api/sequences/{sequence_id}/draft"
tags: ["sequences"]
---

# Update Sequence Draft

`PUT /api/sequences/{sequence_id}/draft`

## Request

- Base URL: `https://platform.verbiflow.com/api/bridge`
- URL: `https://platform.verbiflow.com/api/bridge/api/sequences/{sequence_id}/draft`
- Auth: one of:
  - HTTP bearer and API key in header `x-flage-org-id`
  - HTTP bearer and API key in header `x-flage-org-slug`

## Path parameters

- `sequence_id` string, required

## Request body

- UpdateSequenceDraftRequest
  - `draft_id` string, required
  - `expected_draft_version` integer, required
  - `sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
    - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
      - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
    - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
      - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
  - `sequence_name` string, nullable
  - `settings` SequenceSettingsPayloadInput: Campaign delivery, schedule, tracking, safety, and CRM settings.
    - `accept_all_email_policy` 'hold' | 'allow': Whether accept-all verification risk is held or allowed for this sequence.
    - `bounce_protect_enabled` boolean: Whether known delivery-risk recipients are held before sending.
    - `crm_reply_config` CrmReplyConfigPayloadInput: CRM writes performed after a qualified campaign reply.
      - `activity_rules` CrmActivityRulePayload[]: Campaign interaction to CRM activity projection rules.
        - `associate_with` string[]: CRM object kinds associated with the created activity.
        - `crm_object` string: CRM activity or object type to create.
        - `enabled` boolean: Whether this activity projection rule is active.
        - `engagement_label` string: Human-readable label stored on the CRM engagement.
        - `field_mappings` CrmFieldMappingPayload[]: Fields copied into the created CRM activity.
          - `crm_field` string: Destination CRM property key.
          - `vf_field` string: Verbiflow field key read from the campaign person or activity.
        - `interaction` string: Campaign interaction type that triggers the CRM activity.
      - `company_mappings` CrmFieldMappingPayload[]: Campaign-to-CRM company field mappings.
        - `crm_field` string: Destination CRM property key.
        - `vf_field` string: Verbiflow field key read from the campaign person or activity.
      - `contact_mappings` CrmFieldMappingPayload[]: Campaign-to-CRM contact field mappings.
        - `crm_field` string: Destination CRM property key.
        - `vf_field` string: Verbiflow field key read from the campaign person or activity.
      - `create_company` boolean: Whether a missing CRM company may be created.
      - `create_contact` boolean: Whether a missing CRM contact may be created.
      - `create_deal` boolean: Whether a deal may be created for the qualified reply.
      - `crm_provider` string, nullable: CRM provider receiving qualified-reply updates.
      - `deal_mappings` CrmFieldMappingPayload[]: Campaign-to-CRM deal field mappings.
        - `crm_field` string: Destination CRM property key.
        - `vf_field` string: Verbiflow field key read from the campaign person or activity.
      - `deal_pipeline` string: Destination CRM deal pipeline id.
      - `deal_stage` string: Destination CRM deal stage id.
      - `push_to_crm` boolean: Whether qualified replies should trigger CRM writes.
    - `daily_send_limit` integer, required: Campaign-level maximum outbound actions per day.
    - `days_of_week` integer[]: ISO weekday numbers on which campaign actions may send.
    - `email_esp_routing` 'off' | 'prefer_same_esp': Email-provider routing preference for outbound delivery.
    - `global_exclusions_enabled` boolean: Whether workspace global exclusions block enrollment and sending.
    - `insert_unsubscribe_header` boolean, required: Whether outbound email receives an unsubscribe header.
    - `link_tracking` boolean, required: Whether email link tracking is enabled.
    - `open_tracking` boolean, required: Whether email open tracking is enabled.
    - `prioritize_new_leads` boolean, required: Whether newly eligible people are scheduled before older pending people.
    - `reply_agent_enabled` boolean, required: Whether the reply agent may process campaign replies.
    - `send_window_end` string, required: Local exclusive end time for campaign sending.
    - `send_window_start` string, required: Local inclusive start time for campaign sending.
    - `timezone` string, required: IANA timezone used to evaluate the send window.
  - `workflow` WorkflowPayloadInput: Complete campaign workflow graph.
    - `edges` WorkflowEdgePayload[]: Directed workflow edges connecting the nodes.
      - `data` WorkflowEdgeDataPayload: Optional presentation metadata for a workflow edge.
        - `label` string, nullable: Human-readable branch label shown on the workflow edge.
      - `id` string, required: Stable workflow edge id.
      - `source` string, required: Upstream workflow node id.
      - `source_handle` string, nullable: Optional named branch emitted by the source node.
      - `target` string, required: Downstream workflow node id.
      - `target_handle` string, nullable: Optional named input on the target node.
    - `nodes` WorkflowNodePayloadInput[]: Typed workflow nodes.
      - `data` WorkflowNodeDataPayloadInput, required: Typed configuration carried by one campaign workflow node.
        - `activation_conditions` ActivationConditionGroupPayloadInput[], nullable: Runtime eligibility conditions for an action node.
          - `chain` 'and' | 'or', required: Whether every rule or any rule must match.
          - `id` string, required: Stable condition-group id used by the workflow editor.
          - `label` string, required: Human-readable condition-group label.
          - `rules` ConditionRulePayloadInput[]: Predicates evaluated inside this condition group.
            - `attribute` string, required: Audience or runtime attribute evaluated by this rule.
            - `negate` boolean: Whether to invert this rule after evaluating it.
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'is_empty' | 'is_not_empty' | 'matches' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'in' | 'not_in' | 'is_true' | 'is_false' | 'before' | 'after' | 'in_last_n_days' | 'in_next_n_days', required: Typed comparison applied to the selected attribute.
            - `rule_id` string, nullable: Optional stable rule id retained across editor revisions.
            - `value` union: Recursive JSON value: object, array, string, integer, number, boolean, or null.
              - …
        - `branch_sender_selections` object: Per-variant sender selections keyed by branch or variant id.
        - `conditions` FilterConditionGroupPayloadInput[], nullable: Filter branches evaluated by a filter node.
          - `chain` 'and' | 'or', required: Whether every rule or any rule must match.
          - `id` string, required: Stable condition-group id used by the workflow editor.
          - `label` string, required: Human-readable condition-group label.
          - `rules` ConditionRulePayloadInput[]: Predicates evaluated inside this condition group.
            - `attribute` string, required: Audience or runtime attribute evaluated by this rule.
            - `negate` boolean: Whether to invert this rule after evaluating it.
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'is_empty' | 'is_not_empty' | 'matches' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'in' | 'not_in' | 'is_true' | 'is_false' | 'before' | 'after' | 'in_last_n_days' | 'in_next_n_days', required: Typed comparison applied to the selected attribute.
            - `rule_id` string, nullable: Optional stable rule id retained across editor revisions.
            - `value` union: Recursive JSON value: object, array, string, integer, number, boolean, or null.
              - …
          - `sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
            - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
              - …
            - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
              - …
        - `else_sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
          - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
          - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
        - `enabled_branches` string[], nullable: Action branch ids eligible for weighted selection.
        - `ingresses` AudienceIngressPayloadInput[]: Operational audience ingresses attached to the source node.
          - `archived_at` string, date-time, nullable: Time when the ingress was disconnected, if applicable.
          - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audiences produced by this ingress.
            - `created_at` string, date-time, nullable: Time when this audience reference was created.
            - `ingress_id` string, nullable: Operational source ingress that produced this audience reference.
            - `lead_list_id` string, required: Lead-list id containing the materialized audience rows.
            - `list_name` string, nullable: Human-readable name of the materialized lead list.
            - `metadata` object: Source-owned provenance and completeness metadata.
            - `row_count` integer, nullable: Number of rows recorded for this audience materialization.
            - `source_run_id` string, nullable: Source execution that produced the lead list.
          - `config` union, required: Typed source-adapter configuration.
            - ManualSourceConfigPayloadInput: Manual audience source populated by explicit uploads or staged artifacts.
              - …
            - CrmSourceConfigPayloadInput: CRM-backed source that acquires contacts, companies, or deals.
              - …
            - WebhookSourceConfigPayloadInput: Webhook source whose signed deliveries append campaign audience rows.
              - …
            - LinkedInNetworkSourceConfigPayloadInput: Connected-sender LinkedIn network source.
              - …
            - JobPostingSourceConfigPayloadInput: Hiring-signal source that turns recent job postings into campaign contacts.
              - …
            - LinkedInPostReactorsSourceConfigPayloadInput: Public LinkedIn activity source that finds people who reacted to matched posts.
              - …
            - LumaEventsSourceConfigPayloadInput: Lu.ma event audience source.
              - …
            - ConferenceAttendeesSourceConfigPayloadInput: Conference-attendee recipe source derived from bounded LinkedIn interactions.
              - …
            - IncubatorSourceConfigPayloadInput: Incubator-company source expanded to target contacts.
              - …
            - TargetedSearchSourceConfigPayloadInput: Targeted people search constrained by current or past role and company facts.
              - …
            - SalesNavUrlSourceConfigPayloadInput: LinkedIn Sales Navigator URL source executed through one connected sender.
              - …
          - `created_at` string, date-time, nullable: Time when the ingress was created.
          - `dedupe_key` string: Stable source identity key used to adopt equivalent ingresses.
          - `display_name` string, nullable: Human-readable source label.
          - `ingress_id` string, required: Stable operational source-ingress id.
          - `ingress_kind` 'manual' | 'crm' | 'webhook' | 'linkedin_network' | 'job_posting' | 'linkedin_post_reactors' | 'luma_events' | 'conference_attendees' | 'incubator' | 'targeted_search' | 'sales_nav_url', required: Source adapter kind owned by this ingress.
          - `ingress_order` integer: Stable display and execution order within the source node.
          - `metadata` object: Ingress provenance that does not control provider execution.
        - `label` string, nullable: Optional workflow-editor label for the node.
        - `sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
          - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
          - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
        - `settings` CampaignNodeSettingsInput: Block-specific editor settings. The node type selects which fields are meaningful.
          - `ai_filter_prompt` string, nullable: Qualification prompt for an AI-filter block.
          - `attachments` CampaignAttachment[]: Top-level attachment references used by the editor for single-variant actions.
            - `content_type` string: Attachment MIME type.
            - `filename` string: Recipient-facing attachment filename.
            - `kind` 'pdf' | 'video' | 'email_attachment': Delivery attachment kind; channel validation applies when saving and sending.
            - `s3_key` string: Opaque attachment storage locator returned by upload_attachment; preserve it unchanged.
            - `size_bytes` integer: Attachment byte count.
          - `body` string, nullable: Body for email and reply_email actions.
          - `duration` number: Positive delay amount for a delay block, interpreted with unit.
          - `message` string, nullable: Message for linkedin_message and linkedin_inmail actions.
          - `note` string, nullable: Connection note for linkedin_connection actions.
          - `subject` string, nullable: Subject for email or linkedin_inmail; top-level copy mirrors the first variant.
          - `unit` 'hours' | 'days': Delay time unit; use hours or days as supported by the block editor.
          - `variants` CampaignActionVariant[]: Complete action variants, including ids, copy, weights, and attachments.
            - `attachments` CampaignAttachment[]: Uploaded attachment references for this variant.
              - …
            - `body` string: Reviewed message body; editor serialization maps it to the action channel.
            - `id` string: Campaign variant identity used by CampaignCopyBinding.campaign_variant_id; omit only to create a new variant.
            - `subject` string, nullable: Email or InMail subject; null for actions without a subject.
            - `weight` integer: Relative allocation weight for this variant.
        - `source_config` union: Legacy inline source config accepted only on supported source blocks.
          - ManualSourceConfigPayloadInput: Manual audience source populated by explicit uploads or staged artifacts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'manual': Discriminator selecting the manual source adapter.
          - CrmSourceConfigPayloadInput: CRM-backed source that acquires contacts, companies, or deals.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `data_type` 'contacts' | 'companies' | 'deals': CRM object grain acquired by the source.
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `filters` CampaignCrmPropertyFilterInput[]: Primary CRM object filters.
              - …
            - `include_properties` string[]: Additional CRM properties requested on returned objects.
            - `list_id` string, nullable: Provider list id used when selection_mode is list.
            - `list_name` string, nullable: Display name retained for the selected provider list.
            - `max_per_company` integer, nullable: Maximum contacts retained for each matched company.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `provider` 'hubspot' | 'attio' | 'salesforce': CRM provider queried by the source.
            - `related_filters` CampaignCrmRelatedFilterInput[]: Filters applied through related CRM objects.
              - …
            - `salesforce_object` 'contact' | 'lead' | 'both', nullable: Salesforce person object kinds included by this source.
            - `selection_mode` 'filters' | 'list': Whether the source uses filters or one saved CRM list.
            - `source_kind` 'crm': Discriminator selecting the CRM source adapter.
            - `target_titles_tags` string[]: Contact titles used when a company-grain source expands to people.
          - WebhookSourceConfigPayloadInput: Webhook source whose signed deliveries append campaign audience rows.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `auto_sync` boolean, nullable: Whether accepted webhook rows should automatically materialize into the audience.
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'webhook': Discriminator selecting the webhook source adapter.
            - `webhook_id` string, nullable: Stable webhook identity associated with this source.
          - LinkedInNetworkSourceConfigPayloadInput: Connected-sender LinkedIn network source.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `role_filter_tags` string[]: Role tags used to qualify network members.
            - `sender_account_ids` string[]: Connected LinkedIn sender accounts whose networks are included.
            - `source_kind` 'linkedin_network': Discriminator selecting the LinkedIn network source adapter.
          - JobPostingSourceConfigPayloadInput: Hiring-signal source that turns recent job postings into campaign contacts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `days` integer, nullable: Lookback window in days for job postings.
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `include_hiring_manager` boolean: Whether to include a discovered hiring manager when available.
            - `job_title_tags` string[]: Job-posting titles used to match hiring companies.
            - `location_tags` string[]: Locations used to qualify matched job postings.
            - `max_per_company` integer, nullable: Maximum contacts retained for each hiring company.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'job_posting': Discriminator selecting the job-posting source adapter.
            - `target_title_tags` string[]: Contact titles requested at each hiring company.
          - LinkedInPostReactorsSourceConfigPayloadInput: Public LinkedIn activity source that finds people who reacted to matched posts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `interaction_types` string[]: Reaction types that qualify a person for the audience.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `query` string: Public post research query.
            - `source_kind` 'linkedin_post_reactors': Discriminator selecting the LinkedIn post-reactor adapter.
          - LumaEventsSourceConfigPayloadInput: Lu.ma event audience source.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `event_name` string: Event name or identifier used for attendee acquisition.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `role` string: Attendee role used to qualify event people.
            - `source_kind` 'luma_events': Discriminator selecting the Lu.ma event adapter.
          - ConferenceAttendeesSourceConfigPayloadInput: Conference-attendee recipe source derived from bounded LinkedIn interactions.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `direction` 'sent' | 'received' | 'both': Whether sent, received, or both interaction directions are included.
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `exclude_verbiflow_managed` boolean: Whether to exclude interactions already managed by Verbiflow.
            - `from_date` string: Inclusive lower date bound for qualifying interactions.
            - `keyword_tags` string[]: Conference keywords used to identify relevant interactions.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `sender_account_ids` string[]: Connected senders whose interaction histories are examined.
            - `source_kind` 'conference_attendees': Discriminator selecting the conference-attendee adapter.
            - `to_date` string: Inclusive upper date bound for qualifying interactions.
          - IncubatorSourceConfigPayloadInput: Incubator-company source expanded to target contacts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `batch_id` string: Legacy single incubator batch id.
            - `batch_ids` string[]: Exact incubator batch ids included by the source.
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `incubator_name` string: Incubator catalog name.
            - `max_per_company` integer, nullable: Maximum contacts retained for each portfolio company.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'incubator': Discriminator selecting the incubator adapter.
            - `target_title_tags` string[]: Contact titles requested at each portfolio company.
          - TargetedSearchSourceConfigPayloadInput: Targeted people search constrained by current or past role and company facts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `company_linkedin_urls` string[]: Current-company LinkedIn URLs used as exact constraints.
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `job_title_tags` string[]: Current job titles used to qualify people.
            - `location_tags` string[]: Locations used to qualify people.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `past_company_linkedin_urls` string[]: Past-company LinkedIn URLs used as exact constraints.
            - `past_job_title_tags` string[]: Past job titles used to qualify people.
            - `source_kind` 'targeted_search': Discriminator selecting the targeted-search adapter.
          - SalesNavUrlSourceConfigPayloadInput: LinkedIn Sales Navigator URL source executed through one connected sender.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadInput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadInput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadInput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `max_profiles` integer, nullable: Maximum profiles admitted from the search.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `sender_account_id` string: Connected LinkedIn sender used to access the search.
            - `source_kind` 'sales_nav_url': Discriminator selecting the Sales Navigator URL adapter.
            - `url` string: Complete Sales Navigator search URL.
      - `id` string, required: Stable node id referenced by edges and runtime state.
      - `position` CampaignCanvasPosition, required: Editor canvas coordinates; they do not change execution order.
        - `x` number, required: Horizontal canvas coordinate.
        - `y` number, required: Vertical canvas coordinate.
      - `type` string, required: Registered campaign block type.

## Response `200`

Successful Response

- SequenceDetailPayload: Complete editable campaign state and its published-revision relationship.
  - `assigned_to` WorkspaceMemberPayload[], required: Workspace members assigned to the campaign.
    - `avatar_url` string, nullable: Optional profile-image URL for the workspace member.
    - `email` string, required: Workspace email address of the member.
    - `id` string, required: Stable workspace member id.
    - `name` string, required: Display name of the workspace member.
  - `assignments_version` integer: Monotonic campaign-assignment version.
  - `authoring_receipt` CampaignAuthoringReceipt: Starter provenance and durable copy-job linkage; later fields appear as authoring progresses.
    - `brief` string, nullable: Campaign brief, or null when none was supplied.
    - `channel_plan` 'email_only' | 'linkedin_only' | 'email_linkedin': Channels selected for the starter.
    - `copy_artifact_id` string, nullable: Immutable copy output artifact identity.
    - `copy_authoring_request_digest` string, nullable: Digest of persisted authoring intent.
    - `copy_bindings` CampaignCopyBindingReceipt[]: Prepared artifact message to campaign variant mappings.
      - `campaign_variant_id` string: Campaign action variant identity.
      - `message_id` string: Copy-artifact message identity.
      - `node_id` string: Campaign action node identity.
    - `copy_generation` 'neutral_template' | 'canonical_copy_job_prepared' | 'canonical_copy_job': Neutral template, persisted generation intent, or admitted copy job.
    - `copy_job_id` string, nullable: Durable copy job identity.
    - `copy_job_status` 'queued' | 'running' | 'blocked' | 'completed' | 'failed': Copy job status at the time this receipt was persisted; query the job for current state.
    - `copy_policy_digest` string: Digest of the applied policy.
    - `copy_policy_version` string: Applied copy policy revision.
    - `copy_request_digest` string, nullable: Digest of admitted generation request.
    - `copy_topology_digest` string, nullable: Digest of action topology used by prepared copy.
    - `generate_copy` boolean: Whether this starter requests canonical copy authoring.
    - `mode` 'starter': Starter-template authoring mode.
    - `retry_of_job_id` string, nullable: Failed predecessor job when explicitly retried.
    - `template_digest` string: SHA-256 of the exact starter steps.
    - `template_version` string: Starter template revision.
    - `version` integer: Receipt format version.
  - `auto_adopt_compatible_revisions` boolean: Whether running recipients may adopt compatible later revisions.
  - `base_revision_id` string, nullable: Published revision from which the current draft was derived.
  - `copy_application_receipts` object: Digest-bound receipts for copy applied to this draft.
  - `created_at` string, date-time, required: Time when the campaign was created.
  - `draft_id` string, required: Current editable draft id.
  - `draft_version` integer, required: Current optimistic-concurrency version of the draft.
  - `has_published_revision` boolean: Whether the campaign has any immutable published revision.
  - `is_archived` boolean: Whether the campaign is archived.
  - `latest_revision_id` string, nullable: Most recently published revision id.
  - `latest_revision_number` integer, nullable: Most recently published revision number.
  - `lead_list_ids` string[]: Lead lists currently attached to the campaign audience.
  - `operational_state` 'inactive' | 'active' | 'paused', required: Current draft, ready, active, paused, or archived lifecycle state.
  - `published_revision_id` string, nullable: Revision currently used for new runtime enrollment.
  - `published_revision_is_current` boolean: Whether the current draft exactly matches the published revision.
  - `published_revision_number` integer, nullable: Revision number currently used for new enrollment.
  - `sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
    - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
      - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
    - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
      - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
  - `sequence_id` string, required: Stable campaign id.
  - `sequence_name` string, required: Human-readable campaign name.
  - `settings` SequenceSettingsPayloadOutput, required: Campaign delivery, schedule, tracking, safety, and CRM settings.
    - `accept_all_email_policy` 'hold' | 'allow': Whether accept-all verification risk is held or allowed for this sequence.
    - `bounce_protect_enabled` boolean: Whether known delivery-risk recipients are held before sending.
    - `crm_reply_config` CrmReplyConfigPayloadOutput: CRM writes performed after a qualified campaign reply.
      - `activity_rules` CrmActivityRulePayload[]: Campaign interaction to CRM activity projection rules.
        - `associate_with` string[]: CRM object kinds associated with the created activity.
        - `crm_object` string: CRM activity or object type to create.
        - `enabled` boolean: Whether this activity projection rule is active.
        - `engagement_label` string: Human-readable label stored on the CRM engagement.
        - `field_mappings` CrmFieldMappingPayload[]: Fields copied into the created CRM activity.
          - `crm_field` string: Destination CRM property key.
          - `vf_field` string: Verbiflow field key read from the campaign person or activity.
        - `interaction` string: Campaign interaction type that triggers the CRM activity.
      - `company_mappings` CrmFieldMappingPayload[]: Campaign-to-CRM company field mappings.
        - `crm_field` string: Destination CRM property key.
        - `vf_field` string: Verbiflow field key read from the campaign person or activity.
      - `contact_mappings` CrmFieldMappingPayload[]: Campaign-to-CRM contact field mappings.
        - `crm_field` string: Destination CRM property key.
        - `vf_field` string: Verbiflow field key read from the campaign person or activity.
      - `create_company` boolean: Whether a missing CRM company may be created.
      - `create_contact` boolean: Whether a missing CRM contact may be created.
      - `create_deal` boolean: Whether a deal may be created for the qualified reply.
      - `crm_provider` string, nullable: CRM provider receiving qualified-reply updates.
      - `deal_mappings` CrmFieldMappingPayload[]: Campaign-to-CRM deal field mappings.
        - `crm_field` string: Destination CRM property key.
        - `vf_field` string: Verbiflow field key read from the campaign person or activity.
      - `deal_pipeline` string: Destination CRM deal pipeline id.
      - `deal_stage` string: Destination CRM deal stage id.
      - `push_to_crm` boolean: Whether qualified replies should trigger CRM writes.
    - `daily_send_limit` integer, required: Campaign-level maximum outbound actions per day.
    - `days_of_week` integer[]: ISO weekday numbers on which campaign actions may send.
    - `email_esp_routing` 'off' | 'prefer_same_esp': Email-provider routing preference for outbound delivery.
    - `global_exclusions_enabled` boolean: Whether workspace global exclusions block enrollment and sending.
    - `insert_unsubscribe_header` boolean, required: Whether outbound email receives an unsubscribe header.
    - `link_tracking` boolean, required: Whether email link tracking is enabled.
    - `open_tracking` boolean, required: Whether email open tracking is enabled.
    - `prioritize_new_leads` boolean, required: Whether newly eligible people are scheduled before older pending people.
    - `reply_agent_enabled` boolean, required: Whether the reply agent may process campaign replies.
    - `send_window_end` string, required: Local exclusive end time for campaign sending.
    - `send_window_start` string, required: Local inclusive start time for campaign sending.
    - `timezone` string, required: IANA timezone used to evaluate the send window.
  - `source_registry_version` integer: Monotonic operational source-registry version.
  - `updated_at` string, date-time, required: Time when the campaign last changed.
  - `validation_issues` SequenceValidationIssuePayload[]: Current publication-blocking errors and warnings.
    - `code` string, required: Stable machine-readable validation code.
    - `edge_id` string, nullable: Workflow edge associated with the finding, when applicable.
    - `field_name` string, nullable: Configuration field associated with the finding, when applicable.
    - `message` string, required: Human-readable explanation of the validation finding.
    - `node_id` string, nullable: Workflow node associated with the finding, when applicable.
    - `severity` 'error' | 'warning', required: Whether the finding blocks publication or is only a warning.
    - `target_path` string, nullable: Structured path to the invalid campaign value.
  - `workflow` WorkflowPayloadOutput, required: Complete campaign workflow graph.
    - `edges` WorkflowEdgePayload[]: Directed workflow edges connecting the nodes.
      - `data` WorkflowEdgeDataPayload: Optional presentation metadata for a workflow edge.
        - `label` string, nullable: Human-readable branch label shown on the workflow edge.
      - `id` string, required: Stable workflow edge id.
      - `source` string, required: Upstream workflow node id.
      - `source_handle` string, nullable: Optional named branch emitted by the source node.
      - `target` string, required: Downstream workflow node id.
      - `target_handle` string, nullable: Optional named input on the target node.
    - `nodes` WorkflowNodePayloadOutput[]: Typed workflow nodes.
      - `data` WorkflowNodeDataPayloadOutput, required: Typed configuration carried by one campaign workflow node.
        - `activation_conditions` ActivationConditionGroupPayloadOutput[], nullable: Runtime eligibility conditions for an action node.
          - `chain` 'and' | 'or', required: Whether every rule or any rule must match.
          - `id` string, required: Stable condition-group id used by the workflow editor.
          - `label` string, required: Human-readable condition-group label.
          - `rules` ConditionRulePayloadOutput[]: Predicates evaluated inside this condition group.
            - `attribute` string, required: Audience or runtime attribute evaluated by this rule.
            - `negate` boolean: Whether to invert this rule after evaluating it.
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'is_empty' | 'is_not_empty' | 'matches' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'in' | 'not_in' | 'is_true' | 'is_false' | 'before' | 'after' | 'in_last_n_days' | 'in_next_n_days', required: Typed comparison applied to the selected attribute.
            - `rule_id` string, nullable: Optional stable rule id retained across editor revisions.
            - `value` union: Recursive JSON value: object, array, string, integer, number, boolean, or null.
              - …
        - `branch_sender_selections` object: Per-variant sender selections keyed by branch or variant id.
        - `conditions` FilterConditionGroupPayloadOutput[], nullable: Filter branches evaluated by a filter node.
          - `chain` 'and' | 'or', required: Whether every rule or any rule must match.
          - `id` string, required: Stable condition-group id used by the workflow editor.
          - `label` string, required: Human-readable condition-group label.
          - `rules` ConditionRulePayloadOutput[]: Predicates evaluated inside this condition group.
            - `attribute` string, required: Audience or runtime attribute evaluated by this rule.
            - `negate` boolean: Whether to invert this rule after evaluating it.
            - `operator` 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'is_empty' | 'is_not_empty' | 'matches' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'in' | 'not_in' | 'is_true' | 'is_false' | 'before' | 'after' | 'in_last_n_days' | 'in_next_n_days', required: Typed comparison applied to the selected attribute.
            - `rule_id` string, nullable: Optional stable rule id retained across editor revisions.
            - `value` union: Recursive JSON value: object, array, string, integer, number, boolean, or null.
              - …
          - `sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
            - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
              - …
            - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
              - …
        - `else_sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
          - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
          - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
        - `enabled_branches` string[], nullable: Action branch ids eligible for weighted selection.
        - `ingresses` AudienceIngressPayloadOutput[]: Operational audience ingresses attached to the source node.
          - `archived_at` string, date-time, nullable: Time when the ingress was disconnected, if applicable.
          - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audiences produced by this ingress.
            - `created_at` string, date-time, nullable: Time when this audience reference was created.
            - `ingress_id` string, nullable: Operational source ingress that produced this audience reference.
            - `lead_list_id` string, required: Lead-list id containing the materialized audience rows.
            - `list_name` string, nullable: Human-readable name of the materialized lead list.
            - `metadata` object: Source-owned provenance and completeness metadata.
            - `row_count` integer, nullable: Number of rows recorded for this audience materialization.
            - `source_run_id` string, nullable: Source execution that produced the lead list.
          - `config` union, required: Typed source-adapter configuration.
            - ManualSourceConfigPayloadOutput: Manual audience source populated by explicit uploads or staged artifacts.
              - …
            - CrmSourceConfigPayloadOutput: CRM-backed source that acquires contacts, companies, or deals.
              - …
            - WebhookSourceConfigPayloadOutput: Webhook source whose signed deliveries append campaign audience rows.
              - …
            - LinkedInNetworkSourceConfigPayloadOutput: Connected-sender LinkedIn network source.
              - …
            - JobPostingSourceConfigPayloadOutput: Hiring-signal source that turns recent job postings into campaign contacts.
              - …
            - LinkedInPostReactorsSourceConfigPayloadOutput: Public LinkedIn activity source that finds people who reacted to matched posts.
              - …
            - LumaEventsSourceConfigPayloadOutput: Lu.ma event audience source.
              - …
            - ConferenceAttendeesSourceConfigPayloadOutput: Conference-attendee recipe source derived from bounded LinkedIn interactions.
              - …
            - IncubatorSourceConfigPayloadOutput: Incubator-company source expanded to target contacts.
              - …
            - TargetedSearchSourceConfigPayloadOutput: Targeted people search constrained by current or past role and company facts.
              - …
            - SalesNavUrlSourceConfigPayloadOutput: LinkedIn Sales Navigator URL source executed through one connected sender.
              - …
          - `created_at` string, date-time, nullable: Time when the ingress was created.
          - `dedupe_key` string: Stable source identity key used to adopt equivalent ingresses.
          - `display_name` string, nullable: Human-readable source label.
          - `ingress_id` string, required: Stable operational source-ingress id.
          - `ingress_kind` 'manual' | 'crm' | 'webhook' | 'linkedin_network' | 'job_posting' | 'linkedin_post_reactors' | 'luma_events' | 'conference_attendees' | 'incubator' | 'targeted_search' | 'sales_nav_url', required: Source adapter kind owned by this ingress.
          - `ingress_order` integer: Stable display and execution order within the source node.
          - `metadata` object: Ingress provenance that does not control provider execution.
        - `label` string, nullable: Optional workflow-editor label for the node.
        - `sender_selection` SequenceSenderSelectionPayload: Campaign sender-account selection split by outreach channel.
          - `email` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
          - `linkedin` SequenceSenderChannelSelectionPayload: Connected sender accounts available for one outreach channel.
            - `sender_account_ids` string[]: Exact sender-account ids available to the channel.
        - `settings` CampaignNodeSettingsOutput: Block-specific editor settings. The node type selects which fields are meaningful.
          - `ai_filter_prompt` string, nullable: Qualification prompt for an AI-filter block.
          - `attachments` CampaignAttachment[]: Top-level attachment references used by the editor for single-variant actions.
            - `content_type` string: Attachment MIME type.
            - `filename` string: Recipient-facing attachment filename.
            - `kind` 'pdf' | 'video' | 'email_attachment': Delivery attachment kind; channel validation applies when saving and sending.
            - `s3_key` string: Opaque attachment storage locator returned by upload_attachment; preserve it unchanged.
            - `size_bytes` integer: Attachment byte count.
          - `body` string, nullable: Body for email and reply_email actions.
          - `duration` number: Positive delay amount for a delay block, interpreted with unit.
          - `message` string, nullable: Message for linkedin_message and linkedin_inmail actions.
          - `note` string, nullable: Connection note for linkedin_connection actions.
          - `subject` string, nullable: Subject for email or linkedin_inmail; top-level copy mirrors the first variant.
          - `unit` 'hours' | 'days': Delay time unit; use hours or days as supported by the block editor.
          - `variants` CampaignActionVariant[]: Complete action variants, including ids, copy, weights, and attachments.
            - `attachments` CampaignAttachment[]: Uploaded attachment references for this variant.
              - …
            - `body` string: Reviewed message body; editor serialization maps it to the action channel.
            - `id` string: Campaign variant identity used by CampaignCopyBinding.campaign_variant_id; omit only to create a new variant.
            - `subject` string, nullable: Email or InMail subject; null for actions without a subject.
            - `weight` integer: Relative allocation weight for this variant.
        - `source_config` union: Legacy inline source config accepted only on supported source blocks.
          - ManualSourceConfigPayloadOutput: Manual audience source populated by explicit uploads or staged artifacts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'manual': Discriminator selecting the manual source adapter.
          - CrmSourceConfigPayloadOutput: CRM-backed source that acquires contacts, companies, or deals.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `data_type` 'contacts' | 'companies' | 'deals': CRM object grain acquired by the source.
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `filters` CampaignCrmPropertyFilterOutput[]: Primary CRM object filters.
              - …
            - `include_properties` string[]: Additional CRM properties requested on returned objects.
            - `list_id` string, nullable: Provider list id used when selection_mode is list.
            - `list_name` string, nullable: Display name retained for the selected provider list.
            - `max_per_company` integer, nullable: Maximum contacts retained for each matched company.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `provider` 'hubspot' | 'attio' | 'salesforce': CRM provider queried by the source.
            - `related_filters` CampaignCrmRelatedFilterOutput[]: Filters applied through related CRM objects.
              - …
            - `salesforce_object` 'contact' | 'lead' | 'both', nullable: Salesforce person object kinds included by this source.
            - `selection_mode` 'filters' | 'list': Whether the source uses filters or one saved CRM list.
            - `source_kind` 'crm': Discriminator selecting the CRM source adapter.
            - `target_titles_tags` string[]: Contact titles used when a company-grain source expands to people.
          - WebhookSourceConfigPayloadOutput: Webhook source whose signed deliveries append campaign audience rows.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `auto_sync` boolean, nullable: Whether accepted webhook rows should automatically materialize into the audience.
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'webhook': Discriminator selecting the webhook source adapter.
            - `webhook_id` string, nullable: Stable webhook identity associated with this source.
          - LinkedInNetworkSourceConfigPayloadOutput: Connected-sender LinkedIn network source.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `role_filter_tags` string[]: Role tags used to qualify network members.
            - `sender_account_ids` string[]: Connected LinkedIn sender accounts whose networks are included.
            - `source_kind` 'linkedin_network': Discriminator selecting the LinkedIn network source adapter.
          - JobPostingSourceConfigPayloadOutput: Hiring-signal source that turns recent job postings into campaign contacts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `days` integer, nullable: Lookback window in days for job postings.
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `include_hiring_manager` boolean: Whether to include a discovered hiring manager when available.
            - `job_title_tags` string[]: Job-posting titles used to match hiring companies.
            - `location_tags` string[]: Locations used to qualify matched job postings.
            - `max_per_company` integer, nullable: Maximum contacts retained for each hiring company.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'job_posting': Discriminator selecting the job-posting source adapter.
            - `target_title_tags` string[]: Contact titles requested at each hiring company.
          - LinkedInPostReactorsSourceConfigPayloadOutput: Public LinkedIn activity source that finds people who reacted to matched posts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `interaction_types` string[]: Reaction types that qualify a person for the audience.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `query` string: Public post research query.
            - `source_kind` 'linkedin_post_reactors': Discriminator selecting the LinkedIn post-reactor adapter.
          - LumaEventsSourceConfigPayloadOutput: Lu.ma event audience source.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `event_name` string: Event name or identifier used for attendee acquisition.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `role` string: Attendee role used to qualify event people.
            - `source_kind` 'luma_events': Discriminator selecting the Lu.ma event adapter.
          - ConferenceAttendeesSourceConfigPayloadOutput: Conference-attendee recipe source derived from bounded LinkedIn interactions.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `direction` 'sent' | 'received' | 'both': Whether sent, received, or both interaction directions are included.
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `exclude_verbiflow_managed` boolean: Whether to exclude interactions already managed by Verbiflow.
            - `from_date` string: Inclusive lower date bound for qualifying interactions.
            - `keyword_tags` string[]: Conference keywords used to identify relevant interactions.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `sender_account_ids` string[]: Connected senders whose interaction histories are examined.
            - `source_kind` 'conference_attendees': Discriminator selecting the conference-attendee adapter.
            - `to_date` string: Inclusive upper date bound for qualifying interactions.
          - IncubatorSourceConfigPayloadOutput: Incubator-company source expanded to target contacts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `batch_id` string: Legacy single incubator batch id.
            - `batch_ids` string[]: Exact incubator batch ids included by the source.
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `incubator_name` string: Incubator catalog name.
            - `max_per_company` integer, nullable: Maximum contacts retained for each portfolio company.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `source_kind` 'incubator': Discriminator selecting the incubator adapter.
            - `target_title_tags` string[]: Contact titles requested at each portfolio company.
          - TargetedSearchSourceConfigPayloadOutput: Targeted people search constrained by current or past role and company facts.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `company_linkedin_urls` string[]: Current-company LinkedIn URLs used as exact constraints.
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `job_title_tags` string[]: Current job titles used to qualify people.
            - `location_tags` string[]: Locations used to qualify people.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `past_company_linkedin_urls` string[]: Past-company LinkedIn URLs used as exact constraints.
            - `past_job_title_tags` string[]: Past job titles used to qualify people.
            - `source_kind` 'targeted_search': Discriminator selecting the targeted-search adapter.
          - SalesNavUrlSourceConfigPayloadOutput: LinkedIn Sales Navigator URL source executed through one connected sender.
            - `acquisition_filters` SourceAcquisitionFilterGroupPayloadOutput[]: Qualification groups applied during source acquisition.
              - …
            - `audience_refs` SourceAudienceRefPayloadOutput[]: Materialized audience generations already produced by the source.
              - …
            - `enrichment_steps` SourceEnrichmentStepPayloadOutput[]: Stored enrichment-step configuration. Current source execution does not consume this field; use explicit enrichment SDK operations on acquired rows.
              - …
            - `max_profiles` integer, nullable: Maximum profiles admitted from the search.
            - `metadata` object: Adapter-owned configuration provenance that does not control execution.
            - `sender_account_id` string: Connected LinkedIn sender used to access the search.
            - `source_kind` 'sales_nav_url': Discriminator selecting the Sales Navigator URL adapter.
            - `url` string: Complete Sales Navigator search URL.
      - `id` string, required: Stable node id referenced by edges and runtime state.
      - `position` CampaignCanvasPosition, required: Editor canvas coordinates; they do not change execution order.
        - `x` number, required: Horizontal canvas coordinate.
        - `y` number, required: Vertical canvas coordinate.
      - `type` string, required: Registered campaign block type.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract.md) - [All operations](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/llms.txt) - [OpenAPI document](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/revisions/c80e903ef8f3?raw)
