Overview
Tags are workspace labels that you apply directly to contacts and to companies, for example “Evento 1” on the contacts who attended an event. A contact or company can carry several tags, independently of the lists it belongs to. Contact tags and company tags are two separate pools. A contact tag ID never works on a company endpoint, and the reverse is also true.Tags are enabled per workspace. When they are not enabled, every tag endpoint and every search that filters
by tag answers
400 with details.code set to ENTITY_TAGS_NOT_ENABLED. Retrying does not help: ask your
Enginy account contact to enable them.Endpoints
Reads need
CONTACTS_READ or COMPANIES_READ. Writes need CONTACTS_WRITE or COMPANIES_WRITE, and are refused when the API key’s creator is restricted from editing.
Create a Tag
A tag has a name of 1 to 20 characters and a#rrggbb colour. The Enginy app offers #767676 (gray), #E99342 (orange), #E367BC (pink), #6F78F0 (purple), #F24473 (red), #5BBE7E (green), #57A4E9 (blue) and #5EB2CC (cyan).
201 with created: true. If “Evento 1” already exists, the call answers 200 with that tag and created: false, so you can call it safely before every import. Renaming a tag onto another tag’s name answers 409.
Apply and Remove Tags
POST /v1/contacts/tags/add applies every tag in tagIds to every contact in contactIds. The company endpoint takes companyIds instead.
- One call takes up to 10,000 records and 50 tags. Split larger selections into several calls.
- Adding is idempotent: pairs that already exist are skipped, and
assignedcounts only the new ones. - Removing deletes exactly the named record and tag pairs. The records’ other tags stay.
- A record or tag ID outside your workspace rejects the whole call with
404before anything is written.
Read Tags on Records
Every contact and company response carries atags array of { id, name, color }, oldest assignment first. This covers the list, search and single-record endpoints and the update response. The array is empty when the workspace does not have tags enabled.
Filter Searches by Tag
POST /v1/contacts/search accepts contactTags, the contact’s own tags. POST /v1/companies/search accepts companyTags. Contact search does not filter by the tags of a contact’s company and rejects companyTags as an unknown key. Values are tag IDs, as numbers or strings, and "" means “no tag”.
- In
include, a record matches when it carries any of the tags. Add""to also match records without tags. - In
exclude, a record is dropped when it carries any of the tags. Add""to also drop records without tags.