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

# Create Table

> Create a new data table

## Request

<ParamField body="name" type="string" required>
  Table name (unique within your organization)
</ParamField>

<ParamField body="description" type="string">
  Optional table description
</ParamField>

<ParamField body="columns" type="array" required>
  Column definitions for the table
</ParamField>

<ParamField body="columns[].name" type="string" required>
  Column name
</ParamField>

<ParamField body="columns[].type" type="string" required>
  Column type: `text`, `number`, `boolean`, `datetime`, `select`, `url`, `email`, `json`
</ParamField>

<ParamField body="columns[].required" type="boolean" default="false">
  Whether the column is required on inserts
</ParamField>

<ParamField body="columns[].options" type="array">
  Required for `select` columns
</ParamField>

## Response

Returns HTTP 201 (Created).

<ResponseField name="id" type="string">
  Table ID (e.g., `tbl_abc123xyz789`)
</ResponseField>

<ResponseField name="name" type="string">
  Table name
</ResponseField>

<ResponseField name="description" type="string">
  Table description or `null`
</ResponseField>

<ResponseField name="columns" type="array">
  Persisted column definitions
</ResponseField>

<ResponseField name="row_count" type="number">
  Initial row count (`0`)
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO 8601 timestamp
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.crewship.dev/v1/tables \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "leads",
      "description": "Sales prospects",
      "columns": [
        {"name": "company", "type": "text", "required": true},
        {"name": "score", "type": "number"},
        {"name": "status", "type": "select", "options": ["new", "qualified"]}
      ]
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Success theme={null}
  {
    "id": "tbl_abc123xyz789",
    "name": "leads",
    "description": "Sales prospects",
    "columns": [
      { "name": "company", "type": "text", "required": true },
      { "name": "score", "type": "number", "required": false },
      { "name": "status", "type": "select", "required": false, "options": ["new", "qualified"] }
    ],
    "row_count": 0,
    "created_at": "2024-01-15T10:35:00Z",
    "updated_at": "2024-01-15T10:35:00Z"
  }
  ```

  ```json Error theme={null}
  {
    "error": {
      "message": "Table \"leads\" already exists"
    }
  }
  ```
</ResponseExample>
