Skip to content

Blogs

A WordPress site, a Shopify store or a Wix or Webflow site connects to a profile like any other account (acc_…). The difference is what it takes: blog articles, not posts. All the content lives on the site; Marsial keeps no copy.

Wix, Webflow and WordPress.com use the same flow as social networks (Connecting accounts): GET /v1/connect/{platform} and send the user to the URL.

Shopify has no store picker: add shop with the store’s .myshopify.com domain (or just its prefix).

Terminal window
curl "https://api.marsial.dev/v1/connect/shopify?profileId=prf_8f2k4d&redirectUrl=https%3A%2F%2Fapp.acme.com%2Fconnected&shop=acme" \
-H "Authorization: Bearer $MARSIAL_API_KEY"

Self-hosted WordPress has no OAuth. The user creates an Application Password in WordPress (Users → Profile → Application Passwords) and your server sends it with their username. Marsial checks that the site answers and that the user can publish and upload images.

Terminal window
curl -X POST "https://api.marsial.dev/v1/connect/wordpress" \
-H "Authorization: Bearer $MARSIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"profileId": "prf_8f2k4d",
"siteUrl": "https://blog.acme.com",
"username": "editor",
"applicationPassword": "abcd efgh ijkl mnop qrst uvwx"
}'

Each site has one or more blogs. WordPress and Wix have one (1); a Shopify store can have several, and on Webflow each CMS collection with a rich text field is a blog.

Terminal window
curl "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs" \
-H "Authorization: Bearer $MARSIAL_API_KEY"

Without isPublished, the article stays a draft. With isPublished: true it goes live now, or at publishDate when that is in the future.

Terminal window
curl -X POST "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles" \
-H "Authorization: Bearer $MARSIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Our autumn collection",
"bodyHtml": "<p>The first pieces land next month.</p>",
"excerpt": "An early look at what is arriving.",
"tags": [
"autumn",
"new arrivals"
],
"image": {
"url": "https://cdn.acme.com/autumn.jpg",
"altText": "Wool coats on a rail"
},
"isPublished": true,
"publishDate": "2026-11-03T09:00:00+01:00"
}'
Field What it is
title Required on create.
bodyHtml The article as HTML.
handle URL slug. Made from the title when omitted. Shopify never changes it afterwards.
excerpt Summary for listings.
tags Replaces the whole list. Missing ones are created.
author WordPress: a user id. Shopify: a display name. Webflow: the author item id.
image Featured image from a public URL; upload it first with POST /v1/media/upload-url.
seo Search engine title and description. Shopify and Wix only.
fields Webflow only: the collection’s own fields, by slug.

PATCH changes only what you send. isPublished: false takes a published or scheduled article back to draft.

Terminal window
curl -X PATCH "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842" \
-H "Authorization: Bearer $MARSIAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"isPublished": false
}'

GET /v1/accounts/{id}/blogs/{blogId}/articles lists published, scheduled and draft articles (on WordPress, pending and private ones too), with status and the url on the site. DELETE removes it from the site as well.

In the dashboard, the Blog tab under Posts does the same: pick the site and blog, write, schedule and publish.

© 2026 Marsial by TWOFACES ·marsial.dev ·Dashboard ·soporte@twofacesco.com