There's a new version of the HubSpot API

We're also working on a new documentation website, you're invited to check it out and give us your feedback.

Create a new blog post

Last updated May 31, 2023

POST /content/api/v2/blog-posts

Method Details

HTTP Methods:


Content Type:


Response Format:


Requires Authentication?


Rate Limited?






Create a new blog post.

Required Parameters How to use Description
OAuth access token or private app access token Authorization: Bearer {token} header Used to authenticate the request. Please see this page for more details about authentication.

Allowed JSON Fields in the body

Parameter name Type Description
blog_author_id long The integer id of the blog author, look up via the blog authors end point /blogs/v3/blog-authors
campaign string The guid of the marketing campaign this post is associated with
campaign_name string The name of the marketing campaign this post is associated with
content_group_id long The id of the blog that this post belongs to. Get the id by looking at the blog API endpoint /content/api/v2/blogs
featured_image string The URL of the image that the post will use as the featured image. If this is set, you'll also want to make sure that use_featured_image is set to true.
footer_html string Custom HTML for embed codes, javascript that should be placed before the </body> tag of the page
head_html string Custom HTML for embed codes, javascript, etc. that goes in the <head> tag of the page
keywords list A JSON list of keywords and their GUIDs. This list contains key value pairs of "keyword" and "keyword_guid". For example:
  • "keyword" : "sandwiches",
  • "keyword_guid" : "ee7c2292-7a2f-4f0f-81fb-ad0bd9ca4fcb"
The GUID is available from the Keywords API. This list adds keywords to the Optimization tab in HubSpot.
meta_description string A description that goes in <meta> tag on the page
name string The post title and the internal name of the blog post
post_body string The HTML of the main post body
post_summary string The summary of the blog post that will appear on the main listing page
publish_date long The date the blog post is to be published at in milliseconds since the unix epoch. Note that even if this is set to the past or current time, you still need to call the Publish or unpublish a blog post endpoint to trigger a publish event.
publish_immediately string Set this to true if you want to ignore the publish_date setting and set this blog post's publish date when the schedule publish endpoint is called. Note that even if this is set to true, you still need to call the Publish or unpublish a blog post endpoint to trigger a publish event. If you want to set the post's publish date using the publish_date setting, including backdating a post, set this to false.
slug string The path of the URL on which the post will live. Changing this will change the URL.
topic_ids list A json list of topic ids from the topics API ( /content/api/v2/topics )
use_featured_image boolean Controls whether or not the blog post should use the featured image. If featured_image is set, this parameter will need to be true for that image to show up.
widgets string A data structure containing the data for all the modules for this post. This will only be populated if the blog template has editable widgets defined.

Expected Response

A successful POST will result in a 201 response. The body of the response will be identical to a GET request.