Blogs
Articles on WordPress, Shopify, Wix and Webflow sites: list, draft, schedule, publish, update and delete. These accounts take articles, not posts.
List a site’s blogs
Section titled “List a site’s blogs”/v1/accounts/{id}/blogsA Shopify store can have several blogs and a Webflow site one per CMS collection with a rich text field; WordPress and Wix have one.
Parameters
idstringrequired
Response 200
data []
idstringrequiredSend it as blogId. WordPress and Wix sites have one blog,
1.titlestringrequiredhandlestring
curl "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]List articles
Section titled “List articles”/v1/accounts/{id}/blogs/{blogId}/articlesPublished, scheduled, drafts and, on WordPress, pending and private ones.
Parameters
idstringrequiredblogIdstringrequiredcursorstringlimitinteger
Response 200
data
itemsobject[]requireditems
idstringrequiredThe site's own id for the article.
blogIdstringrequiredaccountIdstringrequiredplatformstringrequiredtitlestringrequiredbodyHtmlstringhandlestringexcerptstringtagsstring[]requiredauthorstringimageobjectimage
urlstring (uri)requiredaltTextstring
seoobjectseo
titlestringdescriptionstring
statusstringPublished, scheduled, draft, waiting for review or private.
isPublishedbooleanrequiredpublishDatestringurlstring (uri)The article on the site, once published.
nextCursorstring | nullrequiredSend it as cursor for the next page; null on the last one.
curl "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles?limit=20" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles?limit=20', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles?limit=20", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Create an article
Section titled “Create an article”/v1/accounts/{id}/blogs/{blogId}/articlesA draft unless you send isPublished: true; with a future publishDate the site schedules it. The image is downloaded by the site from its URL (upload it first with POST /media/upload-url). seo works on Shopify and Wix; fields sets a Webflow collection's own fields.
Parameters
idstringrequiredblogIdstringrequired
Body
titlestringrequiredbodyHtmlstringThe article as HTML.
handlestringURL slug. Made from the title when omitted.
excerptstringtagsstring[]Replaces the whole list; missing tags are created.
authorstringWordPress: a user id. Shopify: a display name. Webflow: the author item id.
imageobjectFeatured image from a public URL (for example from POST /v1/media/upload-url).
image
urlstring (uri)requiredaltTextstring
seoobjectShopify and Wix only.
seo
titlestringdescriptionstring
isPublishedbooleanfalse keeps it as a draft.
publishDatestring (date-time)A future date schedules it.
fieldsobjectWebflow only: the collection's own fields, by slug.
Response 201
data
idstringrequiredThe site's own id for the article.
blogIdstringrequiredaccountIdstringrequiredplatformstringrequiredtitlestringrequiredbodyHtmlstringhandlestringexcerptstringtagsstring[]requiredauthorstringimageobjectimage
urlstring (uri)requiredaltTextstring
seoobjectseo
titlestringdescriptionstring
statusstringPublished, scheduled, draft, waiting for review or private.
isPublishedbooleanrequiredpublishDatestringurlstring (uri)The article on the site, once published.
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" }'const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "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" }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"}, json={ "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" },)data = res.json()["data"]Get an article
Section titled “Get an article”/v1/accounts/{id}/blogs/{blogId}/articles/{articleId}Parameters
idstringrequiredblogIdstringrequiredarticleIdstringrequired
Response 200
data
idstringrequiredThe site's own id for the article.
blogIdstringrequiredaccountIdstringrequiredplatformstringrequiredtitlestringrequiredbodyHtmlstringhandlestringexcerptstringtagsstring[]requiredauthorstringimageobjectimage
urlstring (uri)requiredaltTextstring
seoobjectseo
titlestringdescriptionstring
statusstringPublished, scheduled, draft, waiting for review or private.
isPublishedbooleanrequiredpublishDatestringurlstring (uri)The article on the site, once published.
curl "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Update, publish or unpublish an article
Section titled “Update, publish or unpublish an article”/v1/accounts/{id}/blogs/{blogId}/articles/{articleId}Fields you leave out keep their value. tags replaces the whole list. isPublished: false takes it back to draft.
Parameters
idstringrequiredblogIdstringrequiredarticleIdstringrequired
Body
titlestringbodyHtmlstringThe article as HTML.
handlestringURL slug. Made from the title when omitted.
excerptstringtagsstring[]Replaces the whole list; missing tags are created.
authorstringWordPress: a user id. Shopify: a display name. Webflow: the author item id.
imageobjectFeatured image from a public URL (for example from POST /v1/media/upload-url).
image
urlstring (uri)requiredaltTextstring
seoobjectShopify and Wix only.
seo
titlestringdescriptionstring
isPublishedbooleanfalse keeps it as a draft.
publishDatestring (date-time)A future date schedules it.
fieldsobjectWebflow only: the collection's own fields, by slug.
Response 200
data
idstringrequiredThe site's own id for the article.
blogIdstringrequiredaccountIdstringrequiredplatformstringrequiredtitlestringrequiredbodyHtmlstringhandlestringexcerptstringtagsstring[]requiredauthorstringimageobjectimage
urlstring (uri)requiredaltTextstring
seoobjectseo
titlestringdescriptionstring
statusstringPublished, scheduled, draft, waiting for review or private.
isPublishedbooleanrequiredpublishDatestringurlstring (uri)The article on the site, once published.
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 }'const res = await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842', { method: 'PATCH', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "isPublished": false }),});const { data } = await res.json();import os, requests
res = requests.patch( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"}, json={ "isPublished": False },)data = res.json()["data"]Delete an article
Section titled “Delete an article”/v1/accounts/{id}/blogs/{blogId}/articles/{articleId}Parameters
idstringrequiredblogIdstringrequiredarticleIdstringrequired
Response 204
No content
curl -X DELETE "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842" \ -H "Authorization: Bearer $MARSIAL_API_KEY"await fetch('https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842', { method: 'DELETE', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});import os, requests
requests.delete( "https://api.marsial.dev/v1/accounts/acc_3k9x2m/blogs/1/articles/1842", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)© 2026 Marsial by TWOFACES ·marsial.dev ·Dashboard ·soporte@twofacesco.com