Skip to main content
POST
/
cdp
/
v1
/
users
/
_delete
Delete user profiles
curl --request POST \
  --url https://api.zeotap.com/cdp/v1/users/_delete \
  --header 'Content-Type: application/json' \
  --header 'apikey: <api-key>' \
  --header 'scopes: <scopes>' \
  --data '
{
  "orgId": 1539,
  "region": "EU",
  "ids": {
    "AdId": [
      "mock_adid_1",
      "mock_adid_2"
    ]
  },
  "sendEmailNotification": false
}
'
import requests

url = "https://api.zeotap.com/cdp/v1/users/_delete"

payload = {
"orgId": 1539,
"region": "EU",
"ids": { "AdId": ["mock_adid_1", "mock_adid_2"] },
"sendEmailNotification": False
}
headers = {
"scopes": "<scopes>",
"apikey": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {scopes: '<scopes>', apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
orgId: 1539,
region: 'EU',
ids: {AdId: ['mock_adid_1', 'mock_adid_2']},
sendEmailNotification: false
})
};

fetch('https://api.zeotap.com/cdp/v1/users/_delete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zeotap.com/cdp/v1/users/_delete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'orgId' => 1539,
'region' => 'EU',
'ids' => [
'AdId' => [
'mock_adid_1',
'mock_adid_2'
]
],
'sendEmailNotification' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>",
"scopes: <scopes>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.zeotap.com/cdp/v1/users/_delete"

payload := strings.NewReader("{\n \"orgId\": 1539,\n \"region\": \"EU\",\n \"ids\": {\n \"AdId\": [\n \"mock_adid_1\",\n \"mock_adid_2\"\n ]\n },\n \"sendEmailNotification\": false\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("scopes", "<scopes>")
req.Header.Add("apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.zeotap.com/cdp/v1/users/_delete")
.header("scopes", "<scopes>")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"orgId\": 1539,\n \"region\": \"EU\",\n \"ids\": {\n \"AdId\": [\n \"mock_adid_1\",\n \"mock_adid_2\"\n ]\n },\n \"sendEmailNotification\": false\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.zeotap.com/cdp/v1/users/_delete")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["scopes"] = '<scopes>'
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"orgId\": 1539,\n \"region\": \"EU\",\n \"ids\": {\n \"AdId\": [\n \"mock_adid_1\",\n \"mock_adid_2\"\n ]\n },\n \"sendEmailNotification\": false\n}"

response = http.request(request)
puts response.read_body
{
  "ucids": [
    "<string>"
  ],
  "deletedProfiles": [
    "<string>"
  ],
  "profilesNotFound": [
    "<string>"
  ]
}

Authorizations

apikey
string
header
required

Long-lasting client key

Headers

scopes
string
required

Comma-separated list of granted scopes. Allowed values: profile.read, profile.write, profile.delete

Example:

"profile.read,profile.write,profile.delete"

orgId
integer

Zeotap organisation ID. Required when using Okta JWT authentication.

Example:

1577

Body

application/json
orgId
integer
required

Organisation identifier

Example:

1539

region
string
required

Region code to scope the deletion

Example:

"EU"

ids
object
required

Map containing exactly ONE identifier type with an array of values to delete. Supports up to 400 IDs per API call.

Example:
{
"AdId": ["ddd682ec-bbe9-4705-bb02-3b9eacaf93bf"]
}
sendEmailNotification
boolean
default:false

Whether to trigger an email notification upon deletion.

Response

Profiles deleted successfully

ucids
string[]

UCIDs of profiles that were processed

deletedProfiles
string[]

UCIDs of profiles successfully deleted

profilesNotFound
string[]

UCIDs or IDs that could not be matched to any profile

Last modified on March 30, 2026