---
title: "convert output column to input"
method: POST
path: "/datasets/{id}/columns/promote"
tags: ["Dataset CRUD"]
---

# convert output column to input

`POST /datasets/{id}/columns/promote`

## Request

- Base URL: `https://api.riveterhq.com/v1`
- URL: `https://api.riveterhq.com/v1/datasets/{id}/columns/promote`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/riveterhq/apis/riveter-api/docs/datasets/:id/columns/promote/post.ts> (a function with typed inputs; its response is checked against the schema)

Turn an output column into an input column of the same name. Every row's value moves with it, so later columns and dedupe can key on it. Refused with 409 `dataset_in_use` while a fill runs. Converting the last output column leaves the dataset with none; a fill is refused until one is added.

## Path parameters

- `id` string, required

## Request body

- object
  - `column` string, required: The output column name

## Response `200`

The dataset after the conversion

- Dataset
  - `id` string: ds_...
  - `name` string, nullable
  - `input_columns` string[]: Input column names, in order (row identity)
  - `index_column` string, nullable: The input column rows are unique on
  - `enrichment_id` string, nullable: The bound enrichment (its output columns are the dataset's)
  - `output_columns` string[]: Output column names, in order (from the bound enrichment; [] without one). Prompts and schemas are on GET /enrichments/{enrichment_id}
  - `row_count` integer
  - `rows_expired` boolean: True once the rows were removed by retention; the structure stays
  - `import_in_progress` boolean: A CSV import accepted with 202 has not landed yet
  - `runs` DatasetRunSummary[]: The five newest runs on the dataset
    - `id` string: run_...
    - `type` 'dataset_build' | 'enrichment': dataset_build = list generation; enrichment = a fill
    - `status` string
    - `created_at` string, date-time
    - `finished_at` string, date-time, nullable
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400`: The request is malformed or names a conflicting parameter combination
- `401`: Missing or invalid API key (`request_status` body — see the AuthError schema)
- `403`: The API key's account may not access this resource or endpoint (`forbidden`), or the account has not migrated to Datasets yet (`feature_not_enabled` — open Datasets in the app and click "Migrate to Datasets")
- `404`: No resource with that id on this account
- `409`: Duplicate run_key or a run already in progress
- `422`: The request is valid but can't be executed (e.g. insufficient_credits, credit_cap_exceeded when max_credits is set, validation failure)

## Changes

- **2026-11-13** `fac56b649559`: 2 info
  - api tag `Dataset CRUD` added
  - api tag `Datasets` removed
- **2026-10-30** `dcb4d45ade1a`: 10 info
  - added the optional property `error/credit_detail/estimate/oneOf[#/components/schemas/CreditEstimate]/typical` to the response with the `400` status
  - added the optional property `error/credit_detail/estimate/oneOf[#/components/schemas/CreditEstimate]/typical` to the response with the `403` status
  - added the optional property `error/credit_detail/estimate/oneOf[#/components/schemas/CreditEstimate]/typical` to the response with the `404` status
  - added the optional property `error/credit_detail/estimate/oneOf[#/components/schemas/CreditEstimate]/typical` to the response with the `409` status
  - …6 more
- **2026-10-19** `76aabcc5686b`: 2 info
  - api tag `Datasets` added
  - api tag `Datasets (beta)` removed
- **2026-10-14** `e437aec5a98d`: 1 warning, 1 info
  - removed the optional property `dedupe_column` from the response with the `200` status
  - added the optional property `index_column` to the response with the `200` status
- **2026-10-13** `029668894d33`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/riveterhq/apis/riveter-api/changes/datasets/:id/columns/promote/post.md)

---

[API](https://skmtc.dev/riveterhq/apis/riveter-api.md) - [All operations](https://skmtc.dev/riveterhq/apis/riveter-api/llms.txt) - [OpenAPI document](https://skmtc.dev/riveterhq/apis/riveter-api/revisions/fac56b649559?raw)
