What deleting a contact removes
const url = 'https://api.threadkite.app/v1/contacts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/erasure-preview?includeDuplicates=true';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.threadkite.app/v1/contacts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/erasure-preview?includeDuplicates=true' \ --header 'Authorization: Bearer <token>'Counts of everything that deleting the contact and their data removes, contacts merged with it or with the same email address or phone number, and plain-English notes about data left with providers (show them all before confirming). Changes nothing.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Query Parameters
Section titled “Query Parameters”Count other contacts with the same email address or phone number too
Count other contacts with the same email address or phone number too
Responses
Section titled “Responses”object
object
Type this, or the contact’s name, to confirm
Contacts merged with this one, deleted with it
Other contacts with the same email address or phone number
object
Whether the counts include duplicates
object
Contacts covered (merged and same-person contacts too)
Messages, notes and events, including chat transcripts
Files they sent or were sent
Website assistant chats
Calls (kept for counts; their number and transcript go)
Recordings and voicemails deleted in your Twilio account
Recordings Threadkite can’t delete (ones in an account that is no longer connected)
Recordings a provider has not deleted yet (retried daily)
Voicemail transcripts
Contact form submissions
Lead emails as they arrived
Marketplace conversations
Consent records (an opt-out is kept, without its details)
Consent history events (every change and its proof)
Ids in other systems
Linked records (deals, invoices) on their threads
Tasks on their threads (titles and notes cleared)
Appointments with them (notes cleared)
Replies to them not sent yet (deleted)
Replies the AI drafted for the team on their threads (deleted)
Things they own (deleted)
Files deleted from storage
Events about them (an export)
Automations they went through (an export)
Bulk messages they were sent, or kept from (an export)
Videos sent to them (an export)
What the organisation’s industry pack holds about them besides counts (only what there is)
object
Stable, and namespaced by the pack that holds it
What it is, in plain words
Plain-English notes the person deleting must read (data left at providers)
object
queued and running while the worker is on it, done, failed (run it again), or expired (an export past its download date)
The contact it was asked for
The contact’s name now (null once their data is deleted)
Every contact covered (merged and same-person contacts too)
Who asked: a team member or an API key
Whether you asked for it (only you can download your export)
object
Contacts covered (merged and same-person contacts too)
Messages, notes and events, including chat transcripts
Files they sent or were sent
Website assistant chats
Calls (kept for counts; their number and transcript go)
Recordings and voicemails deleted in your Twilio account
Recordings Threadkite can’t delete (ones in an account that is no longer connected)
Recordings a provider has not deleted yet (retried daily)
Voicemail transcripts
Contact form submissions
Lead emails as they arrived
Marketplace conversations
Consent records (an opt-out is kept, without its details)
Consent history events (every change and its proof)
Ids in other systems
Linked records (deals, invoices) on their threads
Tasks on their threads (titles and notes cleared)
Appointments with them (notes cleared)
Replies to them not sent yet (deleted)
Replies the AI drafted for the team on their threads (deleted)
Things they own (deleted)
Files deleted from storage
Events about them (an export)
Automations they went through (an export)
Bulk messages they were sent, or kept from (an export)
Videos sent to them (an export)
What the organisation’s industry pack holds about them besides counts (only what there is)
object
Stable, and namespaced by the pack that holds it
What it is, in plain words
Plain-English notes for you
object
The id to find it by in the provider account (Twilio RecordingSid)
An export’s size in bytes
When an export’s download stops working
An export you can download now
Example
{ "confirmWord": "ERASE", "packItems": [ { "key": "property.viewings", "label": "Viewings" } ], "pending": { "kind": "erasure", "status": "queued", "packItems": [ { "key": "property.viewings", "label": "Viewings" } ], "recordingsLeftAtProvider": [ { "provider": "twilio" } ] }}Missing or invalid API key
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}The organisation is on the Free plan (code upgrade_required)
object
Stable machine-readable reason
The feature that needs Pro
Where to upgrade or pay, in the web app
Example
{ "statusCode": 402, "code": "upgrade_required", "message": "Connections are part of Pro. Upgrade to connect texts, calls and more.", "feature": "extraSeats", "upgradePath": "/settings/billing"}The key does not have the scope (or the person the permission)
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}Already deleted
object
Stable machine-readable reason
With code invalid: every problem with the request, by field (message is the first)
object
Dotted path inside the item, e.g. attributes.price.amountMinor
Example
{ "statusCode": 403, "code": "forbidden", "message": "You do not have permission to do that.", "errors": [ { "message": "Enter the make" } ]}Rate limit reached
object
Stable machine-readable reason
Seconds until another request will be accepted
Example
{ "statusCode": 429, "code": "rate_limited", "message": "Too many requests. Each key can make 120 requests a minute; try again in 12 seconds.", "retryAfter": 12}