Theme
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/2019-10/themes.json Retrieves a list of themes
- GET /admin/api/2019-10/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/2019-10/themes.json Creates a theme
- PUT /admin/api/2019-10/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/2019-10/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/2019-10/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/2019-10/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/2019-10/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/2019-10/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/2019-10/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/2019-10/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/2020-01/themes.json Retrieves a list of themes
- GET /admin/api/2020-01/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/2020-01/themes.json Creates a theme
- PUT /admin/api/2020-01/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/2020-01/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/2020-01/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/2020-01/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/2020-01/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/2020-01/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/2020-01/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/2020-01/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/2020-04/themes.json Retrieves a list of themes
- GET /admin/api/2020-04/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/2020-04/themes.json Creates a theme
- PUT /admin/api/2020-04/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/2020-04/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/2020-04/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/2020-04/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/2020-04/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/2020-04/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/2020-04/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/2020-04/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/2020-07/themes.json Retrieves a list of themes
- GET /admin/api/2020-07/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/2020-07/themes.json Creates a theme
- PUT /admin/api/2020-07/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/2020-07/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/2020-07/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/2020-07/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/2020-07/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/2020-07/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/2020-07/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/2020-07/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/2020-10/themes.json Retrieves a list of themes
- GET /admin/api/2020-10/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/2020-10/themes.json Creates a theme
- PUT /admin/api/2020-10/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/2020-10/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/2020-10/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/2020-10/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/2020-10/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/2020-10/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/2020-10/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/2020-10/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/2021-01/themes.json Retrieves a list of themes
- GET /admin/api/2021-01/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/2021-01/themes.json Creates a theme
- PUT /admin/api/2021-01/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/2021-01/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/2021-01/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/2021-01/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/2021-01/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/2021-01/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/2021-01/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/2021-01/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/2021-04/themes.json Retrieves a list of themes
- GET /admin/api/2021-04/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/2021-04/themes.json Creates a theme
- PUT /admin/api/2021-04/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/2021-04/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/2021-04/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/2021-04/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/2021-04/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/2021-04/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/2021-04/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/2021-04/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
A theme controls the look and feel of a Shopify online store.

A store can have a maximum of 20 themes, one of which is the published theme that customers see when they visit the online store. Customers can't see unpublished themes. When you publish a theme, the previously published theme becomes unpublished.
To modify the files of a theme after it has been uploaded, use the Asset resource. To learn how to create your own theme, see Building themes
What you can do with Theme
The Shopify API lets you do the following with the Theme resource. More detailed versions of these general actions may be available:
- GET /admin/api/unstable/themes.json Retrieves a list of themes
- GET /admin/api/unstable/themes/{theme_id}.json Retrieves a single theme
- POST /admin/api/unstable/themes.json Creates a theme
- PUT /admin/api/unstable/themes/{theme_id}.json Modify an existing Theme
- DELETE /admin/api/unstable/themes/{theme_id}.json Remove an existing Theme
Theme properties
created_at
read-only |
The date and time (ISO 8601 format) when the theme was created. |
id
read-only |
A unique numeric identifier for the theme. |
name |
The name of the theme. |
previewable
read-only |
Whether the theme can currently be previewed. |
processing
read-only |
Whether files are still being copied into place for this theme. |
role |
Specifies how the theme is being used within the shop. Valid values:
|
theme_store_id
read-only |
A unique identifier applied to Shopify-made themes that are installed from the Shopify Theme Store Theme Store.
Not all themes available in the Theme Store are developed by Shopify. Returns |
updated_at
read-only |
The date and time ( ISO 8601 format) when the theme was last updated. |
Endpoints
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a list of themes
GET /admin/api/unstable/themes.json
View Response
HTTP/1.1 200 OK
{
"themes": [
{
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
},
{
"id": 976877075,
"name": "Preview of Parallax",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "demo",
"theme_store_id": 688,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/976877075"
},
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
]
}
fields
|
Show only certain fields, specified by a comma-separated list of field names. |
Retrieve a single theme
GET /admin/api/unstable/themes/828155753.json
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 828155753,
"name": "Comfort",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/828155753"
}
}
A new theme is always unpublished by default. To publish a theme when you create it, include
"role": "main"
in the POST request. The theme will be published only after all
of its files have been extracted and stored by Shopify, which might take a couple of minutes.
Create a theme that has a custom name and is published
POST /admin/api/unstable/themes.json
{
"theme": {
"name": "Lemongrass",
"src": "http://themes.shopify.com/theme.zip",
"role": "main"
}
}
View Response
HTTP/1.1 201 Created
{
"theme": {
"id": 1049083723,
"name": "Lemongrass",
"created_at": "2021-02-05T23:08:19-05:00",
"updated_at": "2021-02-05T23:08:19-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": false,
"processing": true,
"admin_graphql_api_id": "gid://shopify/Theme/1049083723"
}
}
Creating a theme without a name fails and returns an error
HTTP/1.1 422 Unprocessable Entity
{
"errors": {
"name": [
"can't be blank"
]
}
}
Update a theme's name
PUT /admin/api/unstable/themes/752253240.json
{
"theme": {
"id": 752253240,
"name": "Experimental"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Experimental",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:25-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Publish an unpublished theme
PUT /admin/api/unstable/themes/752253240.json
{
"theme": {
"id": 752253240,
"role": "main"
}
}
View Response
HTTP/1.1 200 OK
{
"theme": {
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:08:27-05:00",
"role": "main",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}
}
Delete a theme
DELETE /admin/api/unstable/themes/752253240.json
View Response
HTTP/1.1 200 OK
{
"id": 752253240,
"name": "Sandbox",
"created_at": "2021-02-05T23:04:55-05:00",
"updated_at": "2021-02-05T23:04:55-05:00",
"role": "unpublished",
"theme_store_id": null,
"previewable": true,
"processing": false,
"admin_graphql_api_id": "gid://shopify/Theme/752253240"
}