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).

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).

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.

Response

Deduplication started in the background

Acknowledgement that deduplication has started in the background.

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".

message
string

Human-readable status message.