Skip to main content
POST
Deduplicate rows by the combined value of one or more columns.

Authorizations

X-API-Key
string
header
required

Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.

Path Parameters

listId
string
required

Body

application/json

Columns to dedupe on and strategy

Request body for deduplicating a list. Rows are grouped by their combined values in columnNames; within each duplicate group the OLDEST row is kept. All names in columnNames must be existing columns on the list — an unknown column returns 400. Runs asynchronously and responds 202 with a taskId.

columnNames
string[]
required

Column NAMES (as in the list headers) whose combined value identifies a duplicate. Must be non-empty, and every name must exist on the list (else 400).

companyId
string

Company ID that owns the list. Required when authenticating with a personal access key (pak_…) — the key is not tied to a specific company so the server cannot infer it. Required when authenticating with a company API key only if the key belongs to a user who has access to multiple companies; otherwise it defaults to the key's company. Optional for JWT (dashboard) auth — defaults to the user's active company.

strategy
string
default:delete

How to handle duplicates: "delete" (soft-delete the newer duplicates, default) or "merge" (combine field values into the kept row before deleting the others).

Response

Deduplication started in the background

Acknowledgement that deduplication has started in the background.

message
string

Human-readable status message.

status
string

Always "background" — the work runs asynchronously.

taskId
string

ID (UUID) of the background task. Poll its status with GET /lists/tasks/{taskId} (operation lists_getTaskStatus) until status is "completed", "failed", or "cancelled".