The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the GraphQL Admin API. For details and migration steps, visit our migration guide.
Theme
themes
access scope.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 theme files after they're uploaded, use the Asset resource. To learn how to create your own theme, refer to Building themes
Endpoints
- post/admin/api/latest/themes.
json Creates a theme - get/admin/api/latest/themes.
json Retrieves a list of themes - get/admin/api/latest/themes/{theme_
id}. json Retrieves a single theme by its ID - put/admin/api/latest/themes/{theme_
id}. json Modify an existing Theme - del/admin/api/latest/themes/{theme_
id}. json Remove an existing Theme
The Theme resource
Properties
The date and time when the theme was created. (format: 2014-04-25T16:15:47-04:00)
The unique numeric identifier for the theme.
The name of the theme.
Whether the theme can currently be previewed.
Whether files are still being copied into place for this theme.
Specifies how the theme is being used within the shop. Valid values:
Show role properties
- main: The theme is published. Customers see it when they visit the online store.
- unpublished: The theme is unpublished. Customers can't see it.
- demo: The theme is installed on the store as a demo. The theme can't be published until the merchant buys the full version.
- development: The theme is used for development. The theme can't be published, and is temporary.
Specifies a public URL where Shopify can access the theme code.
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 null
if the store's theme isn't made by Shopify, or if it wasn't installed from the Theme Store.
The date and time of when the theme was last updated. (format: 2014-04-25T16:15:47-04:00)
The Theme resource
Anchor to POST request, Creates a themepostCreates a theme
Creates a theme by providing the public URL of a ZIP file that contains the theme.
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.
Anchor to Parameters of Creates a themeParameters
Anchor to post-themes-examplesExamples
Create a theme that has a custom name and is published
Create a theme that has a custom name and is published
Show theme properties
The name of the theme.
Specifies a public URL where Shopify can access the theme code.
Specifies how the theme is being used within the shop. Valid values:
Show role properties
- main: The theme is published. Customers see it when they visit the online store.
- unpublished: The theme is unpublished. Customers can't see it.
- demo: The theme is installed on the store as a demo. The theme can't be published until the merchant buys the full version.
- development: The theme is used for development. The theme can't be published, and is temporary.
Creating a theme without a name fails and returns an error
Creating a theme without a name fails and returns an error
/admin/api/2025-07/themes. json
Response
Anchor to GET request, Retrieves a list of themesgetRetrieves a list of themes
Retrieves a list of themes.
Show only certain fields, specified by a comma-separated list of field names.
Anchor to get-themes-examplesExamples
Retrieve a list of themes
Retrieve a list of themes
/admin/api/2025-07/themes. json
Response
Anchor to GET request, Retrieves a single theme by its IDgetRetrieves a single theme by its ID
Retrieves a single theme by its ID.
Show only certain fields, specified by a comma-separated list of field names.
Retrieve a single theme
Retrieve a single theme
/admin/api/2025-07/themes/828155753. json
Response
Anchor to PUT request, Modify an existing ThemeputModify an existing Theme
Updates an existing theme.
Publish an unpublished theme
Publish an unpublished theme
Show theme properties
The unique numeric identifier for the theme.
Specifies how the theme is being used within the shop. Valid values:
Show role properties
- main: The theme is published. Customers see it when they visit the online store.
- unpublished: The theme is unpublished. Customers can't see it.
- demo: The theme is installed on the store as a demo. The theme can't be published until the merchant buys the full version.
- development: The theme is used for development. The theme can't be published, and is temporary.
Update a theme's name
Update a theme's name
Show theme properties
The unique numeric identifier for the theme.
The name of the theme.
/admin/api/2025-07/themes/752253240. json
Response
Anchor to DELETE request, Remove an existing ThemedelRemove an existing Theme
Deletes a theme. A theme can't be deleted while it's uploading, updating, or if the theme is the last published theme.
Delete a theme
Delete a theme