How Can We Help?
3. Developing
Table of Contents
We currently support 2 events:
privacy_request.received
privacy_request.updated
Those events contain the latest state of the privacy request data. When a voicemail privacy request comes in, you may receive 2 privacy_request.updated after that – one when the voicemail recording is available, and another once the transcription is ready. Here is an example or privacy_request.received for a webform:
{
"event_name": "privacy_request.received",
"signature": {
"random_token": "b39a5c7ac85ec479f921cdfaae4b4eee",
"timestamp": "1584300477293",
"signature": "599a40fb2d25f995a40dc43f725a57be4e8df90"
},
"id": "4e2c7dcd-8277-40bb-1082-66c7cb417df2",
"type": "WebForm",
"primary_identifier": "john@doe.com",
"consumer_email": "john@doe.com",
"email_verified_at": "2025-01-01",
"acknowledged": true,
"categorized": false,
"verified": false,
"email_verified_at": null,
"extended": false,
"completed": false,
"completed_rights": {
"data_categories_request": {
"completed": false,
"completed_at": null
},
"do_not_sell": {
"completed": true,
"completed_at": "2025-01-01"
},
"erase_my_information": {
"completed": false,
"completed_at": null
},
"send_me_a_copy_of_information": {
"completed": false,
"completed_at": null
},
"other": {
"completed": false,
"completed_at": null
}
},
"deadline": "2025-07-02",
"created_at": "2025-05-18T17:36:44.399Z",
"updated_at": "2025-05-18T17:36:45.187Z",
"categorized_rights": [
{
"data_categories_request": false,
"do_not_sell": true,
"erase_my_information": false,
"send_me_a_copy_of_information": false,
"other": {
"checked": false,
"answer": ""
}
},
[
{
"displayName": "Tell me more about the data you collect, share and/or sell",
"internalName": "data_categories_request",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Do not sell or share my personal information (if applicable)",
"internalName": "do_not_sell",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Delete my personal information",
"internalName": "erase_my_information",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Send me a copy of my personal information",
"internalName": "send_me_a_copy_of_information",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Other",
"internalName": "other",
"daysToProcess": 45,
"additionalDaysExtension": 45
}
]
],
"categorized_questions_data": [
{
"first_name": "John",
"last_name": "Doe",
"email": "John@Doe.com",
"requester_type": "customer"
},
[
{
"displayName": "First Name",
"internalName": "first_name",
"inputType": "text",
"options": [],
"isPrimaryIdentifier": false,
"verifyEmail": false,
"isOptional": false
},
{
"displayName": "Last Name",
"internalName": "last_name",
"inputType": "text",
"options": [],
"isPrimaryIdentifier": false,
"verifyEmail": false,
"isOptional": false
},
{
"displayName": "Email Address",
"internalName": "email",
"inputType": "email",
"options": [],
"isPrimaryIdentifier": true,
"verifyEmail": true
},
{
"displayName": "I am a",
"internalName": "requester_type",
"inputType": "select",
"options": [
{
"displayName": "Customer",
"internalName": "customer"
},
{
"displayName": "Employee",
"internalName": "employee"
},
{
"displayName": "Job Applicant",
"internalName": "job_applicant"
},
{
"displayName": "Vendor",
"internalName": "vendor"
},
{
"displayName": "Other",
"internalName": "other"
}
],
"isPrimaryIdentifier": false,
"verifyEmail": false
}
]
],
"categorized_country": "USA",
"categorized_state": "California",
"service_code": {
"code": 1,
"name": "Privacy Toll Free, LLC",
"created_at": "2024-07-16T20:31:24.915Z",
"updated_at": "2025-05-18T16:40:19.894Z"
},
"jurisdiction_rule": {
"name": "USA only",
"description": "Description of applied Jurisdiction Rule",
"created_at": "2025-05-17T18:48:59.391Z",
"days_to_process": 45,
"notes": "This jurisdiction is available to see/edit in the dashboard in the Jurisdictions tab."
},
"web_form_session": {
"id": "904c1b30-2ba8-49cf-a349-46f7c6b29e70",
"created_at": "2025-05-18T17:36:44.394Z",
"remote_ip": "24.102.96.226"
}
}
Here is an example of a privacy_request.updated for a voicemail request:
{
"event_name": "privacy_request.updated",
"signature": {
"random_token": "a021778c09cdae8897859340d3f0b32f",
"timestamp": "1584305606907",
"signature": "201de4703b7ce1eb33878fa29d77d8572ddeb2af"
},
"id": "abf78bbb-a152-4f09-90ad-5802f53721d7",
"type": "Voicemail",
"primary_identifier": "john@doe.com",
"consumer_email": "john@doe.com",
"email_verified_at": "2025-01-01",
"acknowledged": "false",
"categorized": false,
"verified": true,
"extended": "false",
"completed": "true",
"completed_rights": {
"data_categories_request": {
"completed": false,
"completed_at": null
},
"do_not_sell": {
"completed": true,
"completed_at": "2025-01-01"
},
"erase_my_information": {
"completed": false,
"completed_at": null
},
"send_me_a_copy_of_information": {
"completed": false,
"completed_at": null
},
"other": {
"completed": false,
"completed_at": null
}
},
"deadline": "2019-11-05",
"created_at": "2019-09-21 16:31:11 UTC",
"updated_at": "2020-03-15 20:48:05 UTC",
"categorized_rights": [
{
"data_categories_request": false,
"do_not_sell": true,
"erase_my_information": false,
"send_me_a_copy_of_information": false,
"other": {
"checked": false,
"answer": ""
}
},
[
{
"displayName": "Tell me more about the data you collect, share and/or sell",
"internalName": "data_categories_request",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Do not sell or share my personal information (if applicable)",
"internalName": "do_not_sell",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Delete my personal information",
"internalName": "erase_my_information",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Send me a copy of my personal information",
"internalName": "send_me_a_copy_of_information",
"daysToProcess": 45,
"additionalDaysExtension": 45
},
{
"displayName": "Other",
"internalName": "other",
"daysToProcess": 45,
"additionalDaysExtension": 45
}
]
],
"categorized_questions_data": [
{
"first_name": "John",
"last_name": "Doe",
"email": "John@Doe.com",
"requester_type": "customer"
},
[
{
"displayName": "First Name",
"internalName": "first_name",
"inputType": "text",
"options": [],
"isPrimaryIdentifier": false,
"verifyEmail": false,
"isOptional": false
},
{
"displayName": "Last Name",
"internalName": "last_name",
"inputType": "text",
"options": [],
"isPrimaryIdentifier": false,
"verifyEmail": false,
"isOptional": false
},
{
"displayName": "Email Address",
"internalName": "email",
"inputType": "email",
"options": [],
"isPrimaryIdentifier": true,
"verifyEmail": true
},
{
"displayName": "I am a",
"internalName": "requester_type",
"inputType": "select",
"options": [
{
"displayName": "Customer",
"internalName": "customer"
},
{
"displayName": "Employee",
"internalName": "employee"
},
{
"displayName": "Job Applicant",
"internalName": "job_applicant"
},
{
"displayName": "Vendor",
"internalName": "vendor"
},
{
"displayName": "Other",
"internalName": "other"
}
],
"isPrimaryIdentifier": false,
"verifyEmail": false
}
]
],
"categorized_country": "USA",
"categorized_state": "California",
"service_code": {
"code": "2",
"name": "test",
"created_at": "2019-09-21 16:31:11 UTC",
"updated_at": "2020-01-26 05:59:40 UTC"
},
"call_session": {
"created_at": "2019-09-21 16:31:11 UTC",
"ended_at": "2019-09-21 16:33:11 UTC",
"caller_id": "+15555555555",
"caller_name": "John Smith",
"caller_state": "CA",
"recording_status": "",
"mp3_encoded_bytes": "",
"transcription_status": "completed",
"transcription_text": "Hello world!"
}
}
Privacy Request
| Key | Description |
|---|---|
| event_name | String, eg: “privacy_request.received” |
signature | Object, with a random token, a timestamp in milliseconds, and a signature. Please refer to the security section to use this |
| id | UUID, the id as a string of the privacy request in our system. |
| type | String, e.g. “Voicemail” |
| primary_identifier | String, the primary identifier of the request |
| consumer_email | String, the email used to communicate with the requester |
| email_verified_at | DateTime at which the email was verified |
| acknowledged | Boolean, e.g: false represent if the privacy request was acknowledged. |
| verified | Boolean, e.g true if the request is marked as verified |
| categorized | Boolean, eg true if the request is marked as categorized (always true for webform) |
| completed | Boolean, e.g: true represent if the privacy request was completed. |
| completed_rights | Hash of internal_key to completed hash; e.g “delete_me”: { completed: true/false, completed_at: 2025-01-01 } |
| extended | Boolean, e.g: “false” represent if the privacy request was extended. |
| deadline | Date, eg: “2019-11-05”, calculated based on the extended field, and created_at, and the jurisdiction rules. It will also calculate the nearest deadline for a non-completed right if you have different deadlines per right. |
| created_at | Timestamp, the time at which we received this request |
| updated_at | Timestamp, the time at which we updated this request |
| categorized_rights | The recommended way to see the submitted rights. This is an array, the first index contains a key value pairs of rights submitted eg {“delete_me”} => true, the second index contains the configurations of rights: [ {internalName: “delete_me”, displayName: “Delete my personal information”, daysToProcess: 45}] etc… |
| categorized_questions_data | The recommended way to see the submitted answers to the form field set OR when you categorize a voicemail or email request. This is an array, the first index contains a key value pairs of rights submitted eg {“first_name”} => “John”, the second index contains the configurations of rights: [ {internalName: “first_name”, displayName: “First Name”, isPrimaryIdentifier: false, verifyEmail: false, isOptional: false}] etc… |
| categorized_country | The recommended way to use the country associated with the request. This field is used for all types of request. |
| categorized_state | Null if not United States. This is the recommended way to get the state for a USA submission. |
Service code
| Key | Description |
|---|---|
| code | String, your service code for this request. |
| name | String, your service code name for this request |
| created_at | Timestamp at which your created the service code |
| updated_at | Timestamp, the last time this object was updated. |
Call Session
| Key | Description |
|---|---|
| created_at | Timestamp at we received the call for this request |
| ended_at | Timestamp when the caller hung up |
| caller_id | String, the phone number we received |
| caller_name | String CNAM Lookup of the caller name |
| caller_state | String e.g. “CA” state of the consumer derived from area code of the number |
| recording_status | String, “completed”, when bytes are available, or “failed”. |
| mp3_encoded_byes | String, a based64 encoded string representing the bytes of the mp3 |
| transcription_status | String, “completed” if we completed the transcription. |
| transcription_text | “Hello world!” |
Web From Session
| Key | Description |
|---|---|
| id | UUID of the web form session |
| created_at | Timestamp at we received the webform for this request |
| webform_questions_data | The object as an Array containing the information submitted as first index, and an object representing the forms questions as a second index. This field is copied in categorized_questions_data, we recommend using categorized_questions_data. |
| rights | An array with first index the rights submitted by user, and second index the rights offered in the webform. This is field is copied in the categorized_rights; we recommend using categorized_rights. |
| remote_ip | String, The IP address of the requester |
| country_of_residence | The country submitted, copied over to categorized_country |
| state | Null if not USA; the USA State otherwise also copied over to categorized_state |