Delete a customer (soft)
Soft-deletes the customer. The row remains in the database but disappears from list and lookup results. Appointments and sessions tied to this customer are preserved.
Authorization
AuthorizationRequiredBearer <token>Send your API key in the Authorization header on every request:
Authorization: Bearer sk_live_.... Keys are created in the admin UI under
Settings → API Keys and are project-scoped.
In: header
Path Parameters
idRequiredstringCustomer ID (prefixed with cust_).
Response Body
Deleted.
TypeScript Definitions
Use the response body type in TypeScript.
idstringobjectstring"customer"deletedbooleanResource not found.
TypeScript Definitions
Use the response body type in TypeScript.
errorRequiredobjectcurl -X DELETE "https://api.meetdolores.ai/v1/customers/string" \
-H "Authorization: Bearer <token>"fetch("https://api.meetdolores.ai/v1/customers/string", {
headers: {
"Authorization": "Bearer <token>"
}
})package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.meetdolores.ai/v1/customers/string"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}import requests
url = "https://api.meetdolores.ai/v1/customers/string"
response = requests.request("DELETE", url, headers = {
"Authorization": "Bearer <token>"
})
print(response.text)require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.meetdolores.ai/v1/customers/cust_01HXY...')
req = Net::HTTP::Delete.new(uri, {
'Authorization' => "Bearer #{ENV['DOLORES_API_KEY']}",
})
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts res.body<?php
$ch = curl_init('https://api.meetdolores.ai/v1/customers/cust_01HXY...');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('DOLORES_API_KEY'),
],
]);
echo curl_exec($ch);{
"id": "string",
"object": "customer",
"deleted": true
}{
"error": {
"type": "invalid_request_error",
"code": "phone_invalid_format",
"message": "string",
"param": "string",
"request_id": "string"
}
}Update a customer
Partial update. Send only the fields you want to change. Passing `null` clears nullable fields. `metadata` replaces wholesale.
Call a customer now
Places a one-shot outbound call to the customer's phone number immediately. Unlike trigger-field outbound dialing configured on a workflow, this call is **never retried** — if the customer doesn't pick up, the attempt simply ends. The call is recorded as an outbound session under this customer's phone. Track its outcome via `GET /v1/sessions/{session_id}` — the session's `call_status` field moves from `dialing` to a terminal `completed` / `no_answer` / `failed` / `invalid_number` once the carrier reports the result — or list the customer's calls with `GET /v1/sessions?customer_phone=...&direction=outbound`. On a WhatsApp business number, Meta requires the customer's call consent before dialing; when consent isn't on file yet this endpoint returns `202` with `status: consent_pending` and the call is placed automatically once the customer accepts. Returns `400` when the customer has no phone number on record (`customer_no_phone`) or the stored number is not a dialable E.164 phone number (`customer_invalid_phone`).