Blog
Publish and manage blog posts with categories, tags, multi-image support, and scheduled publishing.
Endpoints (11)
List published blog posts with optional filters. Default: only published posts, newest first.
| Field | Type | Required | Description |
|---|---|---|---|
category_slug |
string | No | Filter by category slug. |
tag |
string | No | Filter by tag (exact match in tags JSON array). |
status |
string | No | Filter by status: draft, published, scheduled, all. Default: published. Anonymous callers are restricted to published only. |
page |
integer | No | Page number for pagination. Default: 1. |
per_page |
integer | No | Items per page. Default: 10, max: 50. |
search |
string | No | Search in title and content. |
Get a single blog post by slug. Includes category info and all images.
| Field | Type | Required | Description |
|---|---|---|---|
slug |
string | ✓ Yes | Post slug. |
List all blog categories with post count (only published posts counted).
| Field | Type | Required | Description |
|---|---|---|---|
flat |
boolean | No | If true, return flat list. If false (default), return nested tree. |
Generate RSS 2.0 XML feed of latest published posts.
| Field | Type | Required | Description |
|---|---|---|---|
limit |
integer | No | Number of posts in feed. Default: 20, max: 50. |
Create a new blog post. Status defaults to "draft".
| Field | Type | Required | Description |
|---|---|---|---|
title |
string | ✓ Yes | Post title. |
slug |
string | No | URL slug. Auto-generated from title if omitted. |
content |
string | No | HTML content of the post. |
excerpt |
string | No | Short summary for listings and RSS. |
featured_image |
string | No | Main image URL (PAPI asset CDN URL). |
images |
array | No | Additional image URLs (PAPI asset CDN URLs). |
author_name |
string | No | Author display name. |
author_email |
string | No | Author email. |
category_id |
integer | No | Category ID. |
tags |
array | No | Array of tag strings, e.g. ["tech", "ai"]. |
status |
string | No | Post status: draft (default), published, scheduled. |
published_at |
string | No | Publish datetime (ISO 8601). Required when status=scheduled. Auto-set to now when status=published and omitted. |
meta_title |
string | No | SEO title override. |
meta_description |
string | No | SEO meta description. |
Update an existing blog post. Only provided fields are updated (partial update).
| Field | Type | Required | Description |
|---|---|---|---|
id |
integer | ✓ Yes | Post ID to update. |
title |
string | No | Post title. |
slug |
string | No | URL slug. |
content |
string | No | HTML content. |
excerpt |
string | No | Short summary. |
featured_image |
string | No | Main image URL. |
images |
array | No | Additional image URLs. |
author_name |
string | No | Author display name. |
category_id |
integer | No | Category ID. |
tags |
array | No | Tags array. |
status |
string | No | Status: draft, published, scheduled. |
published_at |
string | No | Publish datetime. |
meta_title |
string | No | SEO title. |
meta_description |
string | No | SEO meta description. |
Delete a blog post permanently.
| Field | Type | Required | Description |
|---|---|---|---|
id |
integer | ✓ Yes | Post ID to delete. |
Create a blog category. Supports nesting via parent_id.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ Yes | Category name. |
slug |
string | No | URL slug. Auto-generated from name if omitted. |
description |
string | No | Category description. |
parent_id |
integer | No | Parent category ID for nesting. |
sort_order |
integer | No | Sort order. Default: 0. |
Update a blog category.
| Field | Type | Required | Description |
|---|---|---|---|
id |
integer | ✓ Yes | Category ID. |
name |
string | No | Category name. |
slug |
string | No | URL slug. |
description |
string | No | Category description. |
parent_id |
integer | No | Parent category ID. |
sort_order |
integer | No | Sort order. |
Delete a blog category. Posts in this category get category_id set to NULL.
| Field | Type | Required | Description |
|---|---|---|---|
id |
integer | ✓ Yes | Category ID to delete. |
Auto-publish posts where status=scheduled and published_at <= now. Designed for AAPI scheduled task (every 15 min).
No input parameters required.
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| list-posts | blog_list_posts |
| get-post | blog_get_post |
| list-categories | blog_list_categories |
| generate-rss | blog_generate_rss |
| create-post | blog_create_post |
| update-post | blog_update_post |
| delete-post | blog_delete_post |
| create-category | blog_create_category |
| update-category | blog_update_category |
| delete-category | blog_delete_category |
| publish-scheduled | blog_publish_scheduled |