Feeds for your CMS
Your published stories as JSON Feed and RSS: the simplest way to show your newsroom inside the website you already run.
01
The feed
- JSON Feed 1.1:
https://api.arm-age.com/v1/feed.json - RSS 2.0:
https://api.arm-age.com/v1/feed.xml, with the full body incontent:encoded
Both carry the 50 most recent published stories of your organization, newest first: title, summary, the body as plain text and as minimal HTML (paragraphs, headings, lists, quotes, https links; everything escaped), topics as tags, publication date. Images are left out: covers carry their own clearance and credit, so place them in your CMS. Drafts and stories waiting for approval never appear.
Until Armage's newsroom runs for client organizations, a client organization's feed is empty.
02
A key for the feed
Many CMS importers cannot send an Authorization header, so the feed also takes the key in its URL. Only a key whose only scope is feed:read is accepted there; any broader key in a URL is refused. Create one on the API page of the workspace (app.arm-age.com/api), and treat the URL like a password.
https://api.arm-age.com/v1/feed.xml?key=armk_live_…Set your importer to check every 15 to 60 minutes; the feed is not meant to be polled every minute. When the key expires, create a new one and update the URL.
03
WordPress
Pull, no code. WordPress has no built-in feed import. RSS import plugins can read the feed URL above and list or import its items; several can create posts from feed items, often in a paid edition, so check the plugin's own documentation for that.
Push, a little code. For a post the moment a story is published, register a REST route that receives Armage's webhook, verifies it with the PHP function on that page, and creates the post with wp_insert_post(). Coming
<?php
// A minimal WordPress receiver (a small plugin or mu-plugin). It verifies the
// signature, then creates or updates a draft post from the story. Store the
// whsec_ secret in wp-config.php: define('ARMAGE_WEBHOOK_SECRET', '…');
add_action('rest_api_init', function () {
register_rest_route('armage/v1', '/webhook', [
'methods' => 'POST',
'permission_callback' => '__return_true', // the signature is the check
'callback' => function (WP_REST_Request $request) {
$ok = armage_verify_webhook(
ARMAGE_WEBHOOK_SECRET,
(string) $request->get_header('webhook-id'),
(string) $request->get_header('webhook-timestamp'),
(string) $request->get_header('webhook-signature'),
$request->get_body()
);
if (!$ok) {
return new WP_REST_Response(null, 400);
}
$event = json_decode($request->get_body(), true);
if ($event['type'] === 'story.published' && $event['data']['story']) {
$story = $event['data']['story'];
// Fetch the body with GET /v1/stories/{id} (stories:read key),
// or keep the summary and link to it; then wp_insert_post().
}
return new WP_REST_Response(null, 204);
},
]);
});04
Webflow
Webflow has no built-in feed import. Two routes work: an automation tool with an RSS trigger (Zapier and Make both have one) that creates a CMS item for each new feed item; or a small service that receives Armage's webhook and creates the item with Webflow's own Data API. Map title, summary and content_html to your collection's fields.
05
Any other CMS
Anything that reads RSS or JSON reads the feed. For more than the 50 latest, or for drafts and the approval queue, use the stories API with a server-side key. Armage writing directly into your CMS, so nothing runs on your side, is scoped per client: ask us.
Build against a sandbox workspace
Or writehello@arm-age.com