Duplicate Detection activity
Read recorded Duplicate Detection actions and filter by time or actor.
The APIs on this page require alpha access for your organization. App availability and API access are separate. Check access and permissions.
Request
GET /v1/deduplication/activity
Lists what was done in Duplicate Detection, newest first: scans, matching rules and settings, Not duplicates decisions, reviews, AI assessments, merges and rebuilds. Only activity on the objects this key can read is listed. Each entry is when it happened, the action's name, who acted (a person, an API key with its id, or the system) and, for a key, whether it came through the API or an AI app. What was changed is not returned. occurred_at_from and occurred_at_before narrow it to a time range, actor_type to people, API keys or the system, and api_key_id to one key. Send next_cursor as cursor for the next page.
Requires dedupe:read. The connection also needs access to the relevant tables, objects, or workflows.
MCP action: list_dedupe_activity. Its argument names match the fields below; an HTTP header is passed using its argument name in MCP.
Parameters
| Name | Send in | Required | Type or allowed values | Notes |
|---|---|---|---|---|
occurred_at_from |
query | No | string (date-time) | |
occurred_at_before |
query | No | string (date-time) | |
actor_type |
query | No | "person", "api_key", "system" |
|
api_key_id |
query | No | string (uuid) | |
limit |
query | No | integer | |
cursor |
query | No | string |
Response
| HTTP status | Result |
|---|---|
200 |
The requested result. Asynchronous work returns an operation to poll. |
Required fields are required within their containing object. Notes identify fields that apply only to a particular response alternative.
| Response field | Type | Required in object | Notes |
|---|---|---|---|
data |
array of object | Yes | |
data[].object |
"deduplication_activity" |
Yes | |
data[].id |
string | Yes | |
data[].occurred_at |
string | Yes | |
data[].action |
"dedupe.scan_launched", "dedupe.scan_continued", "dedupe.rescan_launched", "dedupe.run.cancel_requested", "dedupe.config.changed", "dedupe.rule_created", "dedupe.rule_updated", "dedupe.rule_archived", "dedupe.rule_restored", "dedupe.rule_defaults_restored", "dedupe.exclusion_activated", "dedupe.exclusion_reactivated", "dedupe.exclusion_reason_set", "dedupe.exclusion_unmarked", "dedupe.exclusion_retired", "dedupe.exclusions_batch", "dedupe.display-fields.changed", "dedupe.column-order.changed", "schedule.created", "schedule.updated", "schedule.deleted", "dedupe.set_review_marked", "dedupe.set_review_updated", "dedupe.set_review_cleared", "dedupe.set_shortlisted", "dedupe.set_shortlist_cleared", "dedupe.sets_exported", "dedupe.scan_sets_exported", "dedupe.ai.api_run_requested", "dedupe.ai.api_run_cancel_requested", "dedupe.ai.api_after_scan_admitted", "dedupe.ai.api_after_scan_skipped", "dedupe.ai.api_after_scan_failed", "dedupe.merge_plan.prepare_requested", "dedupe.merge_plan.retry_requested", "dedupe.merge_plan.retired", "dedupe.api_execution.admitted", "dedupe.api_execution.cancel_requested", "dedupe.api_execution.ended", "merge.approval.authorized", "merge.intent_cancelled", "merge.backup.downloaded", "merge.rebuild.requested", "merge.rebuild.create_resolved" |
Yes | |
data[].actor |
object | Yes | |
data[].actor.type |
"person", "api_key", "system" |
Yes | |
data[].actor.api_key_id |
string or null | Yes | |
data[].via |
"api", "mcp" or null |
Yes | |
data[].operation_id |
string or null | No | |
pagination |
object | Yes | |
pagination.next_cursor |
string or null | Yes |
Errors
| HTTP status | Meaning |
|---|---|
400 |
One of: credential_in_url, invalid_parameter, unknown_parameter, invalid_request, invalid_cursor. |
401 |
One of: missing_credential, invalid_credential, credential_expired, credential_revoked. |
402 |
One of: payment_overdue. |
403 |
The current permissions, plan or policy do not allow this request. |
404 |
One of: not_found. |
409 |
The request conflicts with current resource state, authorization or an earlier request. Read the error code and current resource before retrying. |
410 |
The requested resource or retained recovery data has expired. |
412 |
One of: version_conflict. |
413 |
One of: request_too_large. |
422 |
A field, filter or selection cannot be used for this request. |
423 |
One of: organization_reopening. |
428 |
One of: customer_agreement_required. |
429 |
One of: rate_limited. |
503 |
One of: service_unavailable. |
See errors and recovery and safe retries before repeating a write.
The public OpenAPI document lists generally available API families. Alpha operations may not appear in that document; their request and response fields are listed on this page. Use the API Playground to inspect a real response with your connection's access.