Blogs::Post

Fetch Blog Post

Changed on

Retrieve a blog post.

get/blogs/posts/{id}

Request

Path parameters

idstring 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.

Response

OK

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. Use the value returned here rather than composing a post URL yourself. See Discover the destination and check for duplicates in the Import External Blog Post Skill.

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. This serialization is lossy: elements PML has no equivalent for are omitted with no error and no placeholder, so a round-tripped read is not a safe basis for rewriting a post (see the approval guardrail). An empty string therefore does not prove the post is empty: a post built entirely from elements PML cannot express also reads back empty. The value <!-- markup unavailable: page tree could not be serialized --> means the read failed; treat the post as unreadable and do not write that string back. 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"
}

Changes

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status