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

# Update Table

> Update table metadata.

## Overview

This endpoint updates table metadata such as name, description, tags, or column order.

## Example request

```bash theme={null}
export EXTRUCT_API_TOKEN="YOUR_API_TOKEN"
export TABLE_ID="YOUR_TABLE_ID"

curl -X PATCH "https://api.extruct.ai/v1/tables/${TABLE_ID}" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${EXTRUCT_API_TOKEN}" \
  -d '{
    "name": "Company Research v2",
    "description": "Updated enrichment scope"
  }'
```

## Key parameters

* `table_id` (required): target table identifier.
* Body fields (all optional): `name`, `description`, `tags`, `columns_order`.

## Success signal

A successful response returns the updated table metadata with the same `id`.

## Common errors

### `401 Unauthorized`

Check that your header is `Authorization: Bearer ${EXTRUCT_API_TOKEN}`.

### `404 Not Found`

The table ID is invalid or unavailable in your workspace.

### `422 Unprocessable Entity`

Most often caused by invalid JSON or unsupported field shapes.

## Related endpoints

* [Get Table Endpoint](/api-reference/tables/get-table)
* [List Tables Endpoint](/api-reference/tables/list-tables)

## Related guides

* [AI Tables Basics](/api-guides/ai-tables/ai-table-basics)


## OpenAPI

````yaml patch /v1/tables/{table_id}
openapi: 3.1.0
info:
  title: FastAPI
  version: 0.1.0
