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

# Update a blog

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

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/accounts/{accountId}/blogs/{blogId}`
- Auth: HTTP bearer

Partial-updates a blog. Send any subset of `title` and `handle`; at
least one field is required (an empty body returns 400).

Supported on Shopify (platform `shopify`). WordPress and Wix site
settings are not writable through this API, so both return 405.

## Path parameters

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

## Request body

- object: At least one field is required.
  - `title` string
  - `handle` string: URL slug. Changing it changes the blog URL on the store.

## Response `200`

Blog updated

- object
  - `platform` 'shopify'
  - `blog` Blog: A blog container on the connected platform. All content lives on the platform; Zernio proxies it and stores nothing.
    - `id` string: Platform-native blog id. Shopify uses a numeric blog id. WordPress.com uses the numeric site id; self-hosted WordPress and Wix use `1`, scoped to the connected account. Webflow uses the CMS collection id.
    - `platform` 'shopify' | 'wordpress' | 'wix' | 'webflow'
    - `title` string
    - `handle` string: URL slug on Shopify and Webflow (the collection slug); site hostname on WordPress and Wix.

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `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), or blog not found (code blog_not_found).
- `405`: Platform does not support updating a blog.
- `429`: Rate limited, either by Zernio or by Shopify. Retry later.

## Changes

- **2026-10-21** `5304778ae6b6`: 1 warning
  - added the new `webflow` enum value to the `blog/platform` response property for the response status `200`
- **2026-10-20** `0d064f3b2f7a`: 2 warning
  - changed the pattern of the `path` request parameter `blogId` from `^\d+$` to `^[A-Za-z0-9_-]{1,64}$`
  - added the new `wix` enum value to the `blog/platform` response property for the response status `200`
- **2026-10-06** `f8c8f34fb41a`: 2 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 8 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
  - …4 more
- **2026-09-30** `16a7b9d5373e`: 1 info
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `400`

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/blogs/:blogId/patch.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/4e74db179e73?raw)
