---
title: "Rename a smart column, change its prompt or providers"
method: PATCH
path: "/business/lists/{listId}/smart-columns/{columnId}"
tags: ["Smart columns"]
---

# Rename a smart column, change its prompt or providers

`PATCH /business/lists/{listId}/smart-columns/{columnId}`

## Request

- Base URL: `https://api.tryfuse.ai/api/v1`
- URL: `https://api.tryfuse.ai/api/v1/business/lists/{listId}/smart-columns/{columnId}`
- Auth: HTTP basic

Renames the column, changes its prompt, or changes a Deep Research column's provider restriction (`providerIds: null` clears it). A rename or a provider change is immediate and free, and new providers apply from the next run. A prompt change is not free — any run in progress is cancelled and every row the column has already computed (plus cells the cancelled run left pending or running) is immediately recomputed with the new prompt, each billed at the column's per-row rate; the new prompt is saved either way. The call answers 200 in every case: `jobId` carries the id of the re-run a prompt change started — poll it on `GET /business/lists/{listId}/smart-columns/{jobId}/status` — and is null when nothing was recomputed, which covers a rename, a provider change, and a prompt edit on a column with no computed row left to refresh. Check `refreshableRowCount × creditsPerRow` on `GET …/smart-columns/{columnId}` before a prompt edit, and expect 402 when your balance cannot cover the re-run. The response always carries the column's stored name, so a prompt-only edit still reports it.

Errors:
- `402` `INSUFFICIENT_CREDITS` — Your credit balance cannot cover the re-run a prompt edit starts (refreshableRowCount × creditsPerRow); nothing was started or charged.
- `404` `LIST_NOT_FOUND` — No list with that id belongs to you.
- `404` `COLUMN_NOT_FOUND` — No smart column with that id is on this list, or the column has never run (nothing to recompute from).
- `409` `COLUMN_NAME_TAKEN` — Another column on this list already has that name.
- `422` `COLUMN_NAME_RESERVED` — The new name is one of the reserved built-in column names.
- `422` `PROVIDERS_NOT_SUPPORTED` — providerIds was sent for a standard-engine column; only a deep_research column can be restricted to specific providers.
- `422` `INVALID_REQUEST` — CRM rejected the change for a reason with no more specific code.
- `422` `VALIDATION_FAILED` — The body failed validation, including a body with none of name, prompt or providerIds.
- `429` `RATE_LIMITED` — More than 120 requests per minute or 10,000 per day on the lists bucket, which every /business/lists endpoint shares; retry after Retry-After.
- `500` `UNEXPECTED_ERROR` — The request could not be completed; quote request_id to support.

Requires one of the following token scopes: lists.

## Path parameters

- `listId` string, required: Id of the list that owns the smart column.
- `columnId` string, required: Id of the smart column, as returned when it was created or listed by GET /business/lists/{listId}/columns.

## Request body

- object
  - `name` string: New display name (1-100 characters, trimmed). Must stay unique on the list and must not be a reserved built-in column name.
  - `prompt` string: New research instruction (1-2000 characters, trimmed). Changing the prompt immediately recomputes the rows the column has already computed (plus cells a cancelled run left pending or running), cancelling any run in progress and billing each recomputed row at the column's per-row credit rate.
  - `providerIds` string[], nullable: deep_research columns only: replace the provider restriction with these provider ids — the `id` values returned by GET /business/research/providers — or null to clear it and let the column use every provider available to your workspace. The ids are an allowlist, not an order: the run may call any of them, chooses per row, and need not use them all; the order you send them in is ignored. Send 1 to 50 distinct ids — an empty array or a repeated id is rejected. Ids are never checked against the catalog: a typo, a provider whose `allowedInRuns` is false, or a `byok-required` provider you have not saved a key for is accepted and then silently dropped from the run, and if none of the ids survive that check the rows are researched only by the providers Fuse always includes, so the answers come back far thinner than you asked for with no error anywhere. The new selection is free, recomputes nothing on its own and applies from the next run; sent for a standard-engine column it is rejected with 422 PROVIDERS_NOT_SUPPORTED.

## Response `200`

Success

- object
  - `column` object, required
    - `id` string, required: Id of the column.
    - `name` string, required: The column's stored name after the update.
  - `jobId` string, nullable, required: Id of the billed re-run a prompt change started; null when nothing was recomputed (a rename, a provider change, or a prompt edit with no computed row left to refresh).

## Other responses

- `400`: Error
- `401`: Error
- `402`: Error
- `403`: Error
- `404`: Error
- `409`: Error
- `422`: Error
- `429`: Error
- `500`: Error

---

[API](https://skmtc.dev/fuseai/apis/fuse-business-api.md) · [All operations](https://skmtc.dev/fuseai/apis/fuse-business-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fuseai/apis/fuse-business-api/revisions/50d95e0536f4?raw)
