---
title: "Add dataset column"
method: POST
path: "/v1/projects/{projectSlug}/datasets/{datasetSlug}/columns"
tags: ["Datasets"]
---

# Add dataset column

`POST /v1/projects/{projectSlug}/datasets/{datasetSlug}/columns`

Adds a custom column. The column starts empty on every row; rows are written only when a cell is filled, so the dataset version does not change.

## Path parameters

- `projectSlug` string, required — Project slug (human-readable identifier)
- `datasetSlug` string, required — Dataset slug (human-readable identifier within the project).

## Request body

- AddDatasetColumnBody
  - `name` string, required — Display name for the new custom column.

## Response `201`

Created column

- DatasetColumn
  - `identifier` string, required — Stable, immutable column id. The key under which custom values are stored on each row.
  - `name` string, required — Display name. Editable; the identifier never changes.
  - `source` union, required — Where the column's values come from.
    - object
      - `kind` 'builtin', required — A built-in field (`input`, `output`, `expectedOutput`, or `metadata`).
      - `field` 'input' | 'output' | 'expectedOutput' | 'metadata', required — Which built-in field this column projects.
    - object
      - `kind` 'custom', required — A user-added column; its values live under the row's `custom` store.
  - `removed` boolean — `true` for soft-removed columns (only returned when listing with `includeRemoved`). Removed columns are excluded from rows and the default schema, but keep their data and can be restored.

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `404` — Not found

---

[API](https://skmtc.net/latitude-dev/apis/latitude.md) · [All operations](https://skmtc.net/latitude-dev/apis/latitude/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/latitude-dev/latitude/versions/6a8789c59a5c/schema)
