Skip to content

Tags ​

Tags are labels you can attach to contacts.

The tag object ​

json
{
  "id": 5,
  "name": "VIP",
  "color": "#f59e0b",
  "created_at": "2026-02-01T10:00:00.000000Z",
  "updated_at": "2026-02-01T10:00:00.000000Z"
}

Endpoints ​

MethodPathPermissionDescription
GET/tagstags:readList tags, newest first (paginated). Query: search
POST/tagstags:writeCreate a tag
GET/tags/{id}tags:readGet a tag
PUT/tags/{id}tags:writeUpdate a tag
DELETE/tags/{id}tags:writeDelete a tag. Returns 204.
GET/tags/{id}/contactstags:readContacts with this tag (paginated)
POST/tags/{id}/contactstags:writeAdd the tag to contacts

List tags ​

GET /tags

Returns tags from the token workspace. Results default to created_at desc, then id desc. Invalid query values return 422.

QueryTypeDescription
pageintegerPage number, minimum 1, default 1.
per_pageintegerTags per page, from 1 to 100, default 15.
searchstringPartial name search. Every term must match; at most six terms are used.
colorstringExact tag color.
has_contactsboolean1 keeps tags with contacts; 0 keeps unused tags.
sortenumcreated_at, updated_at, name, or contacts_count.
directionenumasc or desc. Default desc.
bash
curl --get https://app.beeving.com/api/v1/tags \
  -H "Authorization: Bearer TOKEN" \
  -H "Accept: application/json" \
  --data-urlencode "search=priority customer" \
  --data-urlencode "has_contacts=1" \
  --data-urlencode "sort=name" \
  --data-urlencode "direction=asc"

List contacts with a tag ​

GET /tags/{id}/contacts

The parent tag and returned contacts are both restricted to the token workspace. A tag from another workspace returns 404.

QueryTypeDescription
page, per_pageintegerPage defaults to 1. Page size is from 1 to 100 and defaults to 15.
searchstringPartial contact search over identity, name, job title and linked company.
statusenumactive, unsubscribed, bounced, or complained.
lifecycle_stageenumsubscriber, lead, marketing_qualified_lead, sales_qualified_lead, opportunity, customer, evangelist, or other.
company_idintegerOnly contacts linked to this workspace company.
list_id, tag_idintegerIntersect with a workspace list or another tag. A foreign ID returns 422.
has_email, has_linkedin, has_companyboolean1 requires the value or relation; 0 requires it to be absent.
sortenumcreated_at, updated_at, first_name, last_name, email, linkedin_url, job_title, status, or lifecycle_stage.
directionenumasc or desc. Default desc.
bash
curl --get https://app.beeving.com/api/v1/tags/5/contacts \
  -H "Authorization: Bearer TOKEN" \
  -H "Accept: application/json" \
  --data-urlencode "status=active" \
  --data-urlencode "has_email=1" \
  --data-urlencode "sort=created_at" \
  --data-urlencode "direction=desc"

Both listing responses contain data, navigation URLs in links, and meta with current_page, last_page, per_page, total, and count for the current page.

Create / update ​

FieldTypeRules
namestringRequired, on both create and update. Max 50 characters and unique in the workspace
colorstringHex color such as #f59e0b. Defaults to #6366f1

201 on create and 200 on update. Both return { "data": Tag }.

Tag contacts ​

POST /tags/{id}/contacts
json
{ "contact_ids": [12, 13, 14] }

You can send up to 1000 IDs. IDs that don't belong to your workspace are ignored.

200: { "data": { "message": "Tag added to 3 contacts" }, "count": 3 }

To remove tags from a contact, send the full tags array to PUT /contacts/{id}.

API v1.0