Skip to main content
GET
/
api
/
public
/
blogPosts
{
  "BlogPosts": {},
  "BlogPosts.Records": [
    {}
  ],
  "BlogPosts.CurrentPage": 123,
  "BlogPosts.TotalItems": 123,
  "BlogPosts.TotalPages": 123,
  "BlogPosts.HasNextPage": true,
  "Categories": [
    {}
  ],
  "Category": {}
}

List Blog Posts

Returns a paginated list of published blog posts for the current location. Supports filtering by category, keyword search, and featured flag.

Authentication

No authentication required.

Query Parameters

page
number
required
1-based page number.
top
number
required
Number of posts per page.
categoryId
number
Filter to posts belonging to a specific category. Omit to return posts across all categories.
Keyword filter applied to post title and body. URL-encoded.
When true, returns only blog posts marked as featured by the operator.
_shape
string
Comma-separated list of field paths to include in the response. When provided, only the specified fields are returned — useful for reducing payload size. Supports nested paths using dot notation. Example: _shape=BlogPosts.Records.Title,BlogPosts.Records.SummaryText,BlogPosts.Records.PublishDate.

Response

Returns a BlogPostList object containing paginated blog posts, available categories, and the currently selected category.
BlogPosts
ApiListResult<BlogPost>
Paginated wrapper containing blog post records.
BlogPosts.Records
BlogPost[]
Array of blog post summaries for the current page.
BlogPosts.CurrentPage
number
Current page number.
BlogPosts.TotalItems
number
Total number of matching posts.
BlogPosts.TotalPages
number
Total number of pages.
BlogPosts.HasNextPage
boolean
Whether there are more pages after the current one.
Categories
BlogCategory[]
Array of all available blog categories.
Category
BlogCategory
The currently selected category (when filtering by categoryId).

Examples

Fetch first page of posts

GET /api/public/blogPosts?page=1&top=10

TypeScript Integration

import endpoints from '@/api/endpoints'

const { resource: posts } = useTypedData(
  httpClient,
  endpoints.blog.blogPosts({
    page: 1,
    top: 10,
    featured: true,
  }),
)