Articles
The blog engine every site gets. Articles support drafts, scheduling-ready statuses, author bylines, and full SEO control.
| Method | Endpoint | Description |
| GET | /sites/:id/articles | List articles (all statuses) |
| POST | /sites/:id/articles | Create article |
| GET | /articles/:aid | Article detail |
| PATCH | /articles/:aid | Update — publish by setting status: "published" |
| DELETE | /articles/:aid | Delete |
Article payload
| Field | Type | Description |
title required | string | Article title. |
slug | string | Empty → generated from title. Public URL: /blog/:slug/. |
h1 | string | H1 override (defaults to title). |
subtitle | string | Standfirst under the title. |
content | string (HTML) | Article body. |
image | string|null | Featured image URL (media library, kind article_image). |
author_id | uuid | Byline — see Authors below. |
offer_id | uuid | Link a reviewed offer — adds its CTA card inside the article. |
category_id | uuid | Group the article under a site category. |
status | string | draft (default) | published. Only published render publicly. |
meta_title / meta_description | string | SEO overrides. |
focus_keyword | string | Target keyword — shown in the panel's content list for SEO tracking. |
Publish an article
curl -X POST $API/sites/$SITE_ID/articles \
-H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{
"title": "How we test password managers",
"subtitle": "Our lab setup, scoring rubric and what we refuse to rank",
"content": "<p>Every product in our toplists goes through…</p>",
"status": "published",
"focus_keyword": "password manager testing",
"meta_description": "Our full testing methodology for password managers."
}'
Static pages
Free-form pages (privacy policy, contact, about) that render in the footer or header navigation.
| Method | Endpoint | Description |
| GET | /sites/:id/pages | List pages |
| POST | /sites/:id/pages | Create page |
| PATCH | /pages/:pid | Update |
| DELETE | /pages/:pid | Delete |
| Field | Type | Description |
title required | string | Page title. |
slug | string | Empty → generated from title. Public URL: /page/:slug/ — legacy permalinks keep working. |
content | string (HTML) | Page body. |
placement | string | footer (default) | header — which navigation shows the link. |
sort_order | int | Order within the nav group. |
Article comments
Visitors can comment under articles; comments queue for moderation like reviews. Comments can also be added directly via the API (operator/automation), publishing immediately or queuing.
/article-comments{"site_id": "…", "article_id": "…", "author_name": "…", "content": "…", "status": "approved"}(author_emailoptional);approvedpublishes,pendingqueues/article-comments?site_id=…&status=pending/article-comments/:cid/approve/article-comments/:cid/reject/article-comments/:cid