# Blog articles from your code (/docs/optimize/blog-articles/api)

Authenticated with `?privateKey=YOUR_KEY` (see [Authentication](/docs/authentication)).

<Endpoints ops={["GET /v3/blog/articles", "POST /v3/blog/articles", "GET /v3/blog/articles/{articleId}", "PUT /v3/blog/articles/{articleId}", "POST /v3/blog/cache/clear"]} />

<ApiPlayground
  method="get"
  path="/v3/blog/articles"
  tool="list_blog_articles"
  args={`{
  "websiteId": "64b7f0a1c2d3e4f5a6b7c8d9"
}`}
/>

## Use case: Publish from your CMS [#use-case-publish-from-your-cms]

`POST /v3/blog/articles` with the `title`, `slug` and `html`; `status: "draft"` keeps it off the site until you are ready.

## Use case: Fix a typo in a live article [#use-case-fix-a-typo-in-a-live-article]

`PUT /v3/blog/articles/{articleId}` saves a new version at the same URL; the old one stays in the history.
