Blog API
Fetch published blog posts with rich content and metadata.
GET/api/public/blog
Returns published blog posts with pagination. Posts are returned newest first.
Query Parameters
localestringFilter by locale.
limitnumberMaximum posts to return (default 20, max 100).
offsetnumberPagination offset (default 0).
200Success
json
{
"posts": [
{
"slug": "my-post",
"locale": "fr",
"title": "My First Post",
"excerpt": "A brief excerpt...",
"featuredImage": "https://...",
"author": "John Doe",
"publishedAt": "2025-01-15T12:00:00Z",
"meta": { "title": "My First Post", "description": "A brief excerpt..." }
}
],
"total": 42,
"hasMore": true
}{
"posts": [
{
"slug": "my-post",
"locale": "fr",
"title": "My First Post",
"excerpt": "A brief excerpt...",
"featuredImage": "https://...",
"author": "John Doe",
"publishedAt": "2025-01-15T12:00:00Z",
"meta": { "title": "My First Post", "description": "A brief excerpt..." }
}
],
"total": 42,
"hasMore": true
}GET/api/public/blog/{slug}
Returns a single published blog post with its full content.
Query Parameters
localestringLocale to fetch.
200Success
json
{
"slug": "my-post",
"locale": "fr",
"title": "My First Post",
"excerpt": "A brief excerpt...",
"content": { ... },
"featuredImage": "https://...",
"author": "John Doe",
"publishedAt": "2025-01-15T12:00:00Z",
"meta": { "title": "My First Post", "description": "A brief excerpt..." }
}{
"slug": "my-post",
"locale": "fr",
"title": "My First Post",
"excerpt": "A brief excerpt...",
"content": { ... },
"featuredImage": "https://...",
"author": "John Doe",
"publishedAt": "2025-01-15T12:00:00Z",
"meta": { "title": "My First Post", "description": "A brief excerpt..." }
}404Not Found
json
{ "error": "Post not found" }{ "error": "Post not found" }