canonical: https://jentic.com/apis/hubspot.com/hubspot-cms-tags

# HubSpot Tags

The HubSpot Tags API manages blog tags within the HubSpot CMS, including creation, batch updates, archival, and multi-language tag groupings. It supports attaching tags to language variation groups, designating primary languages, and reading tag metadata for use across HubSpot blog content. Tags are scoped to the HubSpot blog system and link blog posts to topical taxonomies for site search and content organisation.

## For AI agents

Create, update, and organise HubSpot blog tags in batches and across multi-language variation groups. Useful for agents that publish or curate blog taxonomy.

## Scope

Does not handle blog post content, page rendering, or site search indexing - use for HubSpot blog tag taxonomy management only.

## Capabilities

- Create individual or batched blog tags with name and slug values
- Update existing blog tag records and rename tags across the CMS
- Archive blog tags singly or in batches without affecting tagged posts
- Attach blog tags to multi-language variation groups for translated content
- Set a new primary language for a tag's translation group
- Detach a blog tag from its multi-language group
- Retrieve a paginated list of all blog tags or a batch by ID

## Use cases

### Bulk Tag Cleanup

Audit and consolidate a HubSpot blog's tag taxonomy by archiving unused tags and merging duplicates. The Tags API supports batch archive and batch update operations so an agent can process dozens of tag records in a single call without rate-limiting on per-record requests. Suitable for content teams cleaning up legacy blogs or merging blog properties.

Example prompt: Read the full list of blog tags via GET /cms/v3/blogs/tags, identify tags with zero associated posts, and call POST /cms/v3/blogs/tags/batch/archive with the unused tag IDs.

### Multi-Language Blog Tag Localisation

Maintain translated tag variants across a multilingual HubSpot blog. The API exposes endpoints for attaching, detaching, and creating language variations and for setting the primary language of a tag group. This allows an agent to keep tag translations in sync with localised blog posts and reassign primary languages when the source content changes.

Example prompt: Call POST /cms/v3/blogs/tags/multi-language/create-language-variation to create a French variant of an English tag, then POST /cms/v3/blogs/tags/multi-language/attach-to-lang-group to link it to the source group.

### Programmatic Tag Provisioning

Provision a fixed taxonomy of blog tags as part of a HubSpot blog rollout or migration. The batch create endpoint accepts up to 100 tag definitions per call, so a migration script or agent can import a taxonomy from another CMS in seconds rather than creating each tag individually through the UI.

Example prompt: Read a CSV of 50 tag names, build a batch payload, and POST /cms/v3/blogs/tags/batch/create to provision them in one request.

### Agent-Driven Editorial Workflow

Use Jentic to give an editorial AI agent the ability to maintain HubSpot blog tags as part of a wider content workflow. The agent searches Jentic for the relevant tag operation, loads the input schema, and executes the call without browsing HubSpot's developer docs. Credential isolation keeps the HubSpot private app token out of the agent's reasoning context.

Example prompt: Use Jentic search query 'create a HubSpot blog tag', load the schema for POST /cms/v3/blogs/tags, and execute the call with the tag name from the editorial brief.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /cms/v3/blogs/tags | List all blog tags |
| POST | /cms/v3/blogs/tags | Create a new blog tag |
| PATCH | /cms/v3/blogs/tags/{objectId} | Update a blog tag |
| DELETE | /cms/v3/blogs/tags/{objectId} | Archive a blog tag |
| POST | /cms/v3/blogs/tags/batch/create | Create a batch of blog tags |
| POST | /cms/v3/blogs/tags/batch/archive | Archive a batch of blog tags |
| POST | /cms/v3/blogs/tags/multi-language/create-language-variation | Create a translated tag variant |

## Key resources

- **Tags** — Blog tag CRUD and batch operations under /cms/v3/blogs/tags.
- **Multi-language groups** — Endpoints for attaching, detaching, and setting primary languages on tag translation groups.

## Why Jentic

- **Setup:** Wiring HubSpot Tags by hand means registering an OAuth app or minting a private app token, targeting api.hubapi.com, and coding the create, patch, batch, and language-variation calls yourself. Through Jentic you install once, import Tags from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Tags puts the tag id in the URL path (/cms/v3/blogs/tags/{objectId}) for individual edits, so a rule can pin your agent to reading or updating one tag. You choose the operations it may call, so deleting a tag or batch archiving is only available if you include it.
- **Credential handling:** Your HubSpot OAuth token or private app token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a HubSpot blog tag' or 'list blog tags', and Jentic returns the matching Tags operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot CMS Blog Posts** — Manage the blog posts that the tags are applied to.
- **HubSpot CMS Blog Authors** — Manage blog author records that pair with tagged posts.
- **HubSpot CMS Blog Settings** — Configure blog-level settings that govern tag behaviour and language defaults.

## FAQ

### What authentication does the HubSpot Tags API use?

The Tags API accepts HubSpot OAuth 2.0 access tokens (legacy authorization code flow) or a private app token sent in the `private-app-legacy` header. Through Jentic, the token is stored encrypted in the vault and never enters the agent's prompt context.

### Can I update many blog tags in a single request with the Tags API?

Yes. POST /cms/v3/blogs/tags/batch/update accepts a batch of tag updates in one call, and there are matching batch endpoints for create, read, and archive under /cms/v3/blogs/tags/batch/.

### What are the rate limits for the HubSpot Tags API?

HubSpot enforces account-wide CMS API limits - typically 100 requests per 10 seconds for OAuth apps and 250,000 daily on most paid tiers. Use the batch endpoints to reduce request volume on tag-heavy operations.

### How do I create a new blog tag through Jentic?

Search Jentic with the query `create a HubSpot blog tag`, load the schema for POST /cms/v3/blogs/tags, and execute with the tag name and slug. Install the SDK with `pip install jentic` and authenticate using your `JENTIC_AGENT_API_KEY`.

### Does the Tags API support multilingual blog content?

Yes. The endpoints under /cms/v3/blogs/tags/multi-language/ let you attach tags to language groups, create language variations, set a primary language, and detach tags from a group, so a single tag concept can have synchronised translations.

### Can I limit what my agent is allowed to do with the HubSpot Tags API?

Yes. Jentic One is self-hosted by you, so your own rules decide which HubSpot Tags operations and credentials the agent may use. Because the API puts the tag id in the URL path (/cms/v3/blogs/tags/{objectId}), you can pin the agent to reading or updating a single tag, and destructive calls such as DELETE /cms/v3/blogs/tags/{objectId} or POST /cms/v3/blogs/tags/batch/archive are only reachable if you explicitly include them. The stored HubSpot token is injected at execution time and never enters the agent's prompt.
