---
title: "Create a Tableflow Topic"
method: POST
path: "/tableflow/v1/tableflow-topics"
tags: ["Tableflow Topics (tableflow/v1)"]
---

# Create a Tableflow Topic

`POST /tableflow/v1/tableflow-topics`

[![General Availability](https://img.shields.io/badge/Lifecycle%20Stage-General%20Availability-%2345c6e8)](#section/Versioning/API-Lifecycle-Policy)

Make a request to create a tableflow topic.

## Request body

- object — A Tableflow Topic represents configuration related to a Tableflow enabled kafka topic ## The Tableflow Topics Model <SchemaDefinition schemaRef="#/components/schemas/tableflow.v1.TableflowTopic" />
  - `api_version` 'tableflow/v1' — APIVersion defines the schema version of this representation of a resource.
  - `kind` 'TableflowTopic' — Kind defines the object this REST resource represents.
  - `metadata` object — ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.
    - `self` string, uri, required — Self is a Uniform Resource Locator (URL) at which an object can be addressed. This URL encodes the service location, API version, and other particulars necessary to locate the resource at a point in time
    - `resource_name` string, uri — Resource Name is a Uniform Resource Identifier (URI) that is globally unique across space and time. It is represented as a Confluent Resource Name
    - `created_at` string, date-time — The date and time at which this object was created. It is represented in RFC3339 format and is in UTC.
    - `updated_at` string, date-time — The date and time at which this object was last updated. It is represented in RFC3339 format and is in UTC.
    - `deleted_at` string, date-time — The date and time at which this object was (or will be) deleted. It is represented in RFC3339 format and is in UTC.
  - `spec` object, required — The desired state of the Tableflow Topic
    - `display_name` string, required — The name of the Kafka topic for which Tableflow is enabled.
    - `suspended` boolean — Indicates whether the Tableflow should be suspended. The API allows setting it only to `false` i.e., to resume the Tableflow. Pausing the Tableflow on-demand is not currently supported.
    - `config` TableflowV1TableFlowTopicConfigsSpec — The configs for the Tableflow enabled topic
      - `enable_compaction` boolean — This flag determines whether to enable compaction for the Tableflow enabled topic.
      - `enable_partitioning` boolean — This flag determines whether to enable partitioning for the Tableflow enabled topic.
      - `retention_ms` string, int64 — The maximum age, in milliseconds, of snapshots (for Iceberg) or versions (for Delta) to retain in the table for the Tableflow-enabled topic (snapshot/version expiration). The default value is "604800000" milliseconds (equivalent to 7 days). The minimum allowed value is "86400000" milliseconds (equivalent to 24 hours).
      - `data_retention_ms` string, int64 — The maximum age, in milliseconds, of data to retain in the table for the Tableflow-enabled topic. The minimum allowed non-zero value is "2592000000" milliseconds (equivalent to 30 days). Set to "0" to disable data retention (keep all data indefinitely). Note - The attribute is in a [Limited Availability lifecycle stage](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)
      - `record_failure_strategy` string — The strategy to handle record failures in the Tableflow enabled topic during materialization. For `SKIP`, we skip the bad records and move to the next record, and for `SUSPEND`, we suspend the materialization of the topic.
      - `error_handling` union — The error mode to handle record failures in the Tableflow enabled topic during materialization. for `SKIP`, we skip the bad records and move to the next record, for `SUSPEND`, we suspend the materialization of the topic, and for `LOG`, we log the bad records to the DLQ and continue processing the rest of the records.
        - object — Configuration for the `SUSPEND` error handling mode.
          - `mode` 'SUSPEND', required — The error handling mode for the Tableflow enabled topic. In this mode, the materialization of the topic is suspended in case of record failures.
        - object — Configuration for the `SKIP` error handling mode.
          - `mode` 'SKIP', required — The error handling mode for the Tableflow enabled topic. In this mode, the bad records are skipped and the materialization continues with the next record.
        - object — Configuration for the `LOG` error handling mode.
          - `mode` 'LOG', required — The error handling mode for the Tableflow enabled topic. In this mode, the bad records are logged to a dead-letter queue (DLQ) topic and the materialization continues with the next record.
          - `target` string — The topic to which the bad records will be logged in case of `LOG` error handling mode. Creates the topic if it doesn't already exist; otherwise, the operation is idempotent and no action is taken. Default topic is `error_log`.
    - `storage` union, required — The storage config
      - object — The Tableflow storage config for BYOB enabled topic in AWS
        - `kind` 'ByobAws', required — The storage type
        - `bucket_name` string, required — Bucket name
        - `bucket_region` string — Bucket region
        - `provider_integration_id` string, required — The provider integration id
        - `table_path` string — The current storage path where the data and metadata is stored for this table
      - object — The storage config for confluent managed Tableflow enabled topic.
        - `kind` 'Managed', required — The storage type.
        - `table_path` string — The current storage path where the data and metadata is stored for this table
      - object — The Tableflow storage config for customer-owned Azure Data Lake Storage Gen2
        - `kind` 'AzureDataLakeStorageGen2', required — The storage type.
        - `storage_account_name` string, required — Storage Account Name
        - `container_name` string, required — Container name
        - `storage_region` string — Storage account region
        - `provider_integration_id` string, required — The provider integration id
        - `table_path` string — The current storage path where the data and metadata is stored for this table
    - `table_formats` string[] — The supported table formats for the Tableflow-enabled topic.
    - `environment` object, required — The environment to which the target Kafka cluster belongs.
      - `id` string, required — ID of the referred resource
      - `related` string, uri, required — API URL for accessing or modifying the referred object
      - `resource_name` string, uri, required — CRN reference to the referred resource
    - `kafka_cluster` object, required — The kafka cluster of the topic for which Tableflow is enabled
      - `id` string, required — ID of the referred resource
      - `environment` string — Environment of the referred resource, if env-scoped
      - `related` string, uri, required — API URL for accessing or modifying the referred object
      - `resource_name` string, uri, required — CRN reference to the referred resource
  - `status` TableflowV1TableflowTopicStatus — The status of the Tableflow Topic
    - `phase` string — The lifecycle phase of the Tableflow: PENDING: Tableflow setup is pending; RUNNING: Tableflow is currently running; FAILED: Tableflow failed
    - `error_message` string — Displayable error message if Tableflow topic is in an error state
    - `catalog_sync_statuses` TableflowV1CatalogSyncStatus[] — List of associated catalogs and their synchronization statuses for this Tableflow topic.
      - `catalog_integration_id` string — The ID of the catalog integration
      - `catalog_type` string — The type of the external catalog
      - `sync_status` string — The current synchronization status: PENDING: sync is pending; SYNCED: successfully synced; FAILED: sync failed; DISCONNECTED: catalog integration is disconnected.
      - `error_message` string, nullable — Error message if the sync failed. This field is only present when `sync_status` is `FAILED`.
    - `failing_table_formats` object[] — List of failing table formats for the Tableflow-enabled topic, including error details.
      - `format` string, required — The name of the table format (e.g., DELTA, ICEBERG).
      - `error_message` string, required — The error message for the failing table format.
    - `write_mode` string, required — The write mode for the Tableflow-enabled topic, determining how data is written to the table.

## Response `202`

A Tableflow Topic is being created.

- object — A Tableflow Topic represents configuration related to a Tableflow enabled kafka topic ## The Tableflow Topics Model <SchemaDefinition schemaRef="#/components/schemas/tableflow.v1.TableflowTopic" />
  - `api_version` 'tableflow/v1' — APIVersion defines the schema version of this representation of a resource.
  - `kind` 'TableflowTopic' — Kind defines the object this REST resource represents.
  - `metadata` object — ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.
    - `self` string, uri, required — Self is a Uniform Resource Locator (URL) at which an object can be addressed. This URL encodes the service location, API version, and other particulars necessary to locate the resource at a point in time
    - `resource_name` string, uri — Resource Name is a Uniform Resource Identifier (URI) that is globally unique across space and time. It is represented as a Confluent Resource Name
    - `created_at` string, date-time — The date and time at which this object was created. It is represented in RFC3339 format and is in UTC.
    - `updated_at` string, date-time — The date and time at which this object was last updated. It is represented in RFC3339 format and is in UTC.
    - `deleted_at` string, date-time — The date and time at which this object was (or will be) deleted. It is represented in RFC3339 format and is in UTC.
  - `spec` object, required — The desired state of the Tableflow Topic
    - `display_name` string, required — The name of the Kafka topic for which Tableflow is enabled.
    - `suspended` boolean — Indicates whether the Tableflow should be suspended. The API allows setting it only to `false` i.e., to resume the Tableflow. Pausing the Tableflow on-demand is not currently supported.
    - `config` TableflowV1TableFlowTopicConfigsSpec — The configs for the Tableflow enabled topic
      - `enable_compaction` boolean — This flag determines whether to enable compaction for the Tableflow enabled topic.
      - `enable_partitioning` boolean — This flag determines whether to enable partitioning for the Tableflow enabled topic.
      - `retention_ms` string, int64 — The maximum age, in milliseconds, of snapshots (for Iceberg) or versions (for Delta) to retain in the table for the Tableflow-enabled topic (snapshot/version expiration). The default value is "604800000" milliseconds (equivalent to 7 days). The minimum allowed value is "86400000" milliseconds (equivalent to 24 hours).
      - `data_retention_ms` string, int64 — The maximum age, in milliseconds, of data to retain in the table for the Tableflow-enabled topic. The minimum allowed non-zero value is "2592000000" milliseconds (equivalent to 30 days). Set to "0" to disable data retention (keep all data indefinitely). Note - The attribute is in a [Limited Availability lifecycle stage](https://docs.confluent.io/cloud/current/api.html#section/Versioning/API-Lifecycle-Policy)
      - `record_failure_strategy` string — The strategy to handle record failures in the Tableflow enabled topic during materialization. For `SKIP`, we skip the bad records and move to the next record, and for `SUSPEND`, we suspend the materialization of the topic.
      - `error_handling` union — The error mode to handle record failures in the Tableflow enabled topic during materialization. for `SKIP`, we skip the bad records and move to the next record, for `SUSPEND`, we suspend the materialization of the topic, and for `LOG`, we log the bad records to the DLQ and continue processing the rest of the records.
        - object — Configuration for the `SUSPEND` error handling mode.
          - `mode` 'SUSPEND', required — The error handling mode for the Tableflow enabled topic. In this mode, the materialization of the topic is suspended in case of record failures.
        - object — Configuration for the `SKIP` error handling mode.
          - `mode` 'SKIP', required — The error handling mode for the Tableflow enabled topic. In this mode, the bad records are skipped and the materialization continues with the next record.
        - object — Configuration for the `LOG` error handling mode.
          - `mode` 'LOG', required — The error handling mode for the Tableflow enabled topic. In this mode, the bad records are logged to a dead-letter queue (DLQ) topic and the materialization continues with the next record.
          - `target` string — The topic to which the bad records will be logged in case of `LOG` error handling mode. Creates the topic if it doesn't already exist; otherwise, the operation is idempotent and no action is taken. Default topic is `error_log`.
    - `storage` union, required — The storage config
      - object — The Tableflow storage config for BYOB enabled topic in AWS
        - `kind` 'ByobAws', required — The storage type
        - `bucket_name` string, required — Bucket name
        - `bucket_region` string — Bucket region
        - `provider_integration_id` string, required — The provider integration id
        - `table_path` string — The current storage path where the data and metadata is stored for this table
      - object — The storage config for confluent managed Tableflow enabled topic.
        - `kind` 'Managed', required — The storage type.
        - `table_path` string — The current storage path where the data and metadata is stored for this table
      - object — The Tableflow storage config for customer-owned Azure Data Lake Storage Gen2
        - `kind` 'AzureDataLakeStorageGen2', required — The storage type.
        - `storage_account_name` string, required — Storage Account Name
        - `container_name` string, required — Container name
        - `storage_region` string — Storage account region
        - `provider_integration_id` string, required — The provider integration id
        - `table_path` string — The current storage path where the data and metadata is stored for this table
    - `table_formats` string[] — The supported table formats for the Tableflow-enabled topic.
    - `environment` object, required — The environment to which the target Kafka cluster belongs.
      - `id` string, required — ID of the referred resource
      - `related` string, uri, required — API URL for accessing or modifying the referred object
      - `resource_name` string, uri, required — CRN reference to the referred resource
    - `kafka_cluster` object, required — The kafka cluster of the topic for which Tableflow is enabled
      - `id` string, required — ID of the referred resource
      - `environment` string — Environment of the referred resource, if env-scoped
      - `related` string, uri, required — API URL for accessing or modifying the referred object
      - `resource_name` string, uri, required — CRN reference to the referred resource
  - `status` TableflowV1TableflowTopicStatus, required — The status of the Tableflow Topic
    - `phase` string — The lifecycle phase of the Tableflow: PENDING: Tableflow setup is pending; RUNNING: Tableflow is currently running; FAILED: Tableflow failed
    - `error_message` string — Displayable error message if Tableflow topic is in an error state
    - `catalog_sync_statuses` TableflowV1CatalogSyncStatus[] — List of associated catalogs and their synchronization statuses for this Tableflow topic.
      - `catalog_integration_id` string — The ID of the catalog integration
      - `catalog_type` string — The type of the external catalog
      - `sync_status` string — The current synchronization status: PENDING: sync is pending; SYNCED: successfully synced; FAILED: sync failed; DISCONNECTED: catalog integration is disconnected.
      - `error_message` string, nullable — Error message if the sync failed. This field is only present when `sync_status` is `FAILED`.
    - `failing_table_formats` object[] — List of failing table formats for the Tableflow-enabled topic, including error details.
      - `format` string, required — The name of the table format (e.g., DELTA, ICEBERG).
      - `error_message` string, required — The error message for the failing table format.
    - `write_mode` string, required — The write mode for the Tableflow-enabled topic, determining how data is written to the table.

## Other responses

- `400` — Bad Request
- `401` — The request lacks valid authentication credentials for this resource.
- `403` — The access credentials were considered insufficient to grant access
- `409` — The request is in conflict with the current server state
- `422` — Validation Failed
- `429` — Rate Limit Exceeded
- `500` — Oops, something went wrong!

---

[API](https://skmtc.dev/confluent/apis/confluent-cloud-apis.md) · [All operations](https://skmtc.dev/confluent/apis/confluent-cloud-apis/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/confluent/confluent-cloud-apis/revisions/a6a73f98a698/schema)
