Automattic Themes API

The themes API from Automattic — 11 operation(s) for themes.

Operations 12

GET /sites/{site}/themes Get information about a theme on WordPress.com. #
GET /sites/{site}/themes/mine Get the active theme of a site. #
POST /sites/{site}/themes/mine Change the active theme of a site. #
GET /themes Get a list of all available themes on WordPress.com. #
GET /themes/{theme_slug} Get a theme on WordPress.com. #
GET /wp/v2/sites/{wpcom_site}/themes GET /wp/v2/sites/{wpcom_site}/themes #
GET /wp/v2/sites/{wpcom_site}/themes/{stylesheet} GET /wp/v2/sites/{wpcom_site}/themes/{stylesheet} #
GET /wpcom/v2/sites/{wpcom_site}/themes/activation-history GET /wpcom/v2/sites/{wpcom_site}/themes/activation-history #
GET /wpcom/v2/themes GET /wpcom/v2/themes #
GET /wpcom/v2/themes/readymade-templates GET /wpcom/v2/themes/readymade-templates #
GET /wpcom/v2/themes/readymade-templates/{template_id} GET /wpcom/v2/themes/readymade-templates/{template_id} #
GET /wpcom/v2/themes/{theme}/premium-details GET /wpcom/v2/themes/{theme}/premium-details #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/automattic-themes-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

automattic-themes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Automattic Themes API
  x-derived-by: API Evangelist enrichment pipeline
  x-refined-note:
  - x-derived-from differs across the merged source definitions and was not carried
  version: '1.0'
  description: 'Operations tagged themes across 3 of this provider''s published API definitions: automattic-wordpress-com-rest-v1-1-openapi.yml, automattic-wordpress-com-wp-v2-openapi.yml, automattic-wordpress-com-wpcom-v2-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://public-api.wordpress.com/rest/v1.1
