> ## 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.

> Create a table for enrichment and scoring workflows.

# Create Table

## Overview

This endpoint creates a table for reusable enrichment or scoring workflows.
You can populate it with companies discovered in Extruct or with your own list.

`kind` determines what the table is for:

* Use `company` when rows represent companies you want to enrich, score, or review.
* Use `people` when rows represent contacts or individual people.
* Use `generic` only when rows do not fit either company or people workflows.

Create the table first when you want a stable workspace for rows, columns, and runs, even if you are not ready to populate it yet.

## Example request

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

curl -X POST "https://api.extruct.ai/v1/tables" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${EXTRUCT_API_TOKEN}" \
  -d '{
    "name": "Company Research",
    "kind": "company",
    "column_configs": [
      {"kind": "input", "name": "Company", "key": "input"}
    ]
  }'
```

## Key parameters

* `name` (optional): defaults to `Untitled Table`.
* `kind` (optional): `generic`, `company`, or `people`.
* `column_configs` (optional): initial column definitions.

## Success signal

A successful response includes a table `id`. Reuse this value as `{table_id}` in all table endpoints.

## Common errors

### `401 Unauthorized`

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

### `422 Unprocessable Entity`

Most often caused by invalid `column_configs` shape.

## Related endpoints

* [Create Table Rows Endpoint](/api-reference/tables/create-table-rows)
* [Run Table Endpoint](/api-reference/tables/run-table)

## Related guides

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


## OpenAPI

````yaml post /v1/tables
openapi: 3.1.0
info:
  title: FastAPI
  version: 0.1.0
servers: []
security: []
paths:
  /v1/tables:
    post:
      tags:
        - tables
      summary: Create Table
      operationId: create_table_v1_tables_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTableInput-Input'
              examples:
                - name: Supercharged Research
                  kind: company
                  column_configs:
                    - kind: agent
                      name: Company Description
                      key: description
                      value:
                        agent_type: research_pro
                        prompt: >-
                          Research the company {company_name}
                          ({company_website}) and provide a short description.
                        output_format: text
      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:
    CreateTableInput-Input:
      properties:
        name:
          type: string
          title: Name
          default: Untitled Table
        description:
          anyOf:
            - type: string
            - type: 'null'
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
        kind:
          $ref: '#/components/schemas/TableKind'
          default: company
        column_configs:
          anyOf:
            - items:
                anyOf:
                  - $ref: '#/components/schemas/InputColumnConfig'
                  - $ref: '#/components/schemas/AgentColumnConfig-Input'
                  - $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: array
            - type: 'null'
          description: Column configurations.
      type: object
      title: CreateTableInput
    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
    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-Input:
      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.
    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
    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
    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
    TableRelationshipType:
      type: string
      enum:
        - company_people
      title: TableRelationshipType
    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

````