Records
Delete a CRM Record
Delete a custom object record in the Zeeg CRM API, permanently removing its attribute values, notes, activity logs, and links from related records
DELETE
/
crm
/
{objectSlug}
/
{recordId}
Delete a CRM record
curl --request DELETE \
--url https://api.zeeg.me/v2/crm/{objectSlug}/{recordId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}', 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.zeeg.me/v2/crm/{objectSlug}/{recordId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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.zeeg.me/v2/crm/{objectSlug}/{recordId}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"status": 200,
"message": "Record deleted."
}{
"message": "Unauthenticated."
}{
"error": {
"type": "insufficient_scope",
"message": "Your token is missing the required scope: crm:write.",
"error_id": "546dc15e-a336-4a85-8243-e8bef90e214c",
"required_scopes": [
"crm:write"
]
}
}{
"success": false,
"message": "Record not found.",
"status": 404
}Permanently deletes a CRM record and all data associated with it.
Subsequent
This action is irreversible. Notes, activity logs, and all attribute data stored on the record are deleted immediately and cannot be recovered.
Path parameters
| Parameter | Type | Description |
|---|---|---|
objectSlug | string | The slug of the custom CRM object the record belongs to. |
recordId | string (UUID) | The UUID of the record to delete. |
What gets deleted
Deleting a record removes:- The record itself and all its attribute values.
- Any notes attached to the record.
- Activity log entries for the record.
- The record’s presence in relation attributes on other records (it is removed from any related record’s relation list).
Response
A successful delete returns200 OK with a confirmation message:
{
"success": true,
"status": 200,
"message": "Record deleted."
}
GET requests for the same recordId return 404 Not Found.
Idempotency
Delete is not idempotent — calling it a second time on an already-deleted record returns404, not 200. If your workflow requires idempotent deletes, catch 404 and treat it as a success.
When to use this endpoint
- Hard delete — a user explicitly removes a record from the CRM.
- Cleanup — delete test records, duplicates, or outdated entries.
- GDPR / data erasure — permanently erase a contact’s record in response to a deletion request.
There is no soft-delete or archive on custom object records. If you need to mark a record as inactive without losing data, add a
status attribute to the object schema and set it to archived or inactive via PATCH instead of deleting.Last modified on June 11, 2026
⌘I
Delete a CRM record
curl --request DELETE \
--url https://api.zeeg.me/v2/crm/{objectSlug}/{recordId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}', 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.zeeg.me/v2/crm/{objectSlug}/{recordId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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.zeeg.me/v2/crm/{objectSlug}/{recordId}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/crm/{objectSlug}/{recordId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"status": 200,
"message": "Record deleted."
}{
"message": "Unauthenticated."
}{
"error": {
"type": "insufficient_scope",
"message": "Your token is missing the required scope: crm:write.",
"error_id": "546dc15e-a336-4a85-8243-e8bef90e214c",
"required_scopes": [
"crm:write"
]
}
}{
"success": false,
"message": "Record not found.",
"status": 404
}