- url: https://public-api.wordpress.com
security:
- bearerAuth: []
tags:
- name: themes
paths:
  /sites/{site}/themes:
    get:
      operationId: getSitesBySiteThemes
      summary: Get information about a theme on WordPress.com.
      description: Get information about a theme on WordPress.com.
      tags:
      - themes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  themes:
                    type: array
                    items: {}
                    description: A list of themes.
                  count:
                    type: integer
                    description: The amount of themes.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authorization required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      parameters:
      - name: site
        in: path
        required: true
        schema:
          type: string
        description: Site ID or domain.
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - display
          - edit
        description: 'display: (default) Formats the output as HTML for display.  Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing.  Shortcodes are left unparsed, significant whitespace is kept, etc..'
      - name: http_envelope
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code.  Setting this parameter will force the HTTP status code to always be 200.  The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
      - name: pretty
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Output pretty JSON'
      - name: meta
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
      - name: fields
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
      - name: callback
        in: query
        required: false
        schema:
          type: string
        description: An optional JSONP callback function.
      - name: locale
        in: query
        required: false
        schema:
          type: string
        description: 'ISO 639-1 Locale. Default: en.'
      - name: currency
        in: query
        required: false
        schema:
          type: string
        description: 'Currency. Default: USD.'
      - name: extended
        in: query
        required: false
        schema:
          type: boolean
        description: 'To add additional information. Default: False.'
    servers:
    - url: https://public-api.wordpress.com/rest/v1.1
  /sites/{site}/themes/mine:
    get:
      operationId: getSitesBySiteThemesMine
      summary: Get the active theme of a site.
      description: Get the active theme of a site.
      tags:
      - themes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The theme's ID..
                  screenshot:
                    type: string
                    description: A theme screenshot URL
                  name:
                    type: string
                    description: The name of the theme.
                  theme_uri:
                    type: string
                    description: The URI of the theme's webpage.
                  description:
                    type: string
                    description: A description of the theme.
                  tags:
                    type: array
                    items: {}
                    description: Tags indicating styles and features of the theme.
                  price:
                    type: number
                    description: The price, in USD, of the theme.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authorization required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      parameters:
      - name: site
        in: path
        required: true
        schema:
          type: string
        description: Site ID or domain
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - display
          - edit
        description: 'display: (default) Formats the output as HTML for display.  Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing.  Shortcodes are left unparsed, significant whitespace is kept, etc..'
      - name: http_envelope
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code.  Setting this parameter will force the HTTP status code to always be 200.  The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
      - name: pretty
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Output pretty JSON'
      - name: meta
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
      - name: fields
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
      - name: callback
        in: query
        required: false
        schema:
          type: string
        description: An optional JSONP callback function.
    post:
      operationId: postSitesBySiteThemesMine
      summary: Change the active theme of a site.
      description: Change the active theme of a site.
      tags:
      - themes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The theme's ID.
                  screenshot:
                    type: string
                    description: A theme screenshot URL
                  name:
                    type: string
                    description: The name of the theme.
                  description:
                    type: string
                    description: A description of the theme.
                  tags:
                    type: array
                    items: {}
                    description: Tags indicating styles and features of the theme.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authorization required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      parameters:
      - name: site
        in: path
        required: true
        schema:
          type: string
        description: Site ID or domain
      - name: http_envelope
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code.  Setting this parameter will force the HTTP status code to always be 200.  The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
      - name: pretty
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Output pretty JSON'
      - name: meta
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
      - name: fields
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
      - name: callback
        in: query
        required: false
        schema:
          type: string
        description: An optional JSONP callback function.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                theme:
                  type: string
                  description: The ID of the theme that should be activated
                style_variation_slug:
                  type: string
                  description: Optional. The slug of the style variation to apply to the theme.
    servers:
    - url: https://public-api.wordpress.com/rest/v1.1
  /themes:
    get:
      operationId: getThemes
      summary: Get a list of all available themes on WordPress.com.
      description: Get a list of all available themes on WordPress.com.
      tags:
      - themes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  themes:
                    type: array
                    items: {}
                    description: A list of themes.
                  count:
                    type: integer
                    description: The amount of themes.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authorization required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      parameters:
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - display
          - edit
        description: 'display: (default) Formats the output as HTML for display.  Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing.  Shortcodes are left unparsed, significant whitespace is kept, etc..'
      - name: http_envelope
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code.  Setting this parameter will force the HTTP status code to always be 200.  The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
      - name: pretty
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Output pretty JSON'
      - name: meta
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
      - name: fields
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
      - name: callback
        in: query
        required: false
        schema:
          type: string
        description: An optional JSONP callback function.
      - name: locale
        in: query
        required: false
        schema:
          type: string
        description: 'ISO 639-1 Locale. Default: en.'
      - name: currency
        in: query
        required: false
        schema:
          type: string
        description: 'Currency. Default: USD'
      - name: retired
        in: query
        required: false
        schema:
          type: boolean
        description: 'Include retired themes? Default: false.'
      - name: extended
        in: query
        required: false
        schema:
          type: boolean
        description: 'To add additional information. Default: False.'
    servers:
    - url: https://public-api.wordpress.com/rest/v1.1
  /themes/{theme_slug}:
    get:
      operationId: getThemesByThemeSlug
      summary: Get a theme on WordPress.com.
      description: Get a theme on WordPress.com.
      tags:
      - themes
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The theme's ID. Usually identical to its slug.
                  slug:
                    type: string
                    description: The theme's slug.
                  name:
                    type: string
                    description: The name of the theme.
                  author:
                    type: string
                    description: The name of the author.
                  author_uri:
                    type: string
                    format: uri
                    description: The URL to the author's homepage.
                  theme_uri:
                    type: string
                    format: uri
                    description: The URL to the theme's homepage.
                  demo_uri:
                    type: string
                    format: uri
                    description: The URL to the demo page on WordPress.com.
                  version:
                    type: string
                    description: The version of the theme.
                  template:
                    type: string
                    description: The template name of the parent theme. Empty string if there is no parent.
                  screenshot:
                    type: string
                    format: uri
                    description: A theme screenshot URL. Equal to the first screenshot in the screenshots array.
                  screenshots:
                    type: array
                    items: {}
                    description: Screenshot URLs.
                  description:
                    type: string
                    description: A description of the theme.
                  description_long:
                    type: string
                    description: A detailed version of the theme's description
                  date_launched:
                    type: string
                    format: date-time
                    description: Date when the theme was launched on WordPress.com.
                  date_updated:
                    type: string
                    format: date-time
                    description: Date when the theme was last updated.
                  price:
                    type: string
                    description: 'value: (float) The price of the theme in the specified currency.; currency: (string=USD) The currency of the theme price.; display: (string) A representation of the theme price, ready to be displayed.'
                    enum:
                    - value
                    - currency
                    - display
                  language:
                    type: string
                    description: 'The language of the theme information retrieved. Default: ''en''.'
                  taxonomies:
                    type: array
                    items: {}
                    description: A multidimensional array of term objects, associated with the theme.
                  download_uri:
                    type: string
                    format: uri
                    description: Download URL.
                  rank_popularity:
                    type: integer
                    description: The theme's popularity rank.
                  rank_trending:
                    type: integer
                    description: The theme's trending rank.
                  extended:
                    type: object
                    description: Additional information, such as license, long description, or support documentation.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authorization required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      parameters:
      - name: theme_slug
        in: path
        required: true
        schema:
          type: string
        description: The slug of the theme.
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - display
          - edit
        description: 'display: (default) Formats the output as HTML for display.  Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing.  Shortcodes are left unparsed, significant whitespace is kept, etc..'
      - name: http_envelope
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code.  Setting this parameter will force the HTTP status code to always be 200.  The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
      - name: pretty
        in: query
        required: false
        schema:
          type: boolean
        description: 'false: (default); true: Output pretty JSON'
      - name: meta
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
      - name: fields
        in: query
        required: false
        schema:
          type: string
        description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
      - name: callback
        in: query
        required: false
        schema:
          type: string
        description: An optional JSONP callback function.
      - name: locale
        in: query
        required: false
        schema:
          type: string
        description: 'ISO 639-1 Locale. Default: en.'
      - name: currency
        in: query
        required: false
        schema:
          type: string
        description: 'Currency. Default: USD'
      - name: retired
        in: query
        required: false
        schema:
          type: boolean
        description: 'Include retired themes? Default: false.'
      - name: extended
        in: query
        required: false
        schema:
          type: boolean
        description: 'To add additional information. Default: False.'
    servers:
    - url: https://public-api.wordpress.com/rest/v1.1
  /wp/v2/sites/{wpcom_site}/themes:
    get:
      operationId: getWpV2SitesbyWpcomSiteThemes
      summary: GET /wp/v2/sites/{wpcom_site}/themes
      tags:
      - themes
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
      parameters:
      - name: wpcom_site
        in: path
        required: true
        schema:
          type: string
      - name: status
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to themes assigned one or more statuses.
    servers:
    - url: https://public-api.wordpress.com
  /wp/v2/sites/{wpcom_site}/themes/{stylesheet}:
    get:
      operationId: getWpV2SitesbyWpcomSiteThemesbyStylesheet
      summary: GET /wp/v2/sites/{wpcom_site}/themes/{stylesheet}
      tags:
      - themes
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
      parameters:
      - name: wpcom_site
        in: path
        required: true
        schema:
          type: string
      - name: stylesheet
        in: path
        required: true
        schema:
          type: string
    servers:
    - url: https://public-api.wordpress.com
  /wpcom/v2/sites/{wpcom_site}/themes/activation-history:
    get:
      operationId: getWpcomV2SitesbyWpcomSiteThemesActivationHistory
      summary: GET /wpcom/v2/sites/{wpcom_site}/themes/activation-history
      tags:
      - themes
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
      parameters:
      - name: wpcom_site
        in: path
        required: true
        schema:
          type: string
    servers:
    - url: https://public-api.wordpress.com
  /wpcom/v2/themes:
    get:
      operationId: getWpcomV2Themes
      summary: GET /wpcom/v2/themes
      tags:
      - themes
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
      parameters:
      - name: page
        in: query
        required: false
        schema:
          type: integer
      - name: search
        in: query
        required: false
        schema:
          type: string
    servers:
    - url: https://public-api.wordpress.com
  /wpcom/v2/themes/readymade-templates:
    get:
      operationId: getWpcomV2ThemesReadymadeTemplates
      summary: GET /wpcom/v2/themes/readymade-templates
      tags:
      - themes
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
    servers:
    - url: https://public-api.wordpress.com
  /wpcom/v2/themes/readymade-templates/{template_id}:
    get:
      operationId: getWpcomV2ThemesReadymadeTemplatesbyTemplateId
      summary: GET /wpcom/v2/themes/readymade-templates/{template_id}
      tags:
      - themes
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
      parameters:
      - name: template_id
        in: path
        required: true
        schema:
          type: string
    servers:
    - url: https://public-api.wordpress.com
  /wpcom/v2/themes/{theme}/premium-details:
    get:
      operationId: getWpcomV2ThemesbyThemePremiumDetails
      summary: GET /wpcom/v2/themes/{theme}/premium-details
      tags:
      - themes
      responses:
        '200':
          description: OK
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPRestError'
      parameters:
      - name: theme
        in: path
        required: true
        schema:
          type: string
    servers:
    - url: https://public-api.wordpress.com
