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

# Create Table

<Warning>
  **DEPRECATED**: This endpoint has been deprecated and will be removed on **March 1, 2026**.
  Please use the new endpoint: [`POST /v1/uploads`](./uploads-create)

  See the [Migration Guide](./migration) for details on migrating to the new endpoints.
</Warning>

The resulting table will be empty, and can be inserted into with the [/insert endpoint](./insert).

<Note>
  * If a table already exists with the same name, the request will fail.
  * Column names in the table can't start with a special character or a digit.
  * Each successful table creation consumes 10 credits.
  * To delete a table, you can go to `user settings (dune.com) -> data -> delete` or use the [/delete endpoint](./delete).
</Note>

## Schema

You need to define the schema of your data by providing `schema` array of columns in the request. Each column has three parameters:

**name**: the name of the field

**type**: the data type of the field
<Note> Dune supports [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) timestamp format </Note>

**nullable**: if the column is nullable (true/false, true by default)

<RequestExample>
  ```bash curl theme={null}
  curl --request POST \
    --url https://api.dune.com/api/v1/table/create \
    --header 'X-DUNE-API-KEY: <x-dune-api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
    "namespace":"my_user",
    "table_name":"interest_rates",
    "description": "10 year daily interest rates, sourced from https://fred.stlouisfed.org/series/DGS10",
    "is_private": false,
    "schema": [{"name": "date", "type": "timestamp"}, {"name": "dgs10", "type": "double",  "nullable": true}]
  }'
  ```

  ```python Python SDK theme={null}
  from dune_client.client import DuneClient

  dune = DuneClient()

  table = dune.create_table(
          namespace="my_user",
          table_name="interest_rates",
          description="10 year daily interest rates, sourced from https://fred.stlouisfed.org/series/DGS10",
          schema= [
              {"name": "date", "type": "timestamp"},
              {"name": "dgs10", "type": "double", "nullable": True}
          ],
          is_private=False
  )
  ```

  ```typescript TS SDK theme={null}
  import { DuneClient, ColumnType } from "@duneanalytics/client-sdk";

  client = new DuneClient(process.env.DUNE_API_KEY!);
  const result = await client.table.create({
    namespace: "my_user",
    table_name: "interest_rates",
    schema: [
      {"name": "date", "type": ColumnType.Timestamp},
      {"name": "dgs10", "type": ColumnType.Double}
    ]
  });
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.dune.com/api/v1/table/create"

  payload = {
      "namespace": "my_user",
      "table_name": "interest_rates",
      "description": "10 year daily interest rates, sourced from https://fred.stlouisfed.org/series/DGS10",
      "schema": [{"name": "date", "type": "timestamp"}, {"name": "dgs10", "type": "double", "nullable": True}],
      "is_private": False
  }

  headers = {
      "X-DUNE-API-KEY": "<x-dune-api-key>",
      "Content-Type": "application/json"
  }


  response = requests.request("POST", url, json=payload, headers=headers)
  ```

  ```javascript Javascript theme={null}
  const url = "https://api.dune.com/api/v1/table/create";

  const payload = {
      "namespace": "my_user",
      "table_name": "interest_rates",
      "description": "10 year daily interest rates, sourced from https://fred.stlouisfed.org/series/DGS10",
      "schema": [{"name": "date", "type": "timestamp"}, {"name": "dgs10", "type": "double", "nullable": true}],
      "is_private": false
  };

  const headers = {
      "X-DUNE-API-KEY": "<x-dune-api-key>",
      "Content-Type": "application/json"
  };

  fetch(url, {
      method: 'POST',
      headers: headers,
      body: JSON.stringify(payload)
  })
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
  ```
</RequestExample>
