Blog Tags

Access and test APIs in beta. 

Please note: This API is currently under development and is subject to change based on testing and feedback. By using these endpoints you agree to adhere to our Developer TermsDeveloper BetaTerms. You also acknowledge and understand the risk associated with testing an unstable API. 

You can use the blog tags API to manage tags for your blog posts. Learn more about how to create and maintain your blog on the HubSpot Knowledge Base.

Changes in V3

The description property has been deprecated and will not be included in the response of any of the V3 endpoints.


The blog tag API endpoints are subject to the limits defined in HubSpot's API usage guidelines. Any limits specific to a certain endpoint will be listed with the associated endpoint in the Endpoints tab above.

Search blog tags

When you make a GET request to /cms/v3/blogs/tags, you can filter and sort the tags returned in the response using the operators and properties below. You can also use the standard filters using the createdAt and updatedAt dates.


Provide any filters as query parameters in your request by adding the property name, followed by two underscore characters, then include the associated operator as a suffix. For example, you can filter the results to only include blog tags where the name property contains the word marketing using the parameter: &name__icontains=marketing.

You can include any number of filters as query parameters in the request URL. All filters are ANDed together. ORing filters is not currently supported.

The available filter types are listed below:

Filter Operator
Equals eq (or none)
Not equal ne
Contains contains
Less than lt
Less than or equal lte
Greater than gt
Greater than or equal gte
Null is_null
Not null not_null
Like like
Not like not_like
Contains (case insensitive) icontains
Starts with startswith
In in

The table below lists the properties that can be filtered on, along with their supported filter types.

Property Supported filters
id Equal, In, Not In
name Equal, Contains
slug Equal
createdAt Equal, Greater than, Greater than or equal , Less than ,Less than or equal
deletedAt Equal, Greater than, Greater than or equal , Less than ,Less than or equal
createdById Equal
updatedById Equal
language In, Not Null
translatedFromId Null, Not Null

To filter blog tags based on a multi-language group, you can include one of the query parameters from the table below. For example, to get blog tags from the German variation of your blog, you'd include language__in=de as a query parameter.

Description Query parameters
Primary blog tag in a multi-language group translatedFromId__is_null
Variation blog tag in a multi-language group translatedFromId__not_null
Blog tag with specific language language__in

Please note: languages with locales (e.g., en-us) are not supported with the language filter.

Sorting and paginating

You can provide sorting and pagination options as query parameters. Specify the property name as the value to the sort query parameter to return the blog tags in the natural order of that property. You can reverse the sorting order by including a dash character before the property name (e.g., sort=-createdAt).

By combining query parameters for filtering, sorting, and paging, you can retrieve blog tags that match more advanced search criteria. For example, the request below fetches blog tags that don't have a language assigned, ordered by the most recently updated. Including the limit and offset parameters below returns the second page of results.

curl \ --request POST \ --header "Content-Type: application/json"

Create blog tags

You can create blog tags by making a POST request to the /cms/v3/blog/posts endpoint, and including a JSON payload that represents the blog tag model. The name field is required when creating a blog tag. To set the URL of a blog tag listing page, you must include the slug field in your request.

Edit blog tags

You can update a blog tag by making a PATCH request to the /cms/v3/blog/posts/{objectId} endpoint and provide the ID of the associated tag as the objectId. Your request's JSON payload should include the blog tag model.

Review the required parameters and the structure of the blog tag model in the Endpoints tab at the top of this article.

Multi-language management

To help you maintain blog tags across multiple languages, HubSpot's CMS allows you to group together blog tags of language variants of the same content. A tag with a language set may only be used on blog posts of the same language. Tags that do not have a language set are considered global and may be used on all blog posts.

To learn more about working with multi-language blog tags, check out this Knowledge Base article.

Create a new language variant

You can create a new language variant for an existing blog tag by making a POST request to the /multi-language/create-language-variant endpoint. The endpoint accepts a JSON payload containing the id of the blog tag to clone and the language identifier of the new variant.

Attach a blog tag to an existing mutli-language group

You can add a blog tag to an existing multi-language group by making a POST request to the /multi-language/attach-to-lang-group endpoint. The endpoint accepts a JSON payload containing the id of the target blog tag, the language identifier of the blog tag being added, and the primaryId of the blog tag designated as the primary blog tag in the target multi-language group.

Detach a blog tag from a multi-language group

To remove a blog tag from a multi-language group, make a POST request to the /multi-language/detach-from-lang-group endpoint. The endpoint accepts a JSON payload containing the id of the target blog tag.

Was this article helpful?
This form is used for documentation feedback only. Learn how to get help with HubSpot.