---
title: "POST /tables"
method: POST
path: "/tables"
---

# POST /tables

`POST /tables`

Creates a new Big Table

## Query parameters

- `name` string — Name of the table. Required when the name is not passed in the request body. It is an error to pass a name in both this query parameter and the request body.
- `appsToLink` string[] — An array of app IDs to link the new table to.
- `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.

## Request body

- union
  - object
    - `name` string, required — Name of the table, e.g., `Invoices`
    - `schema` object — The schema of the table as a collection of column definitions. If this is not provided, the schema will be inferred from the data.
      - `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`
    - `appsToLink` string[] — An array of app IDs to link the new table to.
  - 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 `201`

- object
  - `data` object, required
    - `tableID` string, required — ID of the table, e.g., `2a1bad8b-cf7c-44437-b8c1-e3782df6`
    - `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" ] ```
    - `linkedAppIDs` string[] — An array of appIDs which were successfully linked.

## Other responses

- `202`
- `400`
- `402`
- `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-18** `d33dfbf12a0e` — 2 info
  - added the new optional `header` request parameter `x-glide-asynchronous`
  - added the success response with the status `202`
- **2025-05-16** `c8ebed464bab` — 1 warning, 3 info
  - removed the request property `anyOf[subschema #1]/linkToApps`
  - added the new optional `query` request parameter `appsToLink`
  - added the new optional request property `anyOf[subschema #1]/appsToLink`
  - added the optional property `data/linkedAppIDs` to the response with the `201` status
- **2025-05-13** `6609e3eedaa5` — 1 info
  - added the new optional request property `anyOf[subschema #1]/linkToApps`
- **2025-04-17** `22782d914dc3` — 1 info
  - added the non-success response with the status `402`

[Full history](https://skmtc.dev/glideapps/apis/untitled-api/changes/tables/post.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)