servers: []
security: []
paths:
  /v1/tables/{table_id}:
    patch:
      tags:
        - tables
      summary: Update Table
      description: Update table metadata.
      operationId: update_table_v1_tables__table_id__patch
      parameters:
        - name: table_id
          in: path
          required: true
          schema:
            type: string
            title: Table Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTableInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TableHeaderOutput'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    UpdateTableInput:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          description: New table name to set, if provided.
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: New table description to set, if provided.
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: New table tags to set, if provided.
        columns_order:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: New order of column IDs, if provided.
      type: object
      title: UpdateTableInput
    TableHeaderOutput:
      properties:
        id:
          type: string
          title: Id
          description: Table ID.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Table creation time.
        name:
          type: string
          title: Name
          description: Table name.
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: Table description.
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: Table tags.
        kind:
          $ref: '#/components/schemas/TableKind'
          description: Table type.
        columns:
          items:
            $ref: '#/components/schemas/ColumnOutputSchema'
          type: array
          title: Columns
          description: Table columns configurations.
        owner:
          $ref: '#/components/schemas/OwnerInfo'
        child_relationships:
          items:
            $ref: '#/components/schemas/TableRelationshipOutput'
          type: array
          title: Child Relationships
          description: Child table relationships.
        parent_relationships:
          items:
            $ref: '#/components/schemas/TableRelationshipOutput'
          type: array
          title: Parent Relationships
          description: Parent table relationships.
      type: object
      required:
        - id
        - created_at
        - name
        - kind
        - columns
        - owner
      title: TableHeaderOutput
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    TableKind:
      type: string
      enum:
        - generic
        - company
        - people
      title: TableKind
    ColumnOutputSchema:
      properties:
        id:
          type: string
          title: Id
        created_at:
          type: string
          format: date-time
          title: Created At
        config:
          anyOf:
            - $ref: '#/components/schemas/InputColumnConfig'
            - $ref: '#/components/schemas/AgentColumnConfig-Output'
            - $ref: '#/components/schemas/CriterionGradeColumnConfig'
            - $ref: '#/components/schemas/PeopleFinderColumnConfig'
            - $ref: '#/components/schemas/DiscoveryScoresColumnConfig'
            - $ref: '#/components/schemas/CompanyNameColumnConfig'
            - $ref: '#/components/schemas/CompanyWebsiteColumnConfig'
            - $ref: '#/components/schemas/CompanyProfileColumnConfig'
            - $ref: '#/components/schemas/EmailFinderColumnConfig'
            - $ref: '#/components/schemas/PhoneFinderColumnConfig'
            - $ref: '#/components/schemas/ReverseEmailLookupColumnConfig'
      type: object
      required:
        - id
        - created_at
        - config
      title: ColumnOutputSchema
    OwnerInfo:
      properties:
        id:
          type: string
          title: Id
        email:
          type: string
          title: Email
      type: object
      required:
        - id
        - email
      title: OwnerInfo
    TableRelationshipOutput:
      properties:
        table_id:
          type: string
          title: Table Id
          description: ID of the related table
        relationship_type:
          $ref: '#/components/schemas/TableRelationshipType'
          description: Type of relationship
      type: object
      required:
        - table_id
        - relationship_type
      title: TableRelationshipOutput
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    InputColumnConfig:
      properties:
        kind:
          type: string
          const: input
          title: Kind
          default: input
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
      type: object
      required:
        - name
        - key
      title: InputColumnConfig
    AgentColumnConfig-Output:
      properties:
        kind:
          type: string
          const: agent
          title: Kind
          default: agent
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
        value:
          $ref: '#/components/schemas/AgentColumnSchema'
      type: object
      required:
        - name
        - key
        - value
      title: AgentColumnConfig
    CriterionGradeColumnConfig:
      properties:
        kind:
          type: string
          const: criterion_grade
          title: Kind
          default: criterion_grade
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
        value:
          $ref: '#/components/schemas/CriterionGraderAgentSchema'
      type: object
      required:
        - name
        - key
        - value
      title: CriterionGradeColumnConfig
    PeopleFinderColumnConfig:
      properties:
        kind:
          type: string
          const: company_people_finder
          title: Kind
          default: company_people_finder
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
        value:
          $ref: '#/components/schemas/PeopleFinderAgentSchema'
      type: object
      required:
        - name
        - key
        - value
      title: PeopleFinderColumnConfig
    DiscoveryScoresColumnConfig:
      properties:
        kind:
          type: string
          const: discovery_scores
          title: Kind
          default: discovery_scores
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
        criteria:
          anyOf:
            - additionalProperties:
                $ref: '#/components/schemas/CriterionDefinition'
              type: object
            - type: 'null'
          description: Criteria definitions keyed by criterion.key
      type: object
      required:
        - name
        - key
      title: DiscoveryScoresColumnConfig
    CompanyNameColumnConfig:
      properties:
        kind:
          type: string
          const: company_name
          title: Kind
          default: company_name
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
      type: object
      required:
        - name
        - key
      title: CompanyNameColumnConfig
      description: >-
        System column for company name - automatically populated from company
        enrichment.
    CompanyWebsiteColumnConfig:
      properties:
        kind:
          type: string
          const: company_website
          title: Kind
          default: company_website
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
      type: object
      required:
        - name
        - key
      title: CompanyWebsiteColumnConfig
      description: >-
        System column for company website - automatically populated from company
        enrichment.
    CompanyProfileColumnConfig:
      properties:
        kind:
          type: string
          const: company_profile
          title: Kind
          default: company_profile
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
      type: object
      required:
        - name
        - key
      title: CompanyProfileColumnConfig
      description: >-
        System column for complete company profile - automatically populated
        from company enrichment.
    EmailFinderColumnConfig:
      properties:
        kind:
          type: string
          const: email_finder
          title: Kind
          default: email_finder
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
      type: object
      required:
        - name
        - key
      title: EmailFinderColumnConfig
      description: Configuration for email finder columns.
    PhoneFinderColumnConfig:
      properties:
        kind:
          type: string
          const: phone_finder
          title: Kind
          default: phone_finder
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
      type: object
      required:
        - name
        - key
      title: PhoneFinderColumnConfig
      description: Configuration for phone finder columns.
    ReverseEmailLookupColumnConfig:
      properties:
        kind:
          type: string
          const: reverse_email_lookup
          title: Kind
          default: reverse_email_lookup
        name:
          type: string
          title: Name
        key:
          type: string
          title: Key
        email_column_key:
          type: string
          title: Email Column Key
      type: object
      required:
        - name
        - key
        - email_column_key
      title: ReverseEmailLookupColumnConfig
      description: >-
        Configuration for reverse email lookup columns.


        Given an email address, returns LinkedIn profile data via FullEnrich
        API.
    TableRelationshipType:
      type: string
      enum:
        - company_people
      title: TableRelationshipType
    AgentColumnSchema:
      properties:
        agent_type:
          $ref: '#/components/schemas/AgentType'
          default: research_pro
        prompt:
          type: string
          title: Prompt
          default: ''
        output_format:
          $ref: '#/components/schemas/AgentOutputFormat'
          default: text
        labels:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
        output_schema:
          anyOf:
            - additionalProperties: true
              type: object
            - {}
            - type: 'null'
        extra_dependencies:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
      type: object
      title: AgentColumnSchema
    CriterionGraderAgentSchema:
      properties:
        criterion:
          type: string
          title: Criterion
      type: object
      required:
        - criterion
      title: CriterionGraderAgentSchema
    PeopleFinderAgentSchema:
      properties:
        roles:
          items:
            type: string
          type: array
          minItems: 1
          title: Roles
        provider:
          type: string
          const: research_pro
          title: Provider
          default: research_pro
        max_results:
          type: integer
          title: Max Results
          default: 5
      type: object
      required:
        - roles
      title: PeopleFinderAgentSchema
    CriterionDefinition:
      properties:
        key:
          type: string
          pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
          title: Key
          description: Unique identifier for this criterion (e.g., "is_ai_company")
        name:
          type: string
          maxLength: 100
          minLength: 1
          title: Name
          description: Human-readable name for this criterion (e.g., "AI Company")
        criterion:
          type: string
          maxLength: 500
          minLength: 10
          title: Criterion
          description: The actual criterion text to evaluate against companies
      type: object
      required:
        - key
        - name
        - criterion
      title: CriterionDefinition
      description: Definition of a criterion for evaluating companies in discovery tasks
    AgentType:
      type: string
      enum:
        - research
        - research_pro
        - research_reasoning
        - llm
        - linkedin
      title: AgentType
    AgentOutputFormat:
      type: string
      enum:
        - text
        - url
        - number
        - email
        - label
        - json
        - grade
        - people
        - numeric
        - money
        - date
        - phone
        - select
        - multiselect
      title: AgentOutputFormat
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````