v1

latestOpenAPI 3.1.0MIT2026-07-243952451019.0 KB
Blogs::Post

Create Blog Post

Create a new post within the given blog.

Pass markup to set the post's visual content via PML. Invalid markup returns 400 and the post is not created. Pass expand[]=markup to have the markup returned in the response.

post/blogs/{blog_id}/posts

Path parameters

blog_idinteger required

Query parameters

expand[]string[]

Expand additional data in the response. Use expand[]=markup to include the PML markup for the post's visual content. Markup is opt-in on every endpoint (show, list, create, update) because PML serialization runs per post. See the Expanding guide for available fields and examples.

Request body

Example request

{
  "blogs_post": {
    "blogs_post": {
      "title": "Getting started with your blog",
      "visibility": "draft",
      "published_at": null,
      "excerpt_content": "An introduction to what you'll find on this blog.",
      "seo_title": "Getting started with your blog",
      "seo_description": "Learn how to make the most of your new blog.",
      "image_id": null,
      "markup": "<section><row cols=\"1\"><column><headline>Hello world</headline></column></row></section>",
      "author_ids": [],
      "tag_ids": [],
      "category_ids": []
    }
  }
}

Response

Created

idinteger

Post ID

public_idstring

The public identifier of the post

blog_idinteger

Blog ID that the post belongs to

titlestring

Title of the post

published_atstring date-time nullable

Date and time the post was published

current_pathstring

The URL path for the post

urlstring

The full public URL of the post

visibility'draft' | 'public' | 'members_only' | 'scheduled'

Visibility status of the post. One of draft, public, members_only, or scheduled.

excerpt_contentstring nullable

Short summary of the blog post

seo_titlestring nullable

SEO page title

seo_descriptionstring nullable

SEO page description

image_idinteger nullable

Featured image ID

image_urlstring nullable

URL of the featured image

markupstring

Expandable The PML (Page Markup Language) representation of the post's visual content. Only returned when expand[]=markup is provided. Empty string when the post has no visual content yet. See the Page Markup Skill for the full DSL reference.

created_atstring date-time

Created at

updated_atstring date-time

Updated at

Example response

{
  "id": 1,
  "public_id": "xYzAbC",
  "blog_id": 1,
  "title": "Getting started with your blog",
  "published_at": "2025-06-01T10:00:00.000Z",
  "current_path": "/blog/getting-started",
  "url": "https://myworkspace.myclickfunnels.com/blog/getting-started",
  "visibility": "public",
  "excerpt_content": "An introduction to what you'll find on this blog.",
  "seo_title": "Getting started with your blog",
  "seo_description": "Learn how to make the most of your new blog.",
  "image_id": 42,
  "image_url": "https://example.myclickfunnels.com/uploads/image/42/file/example.jpg",
  "categories": [
    {
      "name": "Tutorials"
    }
  ],
  "tags": [
    {
      "name": "beginner"
    }
  ],
  "authors": [
    {
      "first_name": "Jane",
      "last_name": "Smith",
      "email_address": "jane@example.com"
    }
  ],
  "created_at": "2025-01-01T00:00:00.000Z",
  "updated_at": "2025-06-01T10:00:00.000Z"
}