components:
  schemas:
    Error:
      type: object
      description: WordPress.com REST API error envelope (observed live).
      properties:
        error:
          type: string
          examples:
          - not_found
        message:
          type: string
    WPRestError:
      type: object
      description: WordPress REST API error envelope (observed on public-api.wordpress.com).
      properties:
        code:
          type: string
          example: rest_unauthorized
        message:
          type: string
          example: Authentication required.
        data:
          type: object
          properties:
            status:
              type: integer
              example: 401
  securitySchemes:
    oauth2:
      type: oauth2
      description: WordPress.com OAuth 2.1 (see /.well-known/openid-configuration).
      flows:
        authorizationCode:
          authorizationUrl: https://public-api.wordpress.com/oauth2-1/authorize
          tokenUrl: https://public-api.wordpress.com/oauth2-1/token
          refreshUrl: https://public-api.wordpress.com/oauth2-1/token
          scopes:
            global: ''
            auth: ''
            openid: ''
            profile: ''
            email: ''
            users: ''
            sites: ''
            posts: ''
            comments: ''
            taxonomy: ''
            follow: ''
            sharing: ''
            freshly-pressed: ''
            notifications: ''
            insights: ''
            read: ''
            stats: ''
            media: ''
            menus: ''
            batch: ''
            videos: ''
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Authorization: Bearer <access_token>'
x-refined-from:
- automattic-wordpress-com-rest-v1-1-openapi.yml
- automattic-wordpress-com-wp-v2-openapi.yml
- automattic-wordpress-com-wpcom-v2-openapi.yml