Skip to main content
When someone asks what you hold about them, or asks you to delete it, the Darwin API answers for everything Darwin keeps about them in one call. Both calls take the person’s email address and need a key with the privacy:write scope. Create a key just for this and keep it with whoever handles privacy requests. Both are POST requests, so the email address never appears in a URL or a server log.

Export what Darwin holds

The answer is one JSON document: Hand it to the person as it is, or turn it into your own format. An export is a heavy request for rate limits.

Erase a person

Erasure is permanent. Darwin cannot restore what it removes, and neither can Darwin support. Export first if you need a copy.
If you already have their contact id, DELETE /v1/contacts/{id} does the same and returns the same receipt inside erasure. The 201 response is a receipt:
The counts say how many records were changed. Darwin keeps this receipt with a hash of the address, never the address itself, so you can show an erasure took place without keeping what was erased. It worked if GET /v1/contacts?email=jordan@example.com returns an empty list and the conversations counted in the receipt have no transcript.

What erasure removes

In one step, everywhere Darwin keeps it:
  • The contact is deleted.
  • Every conversation that names them loses its transcript, the lead’s name and email, the booker’s email and the handoff note. Darwin’s grading notes on those conversations go too.
  • Booking attempts lose their details. Link bookings lose the name, email and the provider’s details.
  • Chat API sessions lose the identity and external id you passed.
  • Events about them keep their type and time and lose their payload. Webhooks for those events that have not gone out yet send "data": { "erased": true }.

What erasure keeps

  • Each conversation’s row and timestamps, so last month’s counts, opening-test results and billing don’t change.
  • The receipt described above.

What it can’t reach

  • Emails already sent to your team about a booking or a lead are in their inboxes.
  • Your calendar provider’s copy of the meeting. Remove it in Calendly or Google Calendar.
  • Systems you sent data to: your CRM, Slack, warehouse or anything else that received webhooks or API reads. Erase it there too.

Running both from code

An address that isn’t a usable email returns 400 invalid_request with param: "email". An address Darwin holds nothing about still succeeds, with zero counts and contact_deleted: false.