Roll back a completed contact import
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback', 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.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "import_01HZX9IMPORT",
"deleted_count": 4980,
"cascade_counts": {
"contacts": 4980,
"segment_members": 120,
"list_members": 340,
"scores": 4980,
"engagement_profiles": 4980,
"consent_records": 4980
},
"rolled_back_at": "2026-02-02T12:05:00.000Z"
},
"meta": {
"request_id": "req_01HZX9ABCDEF",
"timestamp": "2026-02-02T12:05:00.000Z"
}
}Contacts
Roll back a completed contact import
Hard-delete every contact created by an import batch, cascading through list memberships, segments, scores, engagement profiles and consent records in a single transaction. Allowed only within 24 hours of the job finishing (completed, cancelled or failed) so older imports with downstream data cannot be silently orphaned. Returns 409 when the import was already rolled back or the window has expired.
POST
/
api
/
v1
/
contacts
/
imports
/
{id}
/
rollback
Roll back a completed contact import
curl --request POST \
--url https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback', 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.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbit.devotel.io/api/v1/contacts/imports/{id}/rollback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "import_01HZX9IMPORT",
"deleted_count": 4980,
"cascade_counts": {
"contacts": 4980,
"segment_members": 120,
"list_members": 340,
"scores": 4980,
"engagement_profiles": 4980,
"consent_records": 4980
},
"rolled_back_at": "2026-02-02T12:05:00.000Z"
},
"meta": {
"request_id": "req_01HZX9ABCDEF",
"timestamp": "2026-02-02T12:05:00.000Z"
}
}Authorizations
BearerApiKey
Dashboard JWT token from Clerk
Path Parameters
⌘I