Skip to main content
POST
https://sandbox.getcollate.io/api
/
v1
/
tags
POST /v1/tags
from metadata.sdk import configure
from metadata.sdk.entities import Tags
from metadata.generated.schema.api.classification.createTag import CreateTagRequest

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

request = CreateTagRequest(
    name="Bronze",
    classification="Certification",
    description="Bronze certified Data Asset.",
    style={"color": "#C08320"}
)

tag = Tags.create(request)
print(f"Created: {tag.fullyQualifiedName}")
{
  "id": "68ec158c-5f5e-4277-8a19-5e9e0cd5294f",
  "name": "Bronze",
  "fullyQualifiedName": "Certification.Bronze",
  "description": "Bronze certified Data Asset.",
  "style": {
    "color": "#C08320"
  },
  "version": 0.1,
  "updatedAt": 1769982619666,
  "updatedBy": "admin",
  "classification": {
    "id": "06d90883-6be9-4f7e-9475-753f10a95e94",
    "type": "classification",
    "name": "Certification",
    "fullyQualifiedName": "Certification",
    "deleted": false
  },
  "deleted": false,
  "owners": [],
  "provider": "system",
  "mutuallyExclusive": false
}

Create a Tag

Create a new tag within a classification.

Body Parameters

name
string
required
Name of the tag. Must be unique within the parent classification or parent tag.
classification
string
required
Fully qualified name of the parent classification (e.g., Certification).
displayName
string
Human-readable display name for the tag.
description
string
Description of the tag in Markdown format.
parent
string
Fully qualified name of the parent tag for creating nested tags (e.g., PII.Sensitive).
style
object
Visual styling for the tag.
owners
array
Array of owner references (users or teams) to assign to the tag.
provider
string
Provider of the tag: user (custom) or system (built-in).
POST /v1/tags
from metadata.sdk import configure
from metadata.sdk.entities import Tags
from metadata.generated.schema.api.classification.createTag import CreateTagRequest

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

request = CreateTagRequest(
    name="Bronze",
    classification="Certification",
    description="Bronze certified Data Asset.",
    style={"color": "#C08320"}
)

tag = Tags.create(request)
print(f"Created: {tag.fullyQualifiedName}")
{
  "id": "68ec158c-5f5e-4277-8a19-5e9e0cd5294f",
  "name": "Bronze",
  "fullyQualifiedName": "Certification.Bronze",
  "description": "Bronze certified Data Asset.",
  "style": {
    "color": "#C08320"
  },
  "version": 0.1,
  "updatedAt": 1769982619666,
  "updatedBy": "admin",
  "classification": {
    "id": "06d90883-6be9-4f7e-9475-753f10a95e94",
    "type": "classification",
    "name": "Certification",
    "fullyQualifiedName": "Certification",
    "deleted": false
  },
  "deleted": false,
  "owners": [],
  "provider": "system",
  "mutuallyExclusive": false
}

Returns

Returns the created tag object with all specified properties and system-generated fields.

Response

id
string
Unique identifier for the tag (UUID format).
name
string
Tag name.
fullyQualifiedName
string
Fully qualified name in format classification.tagName or classification.parent.child.
displayName
string
Human-readable display name.
description
string
Description of the tag in Markdown format.
style
object
Visual styling for the tag.
classification
object
Reference to the parent classification.
provider
string
Provider: user or system.
owners
array
List of owners assigned to the tag.
version
number
Version number for the entity (starts at 0.1).

Create or Update (PUT)

Use PUT /v1/tags instead of POST to perform an upsert. If a tag with the same fullyQualifiedName already exists, it will be updated; otherwise, a new tag is created. The request body is the same as POST.
curl -X PUT "{base_url}/api/v1/tags" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{ ... same body as POST ... }'
PUT will not return a 409 conflict error if the entity already exists — it will update the existing entity instead.

Error Handling

CodeError TypeDescription
400BAD_REQUESTInvalid request body or missing required fields
401UNAUTHORIZEDInvalid or missing authentication token
403FORBIDDENUser lacks permission to create tags
409ENTITY_ALREADY_EXISTSTag with same name already exists in classification (POST only)