Zernio
APIFor you
Zernio
APIFor you
Platforms

WordPress

Overview

Set up

Connect

Publish

Publishing Articles

Commerce

Commerce & Tracking Tags

Reference

Limits & Errors
Dashboard
OverviewPlatformsAPI ReferenceResources
WordPress

Publishing Articles

List, create, schedule, update and delete WordPress articles through the Blogs API, and the article fields they accept.


Publish articles

WordPress uses the same article endpoints as Shopify. The differences are the single-blog model, WordPress author IDs and tag/media handling described below.

List the site blog

Always start with List blogs:

curl "https://zernio.com/api/v1/accounts/66b2e19d8c3f5a7e9d0b1c2d/blogs" \
  -H "Authorization: Bearer $ZERNIO_API_KEY"

A self-hosted account returns exactly one blog with id: "1":

{
  "platform": "wordpress",
  "blogs": [
    {
      "id": "1",
      "platform": "wordpress",
      "title": "Example Press",
      "handle": "example.com"
    }
  ],
  "nextCursor": null
}

The value "1" is scoped to the connected account. It does not claim that the WordPress database's internal blog ID is 1.

A WordPress.com account uses its numeric WordPress.com site ID instead. Code that supports both connection types should use blogs[0].id from this response.

Fetch the same site metadata with Get a blog:

curl "https://zernio.com/api/v1/accounts/66b2e19d8c3f5a7e9d0b1c2d/blogs/1" \
  -H "Authorization: Bearer $ZERNIO_API_KEY"

Create a draft

Call Create a blog article with a title. New WordPress articles default to draft, so this minimal request does not publish:

curl -X POST "https://zernio.com/api/v1/accounts/66b2e19d8c3f5a7e9d0b1c2d/blogs/1/articles" \
  -H "Authorization: Bearer $ZERNIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Autumn collection preview",
    "bodyHtml": "<p>The first pieces land next month.</p>",
    "handle": "autumn-collection-preview",
    "excerpt": "An early look at what is arriving this September.",
    "tags": ["autumn", "new arrivals"],
    "author": "42",
    "image": {
      "url": "https://cdn.example.com/autumn.jpg",
      "altText": "Wool coats on a rail"
    },
    "isPublished": false
  }'

Tags. WordPress resolves existing tags by name case-insensitively and creates a missing tag on the site. You can send up to 100 non-empty tag names.

Creating a missing term depends on the connected user's WordPress permissions.

Author. author is the numeric ID of a WordPress user who can author the post, encoded as a JSON string. It is not a login, email or display name.

Assigning another user as author can require a higher WordPress role.

Featured image. For image.url, WordPress downloads the file into that site's media library and sets the resulting attachment as the featured image.

The URL must be publicly reachable and return a JPEG, PNG, WebP or GIF no larger than 10 MB. altText becomes the attachment's alternative text.

Omitting image during a later PATCH preserves the existing featured image. This API has no featured-image removal sentinel.

Response (201):

{
  "platform": "wordpress",
  "article": {
    "id": "1842",
    "blogId": "1",
    "platform": "wordpress",
    "title": "Autumn collection preview",
    "bodyHtml": "<p>The first pieces land next month.</p>",
    "handle": "autumn-collection-preview",
    "tags": ["autumn", "new arrivals"],
    "author": "42",
    "excerpt": "An early look at what is arriving this September.",
    "image": {
      "url": "https://example.com/wp-content/uploads/2026/09/autumn.jpg",
      "altText": "Wool coats on a rail"
    },
    "status": "draft",
    "isPublished": false,
    "publishDate": null,
    "publishedAt": null,
    "createdAt": null,
    "updatedAt": "2026-09-16T09:30:00Z"
  }
}

bodyHtml is raw article HTML. Zernio does not provide a visual editor or transform Markdown into HTML.

Publish now

Set isPublished: true without a future publishDate:

{
  "title": "Autumn collection preview",
  "bodyHtml": "<p>The first pieces are now available.</p>",
  "isPublished": true
}

The response reports status: "publish", isPublished: true and the WordPress publication time in publishedAt.

Schedule on WordPress

Send a future ISO 8601 publishDate to schedule publication natively:

{
  "title": "Autumn collection preview",
  "bodyHtml": "<p>The first pieces land next month.</p>",
  "publishDate": "2027-01-01T12:00:00+01:00"
}

The response reports status: "future", isPublished: false and the scheduled instant in publishDate.

WordPress, not Zernio's queue, publishes the article. The site must run WordPress scheduled jobs correctly. Zernio does not add a second scheduler or force publication after the requested time.

