Erase a contact's personal data
Authentication
Path parameters
Response
Erasure completed in the database. Sub-processor deletion is best-effort.
Erasure completed in the database. Sub-processor deletion is best-effort.
DESTRUCTIVE AND IRREVERSIBLE. This permanently destroys a person’s data across the workspace and at Jelliu’s voice sub-processor. There is no undo, no soft-delete you can reverse and no restore path short of a database backup. Double-check
contactIdbefore calling it.
Carries out a data subject’s right to erasure (GDPR Art. 17, and the equivalent rights under Ley 1581, LGPD, LFPDPPP and similar laws). In one database transaction it:
phone_number to [ERASED] and removes
the link to the recording, so GET /api/calls/{callId}/audio can no longer replay it. The call rows
themselves stay for analytics.[ERASED], and email and notes are cleared.erased.[ERASED], email, WhatsApp number and metadata cleared) and
soft-deletes it.[ERASED].GET /api/audit/verify-chain still verifies.After the transaction commits, it deletes each call’s conversation (audio and full transcript) in the voice engine, five at a time with a 10-second timeout each. A vendor failure does not roll back the local erasure and does not change the response. It is logged for manual follow-up.
What it does not touch. The number stays on the suppression list, so the erased person is still never called. Call rows the retention sweep had already soft-deleted are skipped. The response is identical whether or not the contact exists.
Side effects. Irreversible writes across calls, contacts, consent, messages, bookings, audit logs
and agent actions. Deletion requests to the voice engine. Evicts consent caches. Writes an audit entry
(gdpr_erasure, resource contact) with no personal data in it.
Idempotency. Safe to retry. Everything it writes is already anonymized on a second run, and
it returns the same 200.
Access
full. Signed-in users need the owner role; admins are refused.Workspace API key: jl_ followed by 64 lowercase hex characters, created by the workspace owner in the
dashboard (Settings → API Keys) and sent as Authorization: Bearer jl_.... The plaintext is shown once,
at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys.
Operations restricted to admins or owners reject keys without the full scope with 403, and say so in
their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret —
that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds.
See Authentication.