Endpoint Alias : This endpoint is an alias for /api/v1/leads/bulk-delete. Both endpoints are functionally identical - use whichever naming convention fits your integration.
Why POST? This endpoint uses POST instead of DELETE because DELETE requests with a body are not universally supported by all HTTP clients and proxies.
Record Lookup
Records are identified by externalId or phoneNumber, not internal IDs.
Each record must have at least one of phoneNumber or externalId. If both are provided, externalId takes priority for the lookup.
Authentication
Your API key with write scope
Request Body
The ID of the campaign these records belong to
Array of record identifiers to delete (max 1000 per request) Show Record Identifier Properties
Phone number in E.164 format. Required if externalId is not provided.
Your CRM’s internal ID. Required if phoneNumber is not provided.
Response
Whether the request was successful
Number of records successfully deleted
Number of records that were not found in the campaign
Array of identifiers for deleted records
Array of identifiers that were not found
Error message if request failed
Examples
curl -X POST https://YOUR_DEPLOYMENT.lupitor.com/api/v1/records/bulk-delete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"campaignId": "YOUR_CAMPAIGN_ID",
"leads": [
{ "externalId": "CRM_001" },
{ "externalId": "CRM_002" },
{ "phoneNumber": "+15555551234" }
]
}'
Success Response - All Deleted
Success Response - Partial Delete
{
"success" : true ,
"data" : {
"deleted" : 3 ,
"notFound" : 0 ,
"deletedIdentifiers" : [
"CRM_001" ,
"CRM_002" ,
"+15555551234"
],
"notFoundIdentifiers" : []
},
"error" : null
}
Notes
Permanent Deletion : This action cannot be undone. Records will be permanently deleted.
Need the record data? Fetch the records first, then delete them.