---
title: "Run Column on Companies Table"
method: POST
path: "/v3/companies/tables/{table_id}/columns/{column_id}/run"
tags: ["Companies Tables"]
---

# Run Column on Companies Table

`POST /v3/companies/tables/{table_id}/columns/{column_id}/run`

Populate or refresh a column's data for some or all rows in the table. This is **asynchronous** — the call returns immediately with `status: "processing"`; poll Get Companies Table for `isProcessing` and per-column row-status counts to know when it's done, then read the values via Get Companies Table Entities.

**`runScope` values:**
- `all` — every row, including already-processed ones (re-runs / refreshes). Most expensive.
- `missing` — only rows that have never been run for this column. Cheapest, safe to call repeatedly.
- `specific` — only the `entityIds` you pass. Also how you implement "run for this page" — fetch the page via Get Companies Table Entities, then pass those IDs here.

> **Billing:** Charged per row processed, per the column's credit tier. Company enrichment charges once per company per table — re-runs on an already-paid company in the same table are free.

## Path parameters

- `table_id` string, required
- `column_id` string, required

## Request body

- ColumnsRunRequest
  - `runScope` 'all' | 'missing' | 'specific', required — Controls which rows a column operation applies to. `all` re-runs every row, including already-processed ones. `missing` only runs rows that don't have a value for this column yet. `specific` requires `entityIds`.
  - `entityIds` string[] — Required when `runScope` is `specific`.
  - `owner` TableOwner, required — Identifies the user acting on the table, and resolves to a user on your account. Required on every table-route call when authenticating with an API key (there is no signed-in user) — omitting it returns `400`. Optional for OAuth/token callers, since the caller is already identified by the token; still accepted if you want to act on behalf of another owner.
    - `email` string, email — Must resolve to an existing user on the account tied to your API key.

## Response `200`

Column run started

- ColumnsRunResponse — Run is asynchronous — this response confirms the run was accepted. Poll Get Table for per-column row-status counts to know when it's finished.
  - `data` object
    - `columnId` string
    - `runScope` 'all' | 'missing' | 'specific' — Controls which rows a column operation applies to. `all` re-runs every row, including already-processed ones. `missing` only runs rows that don't have a value for this column yet. `specific` requires `entityIds`.
    - `status` string
  - `billing` V3Billing — Credit usage summary for a V3 API request
    - `creditsCharged` integer — Total credits charged for this request
    - `resultsReturned` integer — Number of successful results returned

## Other responses

- `400` — Bad request - invalid input data
- `401` — Unauthorized - invalid or missing API key
- `403` — Forbidden - account inactive, V3 access not enabled, or plan does not include this feature
- `404` — Not found - column does not exist on the given table

---

[API](https://skmtc.net/lusha/apis/lusha-api-documentation.md) · [All operations](https://skmtc.net/lusha/apis/lusha-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lusha/lusha-api-documentation/versions/4c51e40e3e67/schema)
