Skip to main content
When someone asks you to delete their data, the API erases it permanently, either one response at a time or every response one person sent. Both calls need a credential with the responses:delete scope. An erasure reaches every survey, so an app whose approving member has a role with access to selected surveys only gets 403 with AUTHZ-007-001. Erasure runs in the background. The request returns 202 Accepted immediately with a job, which you follow until it finishes.

What gets erased

For each response, Usertick erases:
  • its answers, its AI analysis and the event itself,
  • its status, assignees, notes, stars and corrections,
  • its links to Jira or Linear issues and to contacts, and the workflow runs and webhook deliveries it caused,
  • the copy of a Microsoft Teams card that showed it, and the record of which Google Sheets row it went to (the row in your spreadsheet stays),
  • the in-app notifications and notification emails that quoted its notes or answers, from a mention or a Notify teammates step,
  • the files the respondent sent with it.
Activity log entries remain. They name the response by its id and hold no answers. A notification email that was already sent stays in the email log with only who received it and when. A contact in your contact list isn’t deleted.

Erase one response

An unknown response returns 404 with RSP-002-007. See Erase a response.

Erase everything one person sent

By email, this finds every response:
  • with an answer that is exactly that address, in any case, or with that email from identify(),
  • to an email survey sent to the contact with that address,
  • linked to that contact,
  • sent with that contact’s external id as its user id.
To erase by your own user id instead, send userId, which is the id your site passes to identify():
By user id, this finds every response sent with it, and every response linked to the contact whose external id it is or sent to that contact by email. The body takes one of the two, email or userId. A body with both or neither returns 400 with PUB-003-007, and a user id over 256 characters returns 400 with PUB-003-008. See Erase a respondent. Usertick stores the email or user id encrypted only while the job needs it and clears it when the job ends. The job shows it masked, as in m***@example.com or user id us***71.

Follow the job

Both calls return 202 with the job and a Location header that points to it:
To follow the job, poll GET /jobs/{jobId} until status is succeeded or failed. A few seconds between polls is enough. type is responses.delete for one response and responses.erase for a respondent. Reading a job needs the same responses:delete scope, and a credential sees only its own organization’s jobs.
If POST /responses/erase carries an Idempotency-Key, a retry after a dropped connection doesn’t start a second job.