Remove tags from a contact
remove tags from a contact.
DELETE
https://api.centerfy.ai/webhooks/inbound/contacts/:id/tags Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Content-Type | Yes | application/json | JSON request body. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | The contact id. |
Body parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
tag | string | No | — | A single tag to remove. At least one of tag or tags must resolve to a non-empty value (after lowercase and trim) or it returns 400. Tags are matched case-insensitively. Tags not currently on the contact are ignored. |
tags | array | No | — | An array of tag strings to remove. At least one of tag or tags must resolve to a non-empty value or it returns 400. Combined with tag, normalized (lowercase and trim) and de-duped. Tags not present on the contact are ignored. |
Request body
{
"tags": [
"vip",
"newsletter"
],
"tag": "lead"
}Example
curl -X DELETE "https://api.centerfy.ai/webhooks/inbound/contacts/{id}/tags" \
-H "x-api-key: $CENTERFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tags": [
"vip",
"newsletter"
],
"tag": "lead"
}' import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.contacts.removeTags("<contactId>", {
"tags": [
"vip",
"newsletter"
],
"tag": "lead"
});
console.log(result); centerfy contacts remove-tags <contactId> '{"tags":["vip","newsletter"],"tag":"lead"}' MCP tool: centerfy_contacts_remove_tags (see MCP server)
Response
{
"status": "success",
"contact_id": "<contact_id>",
"tags": [
"customer"
],
"removed": [
"vip",
"newsletter",
"lead"
]
}Errors
400— if the id is not a valid UUID or no tags are provided; 404 if the contact does not exist.
Notes
‘tags’ in the response is the remaining tag set; ‘removed’ lists only tags that were actually present and removed. The write fires (and the outbound contact.updated webhook) only when the tag set actually changes.