---
title: "List fields"
method: GET
path: "/table/{tableId}/field"
tags: ["field"]
---

# List fields

`GET /table/{tableId}/field`

Retrieve a list of fields in a table with optional filtering

## Path parameters

- `tableId` string, required

## Query parameters

- `viewId` string — The id of the view.
- `filterHidden` boolean, nullable
- `projection` string[] — If you want to get only some fields, pass in this parameter, otherwise all visible fields will be obtained

## Response `200`

Returns the list of field.

- object[]
  - `id` string, required — The id of the field.
  - `name` string, required — The name of the field. can not be duplicated in the table.
  - `type` 'singleLineText' | 'longText' | 'user' | 'attachment' | 'checkbox' | 'multipleSelect' | 'singleSelect' | 'date' | 'number' | 'rating' | 'formula' | 'rollup' | 'conditionalRollup' | 'link' | 'createdTime' | 'lastModifiedTime' | 'createdBy' | 'lastModifiedBy' | 'autoNumber' | 'button', required — The field types supported by teable.
  - `description` string — The description of the field.
  - `options` union, required — The configuration options of the field. The structure of the field's options depend on the field's type.
    - object
      - `expression` 'countall({values})' | 'counta({values})' | 'count({values})' | 'sum({values})' | 'average({values})' | 'max({values})' | 'min({values})' | 'and({values})' | 'or({values})' | 'xor({values})' | 'array_join({values})' | 'array_unique({values})' | 'array_compact({values})' | 'concatenate({values})', required
      - `timeZone` string — The time zone that should be used to format dates
      - `formatting` unknown
      - `showAs` union — According to the results of expression parsing to determine different visual effects, where strings, numbers will provide customized "show as"
        - object
          - `type` 'url' | 'email' | 'phone', required — can display as url, email or phone in string field with a button to perform the corresponding action, start a phone call, send an email, or open a link in a new tab
        - object
          - `type` 'bar' | 'ring', required — can display as bar or ring in number field with single cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
          - `showValue` boolean, required — whether to displays the specific value on the graph
          - `maxValue` number, required — the value that represents a 100% maximum value, it does not represent a hard limit on the value
        - object
          - `type` 'bar' | 'line', required — can display as bar or line in number field with multiple cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
    - object
      - `expression` 'countall({values})' | 'counta({values})' | 'count({values})' | 'sum({values})' | 'average({values})' | 'max({values})' | 'min({values})' | 'and({values})' | 'or({values})' | 'xor({values})' | 'array_join({values})' | 'array_unique({values})' | 'array_compact({values})' | 'concatenate({values})', required
      - `timeZone` string — The time zone that should be used to format dates
      - `formatting` unknown
      - `showAs` union — According to the results of expression parsing to determine different visual effects, where strings, numbers will provide customized "show as"
        - object
          - `type` 'url' | 'email' | 'phone', required — can display as url, email or phone in string field with a button to perform the corresponding action, start a phone call, send an email, or open a link in a new tab
        - object
          - `type` 'bar' | 'ring', required — can display as bar or ring in number field with single cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
          - `showValue` boolean, required — whether to displays the specific value on the graph
          - `maxValue` number, required — the value that represents a 100% maximum value, it does not represent a hard limit on the value
        - object
          - `type` 'bar' | 'line', required — can display as bar or line in number field with multiple cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
      - `baseId` string
      - `foreignTableId` string
      - `lookupFieldId` string
      - `filter` object — A filter object for complex query conditions based on fields, operators, and values. Use our visual query builder at https://app.teable.ai/developer/tool/query-builder to build filters.
      - `sort` object
        - `fieldId` string, required
        - `order` 'asc' | 'desc', required
      - `limit` integer
    - object
      - `expression` string, required — The formula including fields referenced by their IDs. For example, LEFT(4, {Birthday}) input will be returned as LEFT(4, {fldXXX}) via API.
      - `timeZone` string — The time zone that should be used to format dates
      - `formatting` unknown
      - `showAs` union — According to the results of expression parsing to determine different visual effects, where strings, numbers will provide customized "show as"
        - object
          - `type` 'url' | 'email' | 'phone', required — can display as url, email or phone in string field with a button to perform the corresponding action, start a phone call, send an email, or open a link in a new tab
        - object
          - `type` 'bar' | 'ring', required — can display as bar or ring in number field with single cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
          - `showValue` boolean, required — whether to displays the specific value on the graph
          - `maxValue` number, required — the value that represents a 100% maximum value, it does not represent a hard limit on the value
        - object
          - `type` 'bar' | 'line', required — can display as bar or line in number field with multiple cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
    - object
      - `baseId` string — the base id of the table that this field is linked to, only required for cross base link
      - `relationship` 'oneOne' | 'manyMany' | 'oneMany' | 'manyOne', required — describe the relationship from this table to the foreign table
      - `foreignTableId` string, required — the table this field is linked to
      - `lookupFieldId` string, required — the field in the foreign table that will be displayed as the current field
      - `isOneWay` boolean — whether the field is a one-way link, when true, it will not generate a symmetric field, it is generally has better performance
      - `fkHostTableName` string, required — the table name for storing keys, in many-to-many relationships, keys are stored in a separate intermediate table; in other relationships, keys are stored on one side as needed
      - `selfKeyName` string, required — the name of the field that stores the current table primary key
      - `foreignKeyName` string, required — The name of the field that stores the foreign table primary key
      - `symmetricFieldId` string — the symmetric field in the foreign table, empty if the field is a one-way link
      - `filterByViewId` string, nullable — the view id that limits the number of records in the link field
      - `visibleFieldIds` string[], nullable — the fields that will be displayed in the link field
      - `filter` object — A filter object for complex query conditions based on fields, operators, and values. Use our visual query builder at https://app.teable.ai/developer/tool/query-builder to build filters.
    - object
      - `formatting` object, required — caveat: the formatting is just a formatter, it dose not effect the storing value of the record
        - `date` string, required — the display formatting of the date. you can use the following presets: M/D/YYYY, D/M/YYYY, YYYY/MM/DD, YYYY-MM-DD, YYYY-MM, MM-DD, YYYY, MM, DD
        - `time` 'HH:mm' | 'hh:mm A' | 'None', required — the display formatting of the time. you can use the following presets: HH:mm, hh:mm A, None
        - `timeZone` string, required — The time zone that should be used to format dates
      - `defaultValue` 'now', nullable — Whether the new row is automatically filled with the current time, caveat: the defaultValue is just a flag, it dose not effect the storing value of the record
    - object
      - `defaultValue` boolean, nullable
    - object
    - object
      - `showAs` object — Only be used in single line text field or formula / rollup field with cellValueType equals String and isMultipleCellValue is not true
        - `type` 'url' | 'email' | 'phone', required — can display as url, email or phone in string field with a button to perform the corresponding action, start a phone call, send an email, or open a link in a new tab
      - `defaultValue` string, nullable
    - object
      - `icon` 'star' | 'moon' | 'sun' | 'zap' | 'flame' | 'heart' | 'apple' | 'thumb-up', required
      - `color` 'yellowBright' | 'redBright' | 'tealBright', required
      - `max` integer, required
    - object
      - `isMultiple` boolean — Allow adding multiple users
      - `shouldNotify` boolean — Notify users when their name is added to a cell
      - `defaultValue` union
        - string
        - 'me'
        - union[]
          - union
            - string
            - 'me'
        - unknown
    - object
    - object
      - `trackedFieldIds` string[]
    - object
      - `label` string, required — Button label
      - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required — Button color
      - `maxCount` number — Max count of button clicks
      - `resetCount` boolean — Reset count
      - `workflow` object, nullable — Workflow
        - `id` string — Workflow ID
        - `name` string — Workflow Name
        - `isActive` boolean — Workflow is active
      - `confirm` object, nullable — Confirm config before click
        - `title` string
        - `description` string
        - `confirmText` string
    - object
      - `expression` 'countall({values})' | 'counta({values})' | 'count({values})' | 'sum({values})' | 'average({values})' | 'max({values})' | 'min({values})' | 'and({values})' | 'or({values})' | 'xor({values})' | 'array_join({values})' | 'array_unique({values})' | 'array_compact({values})' | 'concatenate({values})', required
      - `timeZone` string — The time zone that should be used to format dates
      - `formatting` unknown
      - `showAs` union — According to the results of expression parsing to determine different visual effects, where strings, numbers will provide customized "show as"
        - object
          - `type` 'url' | 'email' | 'phone', required — can display as url, email or phone in string field with a button to perform the corresponding action, start a phone call, send an email, or open a link in a new tab
        - object
          - `type` 'bar' | 'ring', required — can display as bar or ring in number field with single cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
          - `showValue` boolean, required — whether to displays the specific value on the graph
          - `maxValue` number, required — the value that represents a 100% maximum value, it does not represent a hard limit on the value
        - object
          - `type` 'bar' | 'line', required — can display as bar or line in number field with multiple cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
      - `baseId` string
      - `foreignTableId` string
      - `lookupFieldId` string
      - `filter` object — A filter object for complex query conditions based on fields, operators, and values. Use our visual query builder at https://app.teable.ai/developer/tool/query-builder to build filters.
      - `sort` object
        - `fieldId` string, required
        - `order` 'asc' | 'desc', required
      - `limit` integer
    - object
      - `baseId` string — the base id of the table that this field is linked to, only required for cross base link
      - `relationship` 'oneOne' | 'manyMany' | 'oneMany' | 'manyOne', required — describe the relationship from this table to the foreign table
      - `foreignTableId` string, required — the table this field is linked to
      - `lookupFieldId` string, required — the field in the foreign table that will be displayed as the current field
      - `isOneWay` boolean — whether the field is a one-way link, when true, it will not generate a symmetric field, it is generally has better performance
      - `fkHostTableName` string, required — the table name for storing keys, in many-to-many relationships, keys are stored in a separate intermediate table; in other relationships, keys are stored on one side as needed
      - `selfKeyName` string, required — the name of the field that stores the current table primary key
      - `foreignKeyName` string, required — The name of the field that stores the foreign table primary key
      - `symmetricFieldId` string — the symmetric field in the foreign table, empty if the field is a one-way link
      - `filterByViewId` string, nullable — the view id that limits the number of records in the link field
      - `visibleFieldIds` string[], nullable — the fields that will be displayed in the link field
      - `filter` object — A filter object for complex query conditions based on fields, operators, and values. Use our visual query builder at https://app.teable.ai/developer/tool/query-builder to build filters.
    - object
      - `choices` object[], required
        - `id` string, required
        - `name` string, required
        - `color` string, required
      - `defaultValue` union
        - string
        - string[]
        - unknown
      - `preventAutoNewOptions` boolean
    - object
      - `formatting` union, required — Only be used in number field (number field or formula / rollup field with cellValueType equals Number
        - object
          - `precision` number, required
          - `type` 'decimal', required
        - object
          - `precision` number, required
          - `type` 'percent', required
        - object
          - `precision` number, required
          - `type` 'currency', required
          - `symbol` string, required
      - `showAs` union — Only be used in number field (number field or formula / rollup field with cellValueType equals Number
        - object
          - `type` 'bar' | 'ring', required — can display as bar or ring in number field with single cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
          - `showValue` boolean, required — whether to displays the specific value on the graph
          - `maxValue` number, required — the value that represents a 100% maximum value, it does not represent a hard limit on the value
        - object
          - `type` 'bar' | 'line', required — can display as bar or line in number field with multiple cellValue value
          - `color` 'blueLight2' | 'blueLight1' | 'blueBright' | 'blue' | 'blueDark1' | 'cyanLight2' | 'cyanLight1' | 'cyanBright' | 'cyan' | 'cyanDark1' | 'grayLight2' | 'grayLight1' | 'grayBright' | 'gray' | 'grayDark1' | 'greenLight2' | 'greenLight1' | 'greenBright' | 'green' | 'greenDark1' | 'orangeLight2' | 'orangeLight1' | 'orangeBright' | 'orange' | 'orangeDark1' | 'pinkLight2' | 'pinkLight1' | 'pinkBright' | 'pink' | 'pinkDark1' | 'purpleLight2' | 'purpleLight1' | 'purpleBright' | 'purple' | 'purpleDark1' | 'redLight2' | 'redLight1' | 'redBright' | 'red' | 'redDark1' | 'tealLight2' | 'tealLight1' | 'tealBright' | 'teal' | 'tealDark1' | 'yellowLight2' | 'yellowLight1' | 'yellowBright' | 'yellow' | 'yellowDark1', required
      - `defaultValue` number, nullable
    - object
      - `expression` 'AUTO_NUMBER()', required
    - object
      - `expression` 'CREATED_TIME()', required
      - `formatting` object, required — caveat: the formatting is just a formatter, it dose not effect the storing value of the record
        - `date` string, required — the display formatting of the date. you can use the following presets: M/D/YYYY, D/M/YYYY, YYYY/MM/DD, YYYY-MM-DD, YYYY-MM, MM-DD, YYYY, MM, DD
        - `time` 'HH:mm' | 'hh:mm A' | 'None', required — the display formatting of the time. you can use the following presets: HH:mm, hh:mm A, None
        - `timeZone` string, required — The time zone that should be used to format dates
    - object
      - `expression` 'LAST_MODIFIED_TIME()'
      - `formatting` object — caveat: the formatting is just a formatter, it dose not effect the storing value of the record
        - `date` string, required — the display formatting of the date. you can use the following presets: M/D/YYYY, D/M/YYYY, YYYY/MM/DD, YYYY-MM-DD, YYYY-MM, MM-DD, YYYY, MM, DD
        - `time` 'HH:mm' | 'hh:mm A' | 'None', required — the display formatting of the time. you can use the following presets: HH:mm, hh:mm A, None
        - `timeZone` string, required — The time zone that should be used to format dates
      - `trackedFieldIds` string[]
  - `meta` union — The metadata of the field. The structure of the field's meta depend on the field's type. Currently formula and link fields have meta.
    - object
      - `persistedAsGeneratedColumn` boolean — Whether this formula field is persisted as a generated column in the database. When true, the field value is computed and stored as a database generated column.
    - object
      - `hasOrderColumn` boolean — Whether this link field has an order column for maintaining insertion order. When true, the field uses a separate order column to preserve the order of linked records.
  - `aiConfig` union — The AI configuration of the field.
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'extraction', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'summary', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'translation', required
      - `sourceFieldId` string, required
      - `targetLanguage` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'improvement', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'customization', required
      - `prompt` string, required — The prompt to use for the AI operation, use {fieldId} to reference the field in the table, example: "Summarize the content of {fieldId} into 100 words"
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'classification', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'customization', required
      - `prompt` string, required
      - `onlyAllowConfiguredOptions` boolean
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'tag', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'customization', required
      - `prompt` string, required
      - `onlyAllowConfiguredOptions` boolean
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `n` number
      - `size` string
      - `quality` 'low' | 'medium' | 'high'
      - `aspectRatio` string
      - `resolution` '1K' | '2K' | '4K'
      - `type` 'imageGeneration', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `n` number
      - `size` string
      - `quality` 'low' | 'medium' | 'high'
      - `aspectRatio` string
      - `resolution` '1K' | '2K' | '4K'
      - `type` 'imageCustomization', required
      - `prompt` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'rating', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'customization', required
      - `prompt` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'extraction', required
      - `sourceFieldId` string, required
    - object
      - `modelKey` string, required
      - `isAutoFill` boolean, nullable
      - `attachPrompt` string
      - `type` 'customization', required
      - `prompt` string, required
    - unknown
  - `isLookup` boolean — Whether this field is lookup field. witch means cellValue and [fieldType] is looked up from the linked table.
  - `isConditionalLookup` boolean — Whether this lookup field applies a conditional filter when resolving linked records.
  - `lookupOptions` union — field lookup options.
    - object
      - `baseId` string — the base id of the table that this field is linked to, only required for cross base link
      - `relationship` 'oneOne' | 'manyMany' | 'oneMany' | 'manyOne', required — describe the relationship from this table to the foreign table
      - `foreignTableId` string, required — the table this field is linked to
      - `lookupFieldId` string, required — the field in the foreign table that will be displayed as the current field
      - `fkHostTableName` string, required — the table name for storing keys, in many-to-many relationships, keys are stored in a separate intermediate table; in other relationships, keys are stored on one side as needed
      - `selfKeyName` string, required — the name of the field that stores the current table primary key
      - `foreignKeyName` string, required — The name of the field that stores the foreign table primary key
      - `filter` object — A filter object for complex query conditions based on fields, operators, and values. Use our visual query builder at https://app.teable.ai/developer/tool/query-builder to build filters.
      - `linkFieldId` string, required — The id of Linked record field to use for lookup
    - object
      - `baseId` string — the base id of the table that this field is linked to, only required for cross base link
      - `foreignTableId` string, required — the table this field is linked to
      - `lookupFieldId` string, required — the field in the foreign table that will be displayed as the current field
      - `filter` object, required — Filter to apply when resolving conditional lookup values.
      - `sort` object — Optional sort configuration applied before aggregating lookup values.
        - `fieldId` string, required — The field in the foreign table used to order lookup records.
        - `order` 'asc' | 'desc', required — Ordering direction to apply to the sorted field.
      - `limit` integer — Maximum number of matching records to include in the lookup result.
  - `notNull` boolean — Whether this field is not null.
  - `unique` boolean — Whether this field is not unique.
  - `isPrimary` boolean — Whether this field is primary field.
  - `isComputed` boolean — Whether this field is computed field, you can not modify cellValue in computed field.
  - `isPending` boolean — Whether this field's calculation is pending.
  - `hasError` boolean — Whether This field has a configuration error. Check the fields referenced by this field's formula or configuration.
  - `cellValueType` 'string' | 'number' | 'boolean' | 'dateTime', required — The cell value type of the field.
  - `isMultipleCellValue` boolean — Whether this field has multiple cell value.
  - `dbFieldType` 'TEXT' | 'INTEGER' | 'DATETIME' | 'REAL' | 'BLOB' | 'JSON' | 'BOOLEAN', required — The field type of database that cellValue really store.
  - `dbFieldName` string, required — Field(column) name in backend database. Limitation: 1-63 characters, can only contain letters, numbers and underscore, case sensitive, cannot be duplicated with existing db field name in the table.
  - `recordRead` boolean — Field record read permission. When set to false, reading records is denied. When true or not set, reading records is allowed.
  - `recordCreate` boolean — Field record create permission. When set to false, creating records is denied. When true or not set, creating records is allowed.

---

[API](https://skmtc.net/teable/apis/teable-app.md) · [All operations](https://skmtc.net/teable/apis/teable-app/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/teable/teable-app/revisions/7515f3b33d79/schema)
