Clients
Delete client contact
Delete a contact from a client.
DELETE /teams/{teamId}/clients/{clientId}/contacts/{contactId}
Deletes the contact from the client. You cannot undo this. When the contact is deleted, the API returns { "deleted": true }.
Authentication: Bearer token · Permission:
clients:delete · Team permission:client_contacts.delete · Rate limit: default (120 / 60s)The key holder's role must include Delete client contacts (Owner, Admin and Deputy Admin include it), and the key holder must have a seat in the team. See the permissions matrix. The API key needs the clients:delete scope; clients:write is not sufficient.
Briefings keep sending to the address. A briefing stores its own list of recipients. When you delete a contact, briefings that send to the contact's email address continue to send to it. To stop them, remove the address from each briefing. The contact's
briefingCount tells you how many briefings send to it. Read it with get client contact before you delete the contact.A team whose plan has been cancelled cannot make changes. Write requests fail with
402 PAYMENT_REQUIRED until the subscription is reactivated.Path parameters
teamId
string · uuid v7 required
The team the client belongs to.
clientId
string · uuid v7 required
The ID of the contact's client.
contactId
string · uuid v7 required
The ID of the contact to delete, from list client contacts.
Request
curl -X DELETE https://api.twominutereports.com/v1/teams/0190f8b0-1a2b-7c3d-8e4f-5a6b7c8d9e0f/clients/0190f8c0-1a2b-7c3d-8e4f-5a6b7c8d9e0f/contacts/0190f8d2-6b7c-7d8e-9f0a-1b2c3d4e5f6a \
-H "Authorization: Bearer tmrc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response
{
"success": true,
"data": { "deleted": true }
}
{
"success": false,
"error": { "code": "BAD_REQUEST", "message": "Invalid UUID: \"abc\"" }
}
{
"success": false,
"error": { "code": "PAYMENT_REQUIRED", "message": "Your team's plan has been cancelled. Please reactivate your subscription to continue." }
}
The API key does not have the clients:delete scope.
{
"success": false,
"error": { "code": "INSUFFICIENT_PERMISSIONS", "message": "This API key is missing the `clients:delete` permission required for this endpoint. Grant it to the key under Settings → API Keys (https://hub.twominutereports.com/settings?tab=user-api-keys), or use a key that has it." }
}
The key holder's role does not include Delete client contacts.
{
"success": false,
"error": { "code": "INSUFFICIENT_ROLE", "message": "[email protected] is not allowed to use client_contacts.delete. This needs a role that includes it; their role is editor." }
}
The key holder's role allows this, but they do not have a seat in the team.
{
"success": false,
"error": { "code": "SEAT_REQUIRED", "message": "[email protected] needs a seat in this team to use client_contacts.delete. Their role allows it — an Admin can assign a seat in Team settings." }
}
Returned when the contact does not exist, belongs to a different client, or belongs to a different team. A contact that is already deleted also returns 404.
{
"success": false,
"error": { "code": "NOT_FOUND", "message": "Contact not found" }
}