isPublished: false explicitly requests a draft and wins when it is sent alongside a future publishDate. Omit isPublished when scheduling.

You cannot write WordPress's raw status field through this API.

List and get articles

List blog articles includes every publish, future, draft, pending and private article visible to the connected user.

It is cursor-paginated. Pass limit from 1 to 50, then reuse the opaque nextCursor exactly as returned.

curl "https://zernio.com/api/v1/accounts/66b2e19d8c3f5a7e9d0b1c2d/blogs/1/articles?limit=20" \
  -H "Authorization: Bearer $ZERNIO_API_KEY"
{
  "platform": "wordpress",
  "articles": [
    {
      "id": "1842",
      "blogId": "1",
      "platform": "wordpress",
      "title": "Autumn collection preview",
      "status": "draft",
      "isPublished": false,
      "publishDate": null
    }
  ],
  "nextCursor": "wp:2"
}

Get one article with Get a blog article:

curl "https://zernio.com/api/v1/accounts/66b2e19d8c3f5a7e9d0b1c2d/blogs/1/articles/1842" \
  -H "Authorization: Bearer $ZERNIO_API_KEY"

Article IDs are WordPress post IDs represented as strings. Read them from list/create responses rather than constructing them.

Update an article

Update a blog article is a partial update. Omitted fields keep their current value:

curl -X PATCH "https://zernio.com/api/v1/accounts/66b2e19d8c3f5a7e9d0b1c2d/blogs/1/articles/1842" \
  -H "Authorization: Bearer $ZERNIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Autumn collection is here",
    "tags": ["autumn", "available now"],
    "isPublished": true
  }'
  • tags replaces the full tag list; an empty array clears it.
  • Empty bodyHtml and excerpt strings clear those fields.
  • Sending isPublished: false moves a published or scheduled article back to draft.
  • Omitting both isPublished and publishDate preserves its current WordPress status and publication date.

Delete an article

Delete a blog article permanently deletes the article on WordPress:

curl -X DELETE "https://zernio.com/api/v1/accounts/66b2e19d8c3f5a7e9d0b1c2d/blogs/1/articles/1842" \
  -H "Authorization: Bearer $ZERNIO_API_KEY"

A successful delete returns 204 with no response body. Zernio stores no copy to restore.

WordPress retains the article's media attachments and tags so other content can keep using them.

Supported operations

OperationEndpoint
List blogsGET /v1/accounts/{accountId}/blogs
Get a blogGET /v1/accounts/{accountId}/blogs/{blogId}
List articlesGET /v1/accounts/{accountId}/blogs/{blogId}/articles
Create an articlePOST /v1/accounts/{accountId}/blogs/{blogId}/articles
Get an articleGET /v1/accounts/{accountId}/blogs/{blogId}/articles/{articleId}
Update an articlePATCH /v1/accounts/{accountId}/blogs/{blogId}/articles/{articleId}
Delete an articleDELETE /v1/accounts/{accountId}/blogs/{blogId}/articles/{articleId}

Article fields

There is no platformSpecificData for WordPress because a WordPress site is not a POST /v1/posts target.

FieldTypeBehavior
titlestringRequired on create.
bodyHtmlstringRaw article HTML.
handlestringWordPress post slug. Generated from the title when omitted.
excerptstringShort summary stored in the WordPress excerpt field.
tagsstring[]Tag names. The complete list replaces existing tags; missing names are created.
authorstringNumeric WordPress user ID encoded as a string.
image{url, altText?}Public image downloaded into the site's media library and set as the featured image.
isPublishedbooleanfalse creates or restores a draft; true publishes now unless a future date schedules it.
publishDatedatetimeISO 8601 with offset or Z; a future value schedules publication on WordPress.

Responses also include WordPress's normalized status: publish, future, draft, pending or private. This field is read-only.

isPublished is true only for publish. publishDate reports a scheduled future time when applicable.

SEO. The shared Blogs API also exposes seo for Shopify. WordPress rejects seo explicitly, because core WordPress has no portable SEO-write contract and plugin fields differ.

Zernio does not silently discard it. Use a plugin's own API outside Zernio if you need Yoast, Rank Math or another plugin's metadata.

Was this page helpful?

Connect

Connect a WordPress account with the Zernio API, every step with code.

Commerce & Tracking Tags

Manage a WooCommerce store through the Commerce API and install ad platform tracking tags on a WordPress site.

On this page

Publish articlesList the site blogCreate a draftPublish nowSchedule on WordPressList and get articlesUpdate an articleDelete an articleSupported operationsArticle fields