---
title: "PUT /tables/{tableID}"
method: PUT
path: "/tables/{tableID}"
---

# PUT /tables/{tableID}

`PUT /tables/{tableID}`

Replaces the schema and/or data of a Big Table

## Path parameters

- `tableID` string, required — ID of the table, e.g., `2a1bad8b-cf7c-44437-b8c1-e3782df6`

## Query parameters

- `onSchemaError` 'abort' | 'dropColumns' | 'updateSchema' — The action to take when the passed data does not match the table schema: - `abort`: Abort the entire operation and return an error. - `dropColumns`: Ignore the data that caused the error, and do not import those columns in the affected rows. - `updateSchema`: Update the schema as needed to add any missing columns or widen the data types of existing columns, and then import the data from them.

## Headers

- `x-glide-asynchronous` 'true' | 'false' — Allow asynchronous processing, which will return a job ID. Note that this does not force asynchronouys processing. The caller must handle both synchronous and asynchronous responses.
- `if-match` string — ETag of the current table version. If provided, the request will fail if the table has been updated since the given version. See [Data Versioning](/api-reference/v2/tables/versioning).

## Request body

- union
  - object
    - `schema` object — The schema of the table as a collection of column definitions.
      - `columns` object[], required — A collection of column definitions, in the order that they are to be displayed in the table.
        - `id` string, required — Internal ID of the column, e.g., `fullName`. This value cannot be changed once created.
        - `displayName` string — Human-readable display name of the column, e.g., `Full Name`. Can be modified once created.
        - `type` union, required — The type of the column.
          - 'string' | 'uri' | 'imageURI' | 'audioURI' | 'markdown' | 'phoneNumber' | 'emailAddress' | 'emoji' | 'date' | 'time' | 'dateTime' | 'duration' | 'number' | 'boolean' | 'json'
          - object
            - `kind` 'string' | 'uri' | 'imageURI' | 'audioURI' | 'markdown' | 'phoneNumber' | 'emailAddress' | 'emoji' | 'date' | 'time' | 'dateTime' | 'duration' | 'number' | 'boolean' | 'json', required
          - object
            - `kind` 'array', required
            - `items` object, required
              - …
    - `rows` union, required
      - object[] — A collection of row objects conforming to the schema of the table where keys are the column IDs and values are the column values: ```json [ { "fullName": "Alex Bard", "invoiceDate": "2024-07-29T14:04:15.561Z", "totalAmount": 34.50, "amountPaid": 0 }, { "fullName": "Alicia Hines", "invoiceDate": "2023-06-15T10:30:00.000Z", "totalAmount": 50.75, "amountPaid": 20 } ] ```
      - object — A single reference to a [stash](/api-reference/v2/stashing) whose data should be used.
        - `$stashID` string, required — ID of the stash, e.g., `20240215-job32`
  - object[] — A collection of row objects conforming to the schema of the table where keys are the column IDs and values are the column values: ```json [ { "fullName": "Alex Bard", "invoiceDate": "2024-07-29T14:04:15.561Z", "totalAmount": 34.50, "amountPaid": 0 }, { "fullName": "Alicia Hines", "invoiceDate": "2023-06-15T10:30:00.000Z", "totalAmount": 50.75, "amountPaid": 20 } ] ```

## Response `200`

- object
  - `data` object, required
    - `rowIDs` string[], required — Row IDs of added rows, returned in the same order as the input rows, e.g., ```json [ "zcJWnyI8Tbam21V34K8MNA", "93a19-cf7c-44437-b8c1-e9acbbb" ] ```

## Other responses

- `202`
- `400`
- `402`
- `404`
- `412`
- `422`

## Changes

- **2025-09-30** `c9686e65ffb6` — 1 breaking, 1 info
  - removed `subschema #1, subschema #2` from the `anyOf[subschema #1]/schema/columns/items/type` request property `anyOf` list
  - added `subschema #1, subschema #2` to the `anyOf[subschema #1]/schema/columns/items/type` request property `anyOf` list
- **2025-09-22** `0d706382896f` — 1 breaking, 1 info
  - removed the required property `data/workflowID` from the response with the `202` status
  - added the required property `data/jobID` to the response with the `202` status
- **2025-09-18** `d33dfbf12a0e` — 2 info
  - added the new optional `header` request parameter `x-glide-asynchronous`
  - added the success response with the status `202`
- **2025-04-17** `22782d914dc3` — 1 info
  - added the non-success response with the status `402`
- **2025-04-01** `afa4b5b8dc78` — 1 info
  - removed the non-success response with the status `402`

[Full history](https://skmtc.dev/glideapps/apis/untitled-api/changes/tables/:tableID/put.md)

---

[API](https://skmtc.dev/glideapps/apis/untitled-api.md) · [All operations](https://skmtc.dev/glideapps/apis/untitled-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/glideapps/untitled-api/revisions/ecab03a9d56a/schema)
