---
title: "Update a blog article"
method: PATCH
path: "/v1/accounts/{accountId}/blogs/{blogId}/articles/{articleId}"
tags: ["Blogs"]
---

# Update a blog article

`PATCH /v1/accounts/{accountId}/blogs/{blogId}/articles/{articleId}`

Partial-updates an article. Send any subset of the create fields
(`title`, `bodyHtml`, `handle`, `tags`, `author`, `excerpt`, `image`,
`seo`, `isPublished`, `publishDate`); at least one field is required
(an empty body returns 400). `isPublished` and `publishDate` behave as
on create: `isPublished: false` unpublishes back to a draft and a
future `publishDate` schedules publication natively on the platform.

Supported on Shopify (platform `shopify`). Accounts on platforms
without blogs support return 400; a blogs-capable platform that lacks
this specific operation returns 405.

## Path parameters

- `accountId` string, required
- `blogId` string, required
- `articleId` string, required

## Request body

- object — At least one field is required.
  - `title` string
  - `bodyHtml` string — Article body as HTML.
  - `handle` string — URL slug of the article.
  - `tags` string[] — Replaces the full tag list.
  - `author` string — Display name of the article author.
  - `excerpt` string — Short summary shown in blog listings.
  - `image` object — Featured image. The platform downloads it, so the URL must be publicly reachable.
    - `url` string, uri, required
    - `altText` string
  - `seo` object — Search-engine overrides. Maps to Shopify global metafields (title_tag and description_tag).
    - `title` string
    - `description` string
  - `isPublished` boolean — Set false to unpublish the article back to a draft.
  - `publishDate` string, date-time — ISO 8601 datetime with offset (or Z). A future date schedules publication natively on the platform.

## Response `200`

Article updated

- object
  - `platform` 'shopify'
  - `article` BlogArticle — An article inside a blog on the connected platform.
    - `id` string — Platform-native article id (numeric string for Shopify).
    - `blogId` string — Platform-native id of the blog the article belongs to.
    - `platform` 'shopify'
    - `title` string
    - `bodyHtml` string, nullable — Article body as HTML.
    - `handle` string — URL slug of the article.
    - `tags` string[]
    - `author` string, nullable — Display name of the article author.
    - `excerpt` string, nullable — Short summary shown in blog listings.
    - `image` object, nullable — Featured image.
      - `url` string
      - `altText` string, nullable
    - `isPublished` boolean — False while the article is a draft or its publish date is still in the future.
    - `publishedAt` string, date-time, nullable — When the article was (or is scheduled to be) published; null for drafts.
    - `createdAt` string, date-time, nullable
    - `updatedAt` string, date-time, nullable

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — The platform rejected the request (code insufficient_permissions); reconnect the Shopify account to restore access.
- `404` — Account not found or not accessible (code account_not_found), blog not found (code blog_not_found), or article not found (code blog_article_not_found).
- `405` — Platform does not support updating an article.
- `429` — Rate limited, either by Zernio or by Shopify. Retry later.

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/revisions/3c7cf84cec44/schema)
