---
title: "Create a Tulip Table"
slug: "create-a-tulip-table"
updated: 2026-04-02T17:37:08Z
published: 2026-04-02T17:37:27Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.tulip.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Tulip Table

Post/tables

Creates a new Tulip Table.

Requires the `tables:write` API key scope.

SecurityHTTPType basic

Access to the Tulip API requires the use of [HTTP Basic Authentication](https://datatracker.ietf.org/doc/html/rfc7617) using the credentials of an active [Tulip API Token](https://support.tulip.co/docs/set-up-a-tulip-api). All requests require the `Authorization` HTTP header with the `Basic` scheme to provide API credentials unless otherwise noted.

API tokens can be configured with a set of *scopes* which determine what parts of the API that specific token has access to. Security best practices dictate that API credentials be given the minimum set of capabilities required to fulfill their intended purpose. For example, an API token created for use in an integration that is only designed to use the Tables API should probably only be given the `tables:read` and `tables:write` scopes. In this way you can minimize risk in the event that API credentials are compromised. API endpoints will document what API token scopes are required to access that endpoint in their descriptions. If a request is made to an endpoint with an API token which does not have the required scopes, the response will be an authorization error.

Body parameters

The spec for creating a Tulip Table.

<select class='api-response-data' aria-label='Media type'><option value='4e6b71f5-f0fb-4266-b894-9fa542ab5d7b'>application/json</option>
</select>Expand Allobject  labelstring    Required

The display label for the Table.

Min length1Max length255
descriptionstring    Required

A long-form description for the Table.

columns Array of object   Max length200object  namestring    Required

The name of the column. Must start with a letter and contain only letters, numbers, and underscores. Must be unique to this Table. The name `id` is reserved and cannot be specified when creating a Tulip Table.

Min length1Max length50Pattern^[a-zA-Z][a-zA-Z0-9_]+$
labelstring    Required

The display label for the column.

Min length1Max length255
descriptionstring    Required

A long-form description for the column.

dataTypeobject (TypedObjectType)  Required

The type of a value in Tulip.

typestring    RequiredValid values[
  "boolean",
  "string",
  "float",
  "integer",
  "interval",
  "timestamp",
  "imageUrl",
  "user",
  "color"
]ExampleimageUrl

hiddenboolean    Required

Whether the column should be hidden in the Tulip Tables UI.

uniqueboolean    Required

Whether the values in the column must be unique. This property must always be `false` for columns except `id`.

Valid values[
  false
]

Responses201

The Tulip Table was created successfully. The details of the created Table are returned in the response.

HeadersLocationstringRequiredA relative URL at which the details of the created Table can be fetched.

<select class='api-response-data' aria-label='Media type'><option value='f3c1def7-f7f3-4f83-a3df-c98403834dc0'>application/json</option>
</select>Expand Allobject  Example{
  "id": "gthSX9t3tY2cJfBWe",
  "label": "Bike",
  "description": "A Bicycle",
  "createdAt": "2019-01-15T17:30:01.244Z",
  "createdBy": "N24uug8iXSTWR39rB",
  "updatedAt": "2019-01-15T17:31:20.002Z",
  "updatedBy": "N24uug8iXSTWR39rB",
  "columns": [
    {
      "name": "id",
      "label": "ID",
      "description": "",
      "dataType": {
        "type": "string"
      },
      "hidden": false,
      "unique": true
    },
    {
      "name": "ahvbb_model_number",
      "label": "Model Number",
      "description": "",
      "dataType": {
        "type": "string"
      },
      "hidden": false,
      "unique": false
    },
    {
      "name": "auznd_color",
      "label": "Color",
      "description": "",
      "dataType": {
        "type": "string"
      },
      "hidden": false,
      "unique": false
    },
    {
      "name": "irrip_completed",
      "label": "Completed",
      "description": "",
      "dataType": {
        "type": "boolean"
      },
      "hidden": false,
      "unique": false
    },
    {
      "name": "umiyk_durability_test_duration",
      "label": "Durability Test Duration",
      "description": "",
      "dataType": {
        "type": "interval"
      },
      "hidden": false,
      "unique": false
    }
  ]
}idExampleg56RCoZCtzv7borvp
createdAt
createdByExampleg56RCoZCtzv7borvp
updatedAt
updatedByExampleg56RCoZCtzv7borvp
deletedAtstring  (date-time)    
deletedBystring    Pattern^[a-zA-Z0-9_]+$Exampleg56RCoZCtzv7borvp
labelstring    

The display label for this Table.

descriptionstring    

A long-form description for this Table.

columns Array of object (TulipTableColumn)   object  Example{
  "name": "ahvbb_model_number",
  "label": "Model Number",
  "description": "",
  "dataType": {
    "type": "string"
  },
  "hidden": false,
  "unique": false
}namestring    

The internal id of this column.

Pattern^[a-zA-Z][a-zA-Z0-9_]*$
labelstring    

The display label for this column.

descriptionstring    

A long-form description for this column.

dataTypeobject (TypedObjectType)  

The type of a value in Tulip.

typestring    Valid values[
  "boolean",
  "string",
  "float",
  "integer",
  "interval",
  "timestamp",
  "imageUrl",
  "user",
  "color"
]ExampleimageUrl

hiddenboolean    

Whether this column is hidden from the UI or not.

uniqueboolean    

Whether values in this column are required to be unique or not.

400

The request was malformed. This could mean that headers, query parameters, or the request body was unable to be parsed or had unexpected values.

<select class='api-response-data' aria-label='Media type'><option value='fe72c531-b503-452f-8c52-0bb664cc2649'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

401

The request was made unauthorized. HTTP Basic Authorization using a Tulip API Key is required for use of the API.

<select class='api-response-data' aria-label='Media type'><option value='63293031-b5b5-4564-a05f-3e251b740e30'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

403

The provided authentication info was rejected. The response will provide additional details.

<select class='api-response-data' aria-label='Media type'><option value='5832dee1-33ad-4638-bf57-cfd2c254fcb2'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

422

The request was malformed. This could mean that headers, query parameters, or the request body was unable to be parsed or had unexpected values.

<select class='api-response-data' aria-label='Media type'><option value='0935e768-d015-4646-88ce-7bdf932d82da'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

429

The limit for this asset has been reached.

<select class='api-response-data' aria-label='Media type'><option value='6a7bf046-0c26-44df-af12-dcc2a4af584b'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

500

The server encountered an unexpected error.

<select class='api-response-data' aria-label='Media type'><option value='e68cb219-e962-4838-b22c-f3e7a89915da'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring
