Contact tags
Manage your account's list of contact tags: the tags your team picks from in the app and that segments filter on. To put a tag on a contact or take it off, use the tag endpoints in the Contacts API; they also create any tag that doesn't exist yet.
Send your key in the x-api-key header and bodies as JSON with Content-Type: application/json. Requests without a valid key get 401 { "message": "Unauthorized" }; other errors look like { "error": "message" }. Tags belong to the account. Lists are plain arrays, paged with page (default 1) and limit (default 10, max 100; higher values are reduced to 100): keep increasing page until you get fewer results than your limit. See REST API for your API host and key.
The tag object
idstringnamestringcanonicalstringcreatedAt, updatedAtstringOther values saved on a tag in the app may also be returned.
{
"id": "Tg5pQ1wZr8",
"name": "vip",
"canonical": "vip",
"createdAt": "2026-10-12T14:05:11.000Z",
"updatedAt": "2026-10-12T14:05:11.000Z"
}
List tags
/v1/contactTagssearchTextstringpageintegerdefault 1limitintegerdefault 10100. Higher values are reduced to 100.200 OK: a JSON array of tags. When it has fewer than limit items, it's the last page.
Errors
| Status | Body | When |
|---|---|---|
500 | { "error": "Could not retrieve Contact Tags" } | The request could not be completed. Retry. |
curl "https://api.whauto.chat/v1/contactTags?searchText=vip&page=1&limit=100" \
-H "x-api-key: $WHAUTOCHAT_API_KEY"
[
{
"id": "Tg5pQ1wZr8",
"name": "vip",
"canonical": "vip",
"createdAt": "2026-10-12T14:05:11.000Z",
"updatedAt": "2026-10-12T14:05:11.000Z"
}
]
Create a tag
/v1/contactTagsnamestringrequired201 Created: the new tag.
This endpoint doesn't check for an existing tag with the same name, so calling it twice creates two tags. Search with GET /v1/contactTags?searchText= first if you're not sure the tag exists.
Errors
| Status | Body | When |
|---|---|---|
400 | { "error": "name cannot be empty" } | name is missing |
500 | { "error": "Could not create Contact Tag" } | The request could not be completed. Retry. |
curl -X POST https://api.whauto.chat/v1/contactTags \
-H "x-api-key: $WHAUTOCHAT_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "black-friday-2026" }'
{
"id": "Tg9hR4kLm2",
"name": "black-friday-2026",
"canonical": "black-friday-2026",
"createdAt": "2026-10-14T09:30:00.000Z",
"updatedAt": "2026-10-14T09:30:00.000Z"
}
Get a tag
/v1/contactTags/{id}idstringrequired200 OK: the tag.
Errors
| Status | Body | When |
|---|---|---|
404 | { "error": "Contact Tag not found" } | The tag isn't in your account |
500 | { "error": "Could not retrieve Contact Tag" } | The request could not be completed. Retry. |
curl "https://api.whauto.chat/v1/contactTags/Tg5pQ1wZr8" \
-H "x-api-key: $WHAUTOCHAT_API_KEY"
{
"id": "Tg5pQ1wZr8",
"name": "vip",
"canonical": "vip",
"createdAt": "2026-10-12T14:05:11.000Z",
"updatedAt": "2026-10-12T14:05:11.000Z"
}
Delete a tag
/v1/contactTags/{id}idstringrequiredPermanently deletes the tag from your account's tag list. It doesn't remove the tag name from contacts that already have it; use remove tags for that.
Errors
| Status | Body | When |
|---|---|---|
404 | { "error": "Contact Tag not found" } | The tag isn't in your account |
500 | { "error": "Could not delete Contact Tag" } | The request could not be completed. Retry. |
curl -X DELETE https://api.whauto.chat/v1/contactTags/Tg9hR4kLm2 \
-H "x-api-key: $WHAUTOCHAT_API_KEY"
{ "success": true }