---
title: "Update a Tulip Table"
slug: "update-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.

# Update a Tulip Table

Put/tables/{tableId}

Updates a Tulip Table's metadata and schema. If the update is successful, the Table's `updatedAt` will be set to the current time and `updatedBy` will be set to your user id.

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.

Path parameterstableIdstringRequired

The id of a Tulip Table.

Pattern^[a-zA-Z0-9_]+$Exampleg56RCoZCtzv7borvp

Body parameters

The spec for updating a Tulip Table. The spec must include all existing columns of the Table, including the `id` column. The data type of existing columns cannot be changed. If you wish to change a column's type, hide the existing column and make a new column with the desired type.

<select class='api-response-data' aria-label='Media type'><option value='49fe94c3-a2e1-4bed-9287-11d4c12d6dff'>application/json</option>
</select>Expand Allobject  labelstring    Required

The display label for this Table.

Min length1Max length255
descriptionstring    Required

A long-form description for this Table.

deletedboolean    

Whether the Table should be hidden from the Tulip Tables UI. If not specified, the Table's `deleted` status is unchanged.

columns Array of object   

The updated columns of the Table. All existing columns must be mentioned, including the `id` column.

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.

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

The display label for this column.

Min length1Max length255
descriptionstring    Required

A long-form description for this 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. The `id` column cannot be hidden.

uniqueboolean    Required

Whether the values in the column must be unique. This property cannot be changed on existing columns.

Responses200

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

<select class='api-response-data' aria-label='Media type'><option value='29d74f50-7cec-496d-86ce-656994ff7e73'>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='c247dccf-fd9f-4228-9815-c81ec87281aa'>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='38acccc6-92ce-4517-b5b6-c7ac4a49cf17'>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='96d76177-1e38-4cc5-970b-4f85f95c714f'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

404

The requested database entry was not found.

<select class='api-response-data' aria-label='Media type'><option value='e41c0ee0-4aac-42f5-9b20-9f9a7808e262'>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='e81ab413-533f-4d63-a6d3-53f9a7c8d294'>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='60695d4c-dd0c-4dfa-aaa0-f904b4558e19'>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='4526855a-657f-4bf2-a7bc-014e6aec6ecd'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring
