---
title: "Commit changes to a specified Delta table. The server has a limit defined in config on how many unbackfilled commits it can hold. Clients are expected to do active backfill of the commit after committing to UC. So in most cases the number of unbackfilled commits should be close to zero or one. But if clients misbehave and unbackfilled commits accumulate beyond the limit, server will reject further commits until more backfill is done. Replaying an already-accepted commit (same version and file-name) is an idempotent no-op that returns 200, so a client that lost the response can safely resend. WARNING: This API is experimental and may change in future versions."
method: POST
path: "/delta/preview/commits"
tags: ["DeltaCommits"]
---

# Commit changes to a specified Delta table. The server has a limit defined in config on how many unbackfilled commits it can hold. Clients are expected to do active backfill of the commit after committing to UC. So in most cases the number of unbackfilled commits should be close to zero or one. But if clients misbehave and unbackfilled commits accumulate beyond the limit, server will reject further commits until more backfill is done. Replaying an already-accepted commit (same version and file-name) is an idempotent no-op that returns 200, so a client that lost the response can safely resend. WARNING: This API is experimental and may change in future versions.

`POST /delta/preview/commits`

## Request

- Base URL: `http://localhost:8080/api/2.1/unity-catalog`
- URL: `http://localhost:8080/api/2.1/unity-catalog/delta/preview/commits`
- Auth: none declared

## Request body

- DeltaCommit: Request body for committing changes to a specified Delta table. At least one of commit_info and latest_backfilled_version must be present.
  - `table_id` string, required: The ID of the table to commit to. This ID uniquely identifies a table.
  - `table_uri` string, required: The URI of the storage location of the table. If the table_id exists but the table_uri is different from the one previously registered (e.g., if the client moved the table), the request will fail. Example: s3://bucket-name/tables/some-table-id
  - `commit_info` DeltaCommitInfo: Represents a Delta commit version.
    - `version` integer, required: The version of this commit.
    - `timestamp` integer, required: The timestamp for when the commit was made. This is the in-commit timestamp as produced by the Delta client writing to the table.
    - `file_name` string, required: The filename of the UUID-based commit file.
    - `file_size` integer, required: The size of the commit file in bytes.
    - `file_modification_timestamp` integer, required: The modification time of the commit file. This is the mod time of the file as written to the file system.
  - `latest_backfilled_version` integer: The highest version of the commits that have been backfilled for this table; meaning UC no longer needs to keep track of commits of versions <= this version.
  - `metadata` DeltaMetadata: Represents a Delta metadata action (see https://github.com/delta-io/delta/blob/master/PROTOCOL.md#change-metadata for more information).
    - `description` string: The table comment.
    - `schema` ColumnInfos: The schema of the table.
      - `columns` ColumnInfo[]: The array of column descriptions.
        - `name` string: Name of Column.
        - `type_text` string: Full data type specification as SQL/catalogString text.
        - `type_json` string: Full data type specification, JSON-serialized.
        - `type_name` 'BOOLEAN' | 'BYTE' | 'SHORT' | 'INT' | 'LONG' | 'FLOAT' | 'DOUBLE' | 'DATE' | 'TIMESTAMP' | 'TIMESTAMP_NTZ' | 'STRING' | 'BINARY' | 'DECIMAL' | 'INTERVAL' | 'ARRAY' | 'STRUCT' | 'MAP' | 'VARIANT' | 'CHAR' | 'NULL' | 'USER_DEFINED_TYPE' | 'TABLE_TYPE': Name of type (INT, STRUCT, MAP, etc.).
        - `type_precision` integer: Digits of precision; required for DecimalTypes.
        - `type_scale` integer: Digits to right of decimal; Required for DecimalTypes.
        - `type_interval_type` string: Format of IntervalType.
        - `position` integer: Ordinal position of column (starting at position 0).
        - `comment` string: User-provided free-form text description.
        - `nullable` boolean: Whether field may be Null.
        - `partition_index` integer: Partition index for column.
    - `properties` DeltaCommitMetadataProperties: The properties of the Delta table. Updated by UC if set.
      - `properties` SecurablePropertiesMap: A map of key-value properties attached to the securable.
  - `uniform` DeltaUniform: Uniform metadata that can be atomically committed alongside a Delta commit. Uniform enables Delta tables to be read by other table formats (e.g. Iceberg) without data conversion. When this message is provided in a Commit request, UC will atomically update the table's format-specific metadata during the commit.
    - `iceberg` DeltaUniformIceberg, required: Iceberg conversion metadata tracking the Delta-to-Iceberg conversion state. It contains the metadata location pointer, converted Delta version, timestamp, and optional base converted Delta version of the corresponding conversion.
      - `metadata_location` string, uri, required: The latest Iceberg metadata location. Example: s3://abc/def/metadata/v1.json
      - `converted_delta_version` integer, required: The Delta version that was converted to Iceberg to produce the Iceberg metadata location. It should match the Delta version in the commit info. Example: 1044
      - `converted_delta_timestamp` string, required: The timestamp that Delta finished conversion to produce the Iceberg metadata location. The string must represent a valid instant in UTC with ISO 8601 format. Example: 2025-01-04T03:13:11.423Z
      - `base_converted_delta_version` integer: Optional Delta version used to incrementally convert Delta changes to Iceberg changes to produce the latest Iceberg metadata at the metadata_location. Example: 1042

## Response `200`

Successful response

- DeltaCommitResponse: The response for the Delta commit action

## Other responses

- `400`: Bad request or Invalid Argument. Example: Commit version is not expected (e.g., latest_table_version +1) or Latest backfilled version exceeds the last commit version or table_uri in the request doesn't match the existing table_uri for the table.
- `401`: Unauthorized. Authentication credentials are missing or incorrect.
- `403`: Forbidden. The user does not have the necessary permissions to perform this action.
- `404`: Not Found. The specified table does not exist.
- `409`: Conflict. Indicates that a different commit with the same version already exists.
- `429`: The maximum number of unbackfilled commits per table has been reached. Please backfill some commits before retrying.
- `500`: Internal Server Error. An unexpected error occurred on the server.
- `501`: Not Implemented. The requested functionality is not supported.

## Changes

- **2026-03-23** `a3a215e58c0f`: 1 info
  - added the new `VARIANT` enum value to the request property `metadata/schema/columns/items/type_name`
- **2026-02-09** `5e6e334f02bc`: 1 info
  - added the new optional request property `uniform`
- **2025-11-13** `9bf8ea0ab2f4`: 2 info
  - api tag `DeltaCommits` added
  - api tag `CoordinatedCommits` removed
- **2025-11-07** `70b8941c5703`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/unitycatalog/apis/unity-catalog-api/changes/delta/preview/commits/post.md)

---

[API](https://skmtc.dev/unitycatalog/apis/unity-catalog-api.md) - [All operations](https://skmtc.dev/unitycatalog/apis/unity-catalog-api/llms.txt) - [OpenAPI document](https://skmtc.dev/unitycatalog/apis/unity-catalog-api/revisions/c84507f0d7e0?raw)
