curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/dataDeletionJobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalIDs": [
"example-user-id"
]
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/dataDeletionJobs"
payload = { "externalIDs": ["example-user-id"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalIDs: ['example-user-id']})
};
fetch('https://api.cloud.corbado.io/v1/observe/dataDeletionJobs', 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.cloud.corbado.io/v1/observe/dataDeletionJobs",
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([
'externalIDs' => [
'example-user-id'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.cloud.corbado.io/v1/observe/dataDeletionJobs"
payload := strings.NewReader("{\n \"externalIDs\": [\n \"example-user-id\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cloud.corbado.io/v1/observe/dataDeletionJobs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"externalIDs\": [\n \"example-user-id\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/dataDeletionJobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalIDs\": [\n \"example-user-id\"\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"externalID": "<string>",
"created": 1752738240000,
"updated": 1752738240000,
"status": "pending"
}
]{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Create data deletion jobs
Accepts 1 to 1,000 external user IDs and returns one asynchronous deletion job per ID. A successful response queues the jobs; use each job ID to check completion. See User data requests.
Required API key permission: observe:dataDeletionJobs:write.
curl --request POST \
--url https://api.cloud.corbado.io/v1/observe/dataDeletionJobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalIDs": [
"example-user-id"
]
}
'import requests
url = "https://api.cloud.corbado.io/v1/observe/dataDeletionJobs"
payload = { "externalIDs": ["example-user-id"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalIDs: ['example-user-id']})
};
fetch('https://api.cloud.corbado.io/v1/observe/dataDeletionJobs', 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.cloud.corbado.io/v1/observe/dataDeletionJobs",
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([
'externalIDs' => [
'example-user-id'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.cloud.corbado.io/v1/observe/dataDeletionJobs"
payload := strings.NewReader("{\n \"externalIDs\": [\n \"example-user-id\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cloud.corbado.io/v1/observe/dataDeletionJobs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"externalIDs\": [\n \"example-user-id\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloud.corbado.io/v1/observe/dataDeletionJobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalIDs\": [\n \"example-user-id\"\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"externalID": "<string>",
"created": 1752738240000,
"updated": 1752738240000,
"status": "pending"
}
]{
"error": {
"message": "Validation failed",
"details": [
{
"field": "projectID",
"message": "required"
}
]
}
}Authorizations
Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.
Body
Array of external user IDs to create deletion jobs for
Response
Data deletion jobs created
ID of the data deletion job
External user ID
Unix timestamp in milliseconds elapsed since January 1, 1970, 00:00:00 UTC
1752738240000
Unix timestamp in milliseconds elapsed since January 1, 1970, 00:00:00 UTC
1752738240000
Current status of the data deletion job
pending, processing, completed Was this page helpful?