---
title: "Promote Sequence Source Rows"
method: POST
path: "/api/sequences/{sequence_id}/sources/{source_node_id}/promote"
tags: ["sequences"]
---

# Promote Sequence Source Rows

`POST /api/sequences/{sequence_id}/sources/{source_node_id}/promote`

## Request

- Base URL: `https://platform.verbiflow.com/api/bridge`
- URL: `https://platform.verbiflow.com/api/bridge/api/sequences/{sequence_id}/sources/{source_node_id}/promote`
- 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
- `source_node_id` string, required

## Request body

- SequenceSourcePromoteRequest
  - `column_mapping` object
  - `draft_id` string, required
  - `expected_draft_version` integer, required
  - `ingress_id` string, nullable
  - `list_name` string, nullable
  - `override_existing` boolean
  - `reapply_mapping` boolean
  - `row_identifiers` string[]
  - `source_run_id` string, nullable

## Response `200`

Successful Response

- SequenceLeadImportStatusPayload: Durable status, schema, and counts for one campaign audience import.
  - `counts` SequenceLeadImportCountsPayload, required: Current imported audience counts by materialization and eligibility state.
    - `bounce_protected` integer: Rows held by email delivery-risk policy.
    - `deleted` integer, required: Rows removed from the import.
    - `duplicates` integer, required: Rows suppressed as duplicates.
    - `enrolled` integer, required: Rows admitted to campaign runtime.
    - `excluded` integer: Rows held by exclusion policy.
    - `failed` integer, required: Rows whose materialization or enrollment failed.
    - `not_eligible` integer, required: Rows rejected by audience eligibility policy.
    - `pending_enrollment` integer, required: Materialized rows waiting for enrollment.
    - `total` integer, required: All non-deleted rows in the import.
    - `user_manual_hold` integer: Rows paused by an explicit user hold.
  - `deleted_row_count` integer, nullable: Rows removed from the import.
  - `draft_id` string, required: Campaign draft associated with the import.
  - `draft_version` integer, required: Campaign draft version associated with the import.
  - `field_schema` ListFieldDescriptorPayload[]: Typed audience field descriptors produced by the import.
    - `available` boolean: Whether the field can be read for this audience.
    - `category` 'source_input' | 'identifier' | 'enrichment' | 'system', required: Identity, enrichment, CRM, runtime, or source field category.
    - `default_hidden` boolean: Whether the field is hidden in the default table view.
    - `default_order` integer, required: Default audience-table column order.
    - `entity` 'source' | 'contact' | 'company' | 'system', required: Contact, company, or system entity that owns the value.
    - `enum_values` ListFieldOptionPayload[]: Allowed values for an enumerated field.
      - `label` string, required: Human-readable enum label.
      - `value` string, required: Stored enum value.
    - `field_key` string, required: Stable field key used in row cells and filters.
    - `filterable` boolean: Whether server-side filters support the field.
    - `hidden_reason` 'synthetic_consumed' | 'low_signal' | 'system_internal' | 'not_applicable', nullable: Reason the field is hidden or unavailable.
    - `json_path` string, nullable: Canonical JSON path used to project the value.
    - `label` string, required: Human-readable column label.
    - `origin` 'static' | 'source_input' | 'import_mapping' | 'enrichment' | 'system' | 'projection', required: System, source, enrichment, or CRM origin of the field.
    - `pinned_hint` 'left' | 'right', nullable: Suggested left or right pinning behavior.
    - `provider_key` string, nullable: Provider property key, when the field comes from a provider.
    - `provider_subfield` string, nullable: Nested provider property path, when applicable.
    - `searchable` boolean: Whether text search indexes the field.
    - `sortable` boolean: Whether server-side sorting supports the field.
    - `source_column_index` integer, nullable: Original zero-based source-column order.
    - `source_column_name` string, nullable: Original uploaded or provider source-column name.
    - `storage_kind` 'first_class' | 'contact_enrichment_json' | 'company_enrichment_json' | 'source_row' | 'system' | 'projection', required: Canonical storage location for the value.
    - `value_kind` 'string' | 'number' | 'boolean' | 'date' | 'enum' | 'string_list' | 'number_list' | 'enum_list' | 'json': String, number, boolean, date, enum, or structured value kind.
    - `width_hint` string, nullable: Suggested table-column width in pixels.
  - `filtered_out_row_count` integer, nullable: Rows removed by import filters.
  - `finalized_row_count` integer, nullable: Rows with final materialization outcomes.
  - `import_status` 'accepted' | 'processing' | 'completed' | 'failed', required: Current durable import state.
  - `ingress_id` string, nullable: Operational source ingress that owns the import.
  - `is_terminal` boolean, required: Whether import materialization reached a terminal state.
  - `lead_list_id` string, required: Lead list created for this import.
  - `lead_list_ids` string[]: Lead lists currently attached to the campaign.
  - `list_name` string, required: Human-readable lead-list name.
  - `processed_count` integer, required: Rows processed by the materialization workflow.
  - `raw_row_count` integer, nullable: Source rows received before mapping and filtering.
  - `reapplied_count` integer, nullable: Existing draft rows refreshed by an override import.
  - `reapply_skipped_enrolled_count` integer, nullable: Enrolled rows left unchanged by override safety policy.
  - `schema_hash` string, nullable: Digest of the imported audience field schema.
  - `sequence_id` string, required: Campaign that owns the import.
  - `source_kind` string, nullable: Source adapter that produced the import.
  - `source_node_id` string, nullable: Workflow source node that owns the ingress.
  - `source_run_id` string, nullable: Immutable source execution represented by the import.
  - `workflow_error` string, nullable: Sanitized terminal materialization error.
  - `workflow_id` string, nullable: Durable materialization workflow id.
  - `workflow_phase` string, nullable: Current materialization phase.
  - `workflow_progress_current` integer, nullable: Source rows processed.
  - `workflow_progress_total` integer, nullable: Source rows admitted to materialization.
  - `workflow_summary` SequenceAudienceMaterializationWorkflowSummaryPayload: Incremental source materialization counts; empty before the first progress update.
    - `duplicate_count` integer: Source rows suppressed as duplicates.
    - `failed_count` integer: Source rows whose materialization failed.
    - `materialized_count` integer: Source rows converted into audience rows.
    - `pending_count` integer: Source rows still waiting for processing.
    - `processed_count` integer: Source rows with a current classification.
    - `processing_count` integer: Source rows currently leased by a worker.
    - `total_count` integer: Source rows admitted to materialization.
  - `workflow_task_queue` string, nullable: Worker queue assigned to the materialization workflow.

## 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)
