Blogs::Post

List Blog Posts

Changed on

List posts for the given blog. When importing content from an external source, page through this list first so you do not create a duplicate post, see Discover the destination and check for duplicates in the Import External Blog Post Skill.

get/blogs/{blog_id}/posts

Request

Path parameters

blog_idstring required

Query parameters

afterstring

ID of item after which the collection should be returned. More examples and info about pagination in our guides.

per_pageinteger

Records per page. Defaults to 20; raise it up to 100 for bulk reads. A larger value returns 100 records. Zero, a negative or a non-integer value is a 422. The Link next-page URL keeps the value, so a client following it keeps the page size. More in our guides.

sort_order'asc' | 'desc'

Sort order of a list response. Use 'desc' to reverse the default 'asc' (ascending) sort order. Examples in our guides.

sort_property'id' | 'updated_at'

Sort property of a list response. The default is id and thus the created_at order. If you sort by other properties, we additionally sort by id implicitly as a secondary sort property, so that you can rely on the sort order to be deterministic even if the main sort property ends up with the same values.

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 new optional query request parameter per_page

    • info

      for the path request parameter blog_id, the type was generalized from integer to string

    • info

      added the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status