GET Posts
Fetch a list of published posts with pagination support.
Endpoint
Endpoint
GET /api/blogs/{blogId}/postsQuery Parameters
page- Page number (default: 1)limit- Posts per page (default: 10)category- Filter by category ID (optional)language- Filter by language code (ISO 639-1, optional)- Examples:
en(English),es(Spanish),fr(French) - If omitted, returns posts in all languages
- Each post in the response includes an
availableLanguagesarray showing all available translations
- Examples:
Response
Response
{ "data": [ { "id": "clx1234567890", "title": "My First Post", "slug": "my-first-post", "excerpt": "A short description of the post", "coverImage": "https://example.com/image.jpg", "language": "en", "html": "<p class=\"zenex-cms__paragraph\">A short description of the post</p>", "publishedAt": "2024-01-01T00:00:00.000Z", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z", "categories": [ { "id": "cat123", "name": "Technology", "slug": "technology" } ], "tags": [ { "id": "tag123", "name": "JavaScript", "slug": "javascript" } ], "metaTitle": "SEO optimized title", "metaDescription": "SEO description", "ogImage": "https://example.com/og-image.jpg", "ogTitle": "Social media title", "ogDescription": "Social media description", "canonicalUrl": "https://example.com/blog/my-first-post", "keywords": "javascript, web development" } ], "pagination": { "page": 1, "limit": 10, "total": 42, "totalPages": 5 }}Examples
Basic Example
example.ts
const blogId = "your-blog-id";const page = 1;const limit = 10;
const res = await fetch( `https://yourdomain.com/api/blogs/${blogId}/posts?page=${page}&limit=${limit}`);const { data: posts, pagination } = await res.json();
console.log(`Total posts: ${pagination.total}`);console.log(`Total pages: ${pagination.totalPages}`);
// Render content using post.html// See "GET Single Post" documentation for styling instructions.Filter by Language
filter-by-language.ts
const blogId = "your-blog-id";const language = "es"; // Spanish
// Fetch only Spanish postsconst res = await fetch( `https://yourdomain.com/api/blogs/${blogId}/posts?language=${language}`);const { data: posts } = await res.json();
// All posts in the response will have language: "es"posts.forEach(post => { console.log(`${post.title} (Language: ${post.language})`); console.log(`Available translations: ${post.availableLanguages.join(", ")}`);});Get All Languages
all-languages.ts
const blogId = "your-blog-id";
// Fetch posts in all languages (no language parameter)const res = await fetch( `https://yourdomain.com/api/blogs/${blogId}/posts`);const { data: posts } = await res.json();
// Group posts by languageconst postsByLanguage = posts.reduce((acc, post) => { const lang = post.language || "unknown"; if (!acc[lang]) acc[lang] = []; acc[lang].push(post); return acc;}, {} as Record<string, typeof posts>);
console.log("Posts by language:", postsByLanguage);