openapi: 3.1.0
info:
title: Shopify Admin REST About Blog API
description: The Shopify Admin REST API lets you build apps and integrations that extend and enhance the Shopify admin. Access products, customers, orders, inventory, fulfillment, and more. Endpoints are organized by resource type and versioned by release date.
version: 2025-01
contact:
name: Shopify
url: https://shopify.dev/docs/api/admin-rest
email: api@shopify.com
license:
name: Shopify API Terms
url: https://www.shopify.com/legal/api-terms
x-date: '2026-03-04'
servers:
- url: https://{store}.myshopify.com/admin/api/2025-01
description: Shopify Admin REST API
variables:
store:
default: my-store
description: The Shopify store subdomain
security:
- AccessToken: []
tags:
- name: Blog
paths:
/admin/api/2020-01/blogs/{blog_id}/articles.json:
get:
summary: Shopify Retrieves A List Of All Articles From A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#index-2020-01
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
- in: query
name: limit
description: "The maximum number of results to retrieve.\n (default: 50, maximum: 250)"
schema: {}
required: false
- in: query
name: since_id
description: Restrict results to after the specified ID.
schema: {}
required: false
- in: query
name: created_at_min
description: 'Show articles created after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: created_at_max
description: 'Show articles created before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_min
description: 'Show articles last updated after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_max
description: 'Show articles last updated before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_min
description: 'Show articles published after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_max
description: 'Show articles published before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_status
description: "Retrieve results based on their published status.\n (default: any)\n \n published: Show only published articles.\n unpublished: Show only unpublished articles.\n any: Show articles of any published status."
schema: {}
required: false
- in: query
name: handle
description: Retrieve an article with a specific handle.
schema: {}
required: false
- in: query
name: tag
description: Filter articles with a specific tag.
schema: {}
required: false
- in: query
name: author
description: Filter articles by article author.
schema: {}
required: false
- in: query
name: fields
description: Show only certain fields, specified by a comma-separated list of field names.
schema: {}
required: false
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202001_get_blogs_param_blog_id_articles
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
post:
requestBody:
content:
application/json:
schema: {}
examples:
example1:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
summary: Create an article with HTML markup for a blog
example2:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published: false
summary: Create an unpublished article for a blog
example3:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
image:
attachment: 'R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
'
summary: Create an article with a base64 encoded image
example4:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
image:
src: http://example.com/rails_logo.gif
alt: Rails logo
summary: Create an article with an image, which will be downloaded by Shopify
example5:
value:
article:
body: something
summary: Creating an article without a title fails and returns an error
example6:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
metafields:
- key: new
value: newvalue
value_type: string
namespace: global
summary: Create an article with a metafield
summary: Shopify Creates An Article For A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#create-2020-01
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202001_create_blogs_param_blog_id_articles
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
/admin/api/2020-01/blogs/{blog_id}/articles/count.json:
get:
summary: Shopify Retrieves A Count Of All Articles From A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#count-2020-01
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
- in: query
name: created_at_min
description: 'Count articles created after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: created_at_max
description: 'Count articles created before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_min
description: 'Count articles last updated after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_max
description: 'Count articles last updated before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_min
description: 'Count articles published after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_max
description: 'Count articles published before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_status
description: "Count articles with a given published status.\n (default: any)\n \n published: Count only published articles.\n unpublished: Count only unpublished articles.\n any: Count all articles."
schema: {}
required: false
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202001_get_blogs_param_blog_id_articles_count
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
/admin/api/2020-04/blogs/{blog_id}/articles.json:
get:
summary: Shopify Retrieves A List Of All Articles From A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#index-2020-04
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
- in: query
name: limit
description: "The maximum number of results to retrieve.\n (default: 50, maximum: 250)"
schema: {}
required: false
- in: query
name: since_id
description: Restrict results to after the specified ID.
schema: {}
required: false
- in: query
name: created_at_min
description: 'Show articles created after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: created_at_max
description: 'Show articles created before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_min
description: 'Show articles last updated after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_max
description: 'Show articles last updated before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_min
description: 'Show articles published after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_max
description: 'Show articles published before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_status
description: "Retrieve results based on their published status.\n (default: any)\n \n published: Show only published articles.\n unpublished: Show only unpublished articles.\n any: Show articles of any published status."
schema: {}
required: false
- in: query
name: handle
description: Retrieve an article with a specific handle.
schema: {}
required: false
- in: query
name: tag
description: Filter articles with a specific tag.
schema: {}
required: false
- in: query
name: author
description: Filter articles by article author.
schema: {}
required: false
- in: query
name: fields
description: Show only certain fields, specified by a comma-separated list of field names.
schema: {}
required: false
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202004_get_blogs_param_blog_id_articles
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
post:
requestBody:
content:
application/json:
schema: {}
examples:
example1:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
summary: Create an article with HTML markup for a blog
example2:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published: false
summary: Create an unpublished article for a blog
example3:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
image:
attachment: 'R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
'
summary: Create an article with a base64 encoded image
example4:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
image:
src: http://example.com/rails_logo.gif
alt: Rails logo
summary: Create an article with an image, which will be downloaded by Shopify
example5:
value:
article:
body: something
summary: Creating an article without a title fails and returns an error
example6:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
metafields:
- key: new
value: newvalue
value_type: string
namespace: global
summary: Create an article with a metafield
summary: Shopify Creates An Article For A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#create-2020-04
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202004_create_blogs_param_blog_id_articles
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
/admin/api/2020-04/blogs/{blog_id}/articles/count.json:
get:
summary: Shopify Retrieves A Count Of All Articles From A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#count-2020-04
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
- in: query
name: created_at_min
description: 'Count articles created after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: created_at_max
description: 'Count articles created before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_min
description: 'Count articles last updated after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_max
description: 'Count articles last updated before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_min
description: 'Count articles published after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_max
description: 'Count articles published before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_status
description: "Count articles with a given published status.\n (default: any)\n \n published: Count only published articles.\n unpublished: Count only unpublished articles.\n any: Count all articles."
schema: {}
required: false
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202004_get_blogs_param_blog_id_articles_count
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
/admin/api/2020-07/blogs/{blog_id}/articles.json:
get:
summary: Shopify Retrieves A List Of All Articles From A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#index-2020-07
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
- in: query
name: limit
description: "The maximum number of results to retrieve.\n (default: 50, maximum: 250)"
schema: {}
required: false
- in: query
name: since_id
description: Restrict results to after the specified ID.
schema: {}
required: false
- in: query
name: created_at_min
description: 'Show articles created after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: created_at_max
description: 'Show articles created before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_min
description: 'Show articles last updated after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_max
description: 'Show articles last updated before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_min
description: 'Show articles published after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_max
description: 'Show articles published before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_status
description: "Retrieve results based on their published status.\n (default: any)\n \n published: Show only published articles.\n unpublished: Show only unpublished articles.\n any: Show articles of any published status."
schema: {}
required: false
- in: query
name: handle
description: Retrieve an article with a specific handle.
schema: {}
required: false
- in: query
name: tag
description: Filter articles with a specific tag.
schema: {}
required: false
- in: query
name: author
description: Filter articles by article author.
schema: {}
required: false
- in: query
name: fields
description: Show only certain fields, specified by a comma-separated list of field names.
schema: {}
required: false
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202007_get_blogs_param_blog_id_articles
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
post:
requestBody:
content:
application/json:
schema: {}
examples:
example1:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
summary: Create an article with HTML markup for a blog
example2:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published: false
summary: Create an unpublished article for a blog
example3:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
image:
attachment: 'R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
'
summary: Create an article with a base64 encoded image
example4:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
image:
src: http://example.com/rails_logo.gif
alt: Rails logo
summary: Create an article with an image, which will be downloaded by Shopify
example5:
value:
article:
body: something
summary: Creating an article without a title fails and returns an error
example6:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
metafields:
- key: new
value: newvalue
value_type: string
namespace: global
summary: Create an article with a metafield
summary: Shopify Creates An Article For A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#create-2020-07
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202007_create_blogs_param_blog_id_articles
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
/admin/api/2020-07/blogs/{blog_id}/articles/count.json:
get:
summary: Shopify Retrieves A Count Of All Articles From A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#count-2020-07
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
- in: query
name: created_at_min
description: 'Count articles created after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: created_at_max
description: 'Count articles created before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_min
description: 'Count articles last updated after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_max
description: 'Count articles last updated before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_min
description: 'Count articles published after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_max
description: 'Count articles published before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_status
description: "Count articles with a given published status.\n (default: any)\n \n published: Count only published articles.\n unpublished: Count only unpublished articles.\n any: Count all articles."
schema: {}
required: false
tags:
- Blog
responses:
'200':
description: ''
operationId: deprecated_202007_get_blogs_param_blog_id_articles_count
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
/admin/api/2020-10/blogs/{blog_id}/articles.json:
get:
summary: Shopify Retrieves A List Of All Articles From A Blog
description: https://shopify.dev/docs/admin-api/rest/reference/online-store/article#index-2020-10
parameters:
- in: path
name: blog_id
required: true
schema:
type: string
description: blog_id
- in: query
name: limit
description: "The maximum number of results to retrieve.\n (default: 50, maximum: 250)"
schema: {}
required: false
- in: query
name: since_id
description: Restrict results to after the specified ID.
schema: {}
required: false
- in: query
name: created_at_min
description: 'Show articles created after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: created_at_max
description: 'Show articles created before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_min
description: 'Show articles last updated after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: updated_at_max
description: 'Show articles last updated before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_min
description: 'Show articles published after date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_at_max
description: 'Show articles published before date (format: 2014-04-25T16:15:47-04:00).'
schema: {}
required: false
- in: query
name: published_status
description: "Retrieve results based on their published status.\n (default: any)\n \n published: Show only published articles.\n unpublished: Show only unpublished articles.\n any: Show articles of any published status."
schema: {}
required: false
- in: query
name: handle
description: Retrieve an article with a specific handle.
schema: {}
required: false
- in: query
name: tag
description: Filter articles with a specific tag.
schema: {}
required: false
- in: query
name: author
description: Filter articles by article author.
schema: {}
required: false
- in: query
name: fields
description: Show only certain fields, specified by a comma-separated list of field names.
schema: {}
required: false
tags:
- Blog
responses:
'200':
description: ''
operationId: get_blogs_param_blog_id_articles
x-api-evangelist-processing:
PascalCaseOperationSummaries: true
ChooseTags: true
post:
requestBody:
content:
application/json:
schema: {}
examples:
example1:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published_at: Thu Mar 24 15:45:47 UTC 2011
summary: Create an article with HTML markup for a blog
example2:
value:
article:
title: My new Article title
author: John Smith
tags: This Post, Has Been Tagged
body_html: '<h1>I like articles</h1>
<p><strong>Yea</strong>, I like posting them through <span class="caps">REST</span>.</p>'
published: false
summary: Create an unpublished article for a blog
example3:
value:
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shopify/refs/heads/main/openapi/shopify-blog-api-openapi.yml