conduyt_bulk_delete_contacts_matching
Soft-delete every contact matching a list filter across all pages. Pass the filter and expected total to freeze the id set, then continue with remainingIds and the token until done.
Instructions
Soft-delete EVERY contact a list filter matches, across pages (#73, 2026-09-15) — the contacts page's "Select all N matching" action. FIRST CALL: pass the same filter you would give conduyt_list_contacts (search, tag, tags, source, reachability, company, company_id, assigned_to, created_from/to, updated_from/to, min_score, import_id, smart_view, smartListId, filters JSON, master_status, exclude_master_status, cf[key]) and expectedTotal = the meta.total that filter returned. The server re-counts and refuses when the set moved (409 expected_total_mismatch), refuses when some matching contacts are shared with you but not yours to delete (409 not_all_editable), then FREEZES the matching ids (max 50,000; 422 above) and deletes only those. Contacts with an upcoming appointment are kept (keptWithAppointments). If done=false the response carries remainingIds AND a signed continuation token: CALL AGAIN with ids = remainingIds and continuation = that token, verbatim (no filter, no expectedTotal) until done=true; busy=true means wait a moment first. The token is bound to you, this account and exactly those ids and expires after 2 hours (403 continuation_*); a continuation without it is refused. Empty filters are refused. Requires contacts:delete and an active subscription.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Continuation: the remainingIds from the previous response, in the same order (send INSTEAD of filter/expectedTotal) | |
| filter | No | First call: the contact list filter parameters, exactly as for conduyt_list_contacts; at least one non-empty value | |
| continuation | No | Continuation: the `continuation` token from the previous response, verbatim (required with ids) | |
| expectedTotal | No | First call: the total the list showed for this filter (meta.total) |