Automattic Sites API
The sites API from Automattic — 25 operation(s) for sites.
The sites API from Automattic — 25 operation(s) for sites.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/automattic-sites-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Automattic Sites API
contact:
name: WordPress.com Developer Resources
url: https://developer.wordpress.com/docs/api/
termsOfService: https://wordpress.com/tos/
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 sites across 3 of this provider''s published API definitions: automattic-wordpress-com-rest-v1-1-openapi.yml, automattic-wordpress-com-rest-v1-2-openapi.yml, automattic-wordpress-com-rest-v1-3-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/rest/v1.2
- url: https://public-api.wordpress.com/rest/v1.3
security:
- bearerAuth: []
tags:
- name: sites
paths:
/me/sites:
get:
operationId: getMeSites
summary: Get a list of the current user's sites.
description: Get a list of the current user's sites.
tags:
- sites
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
sites:
type: array
items: {}
description: List of sites.
'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: site_visibility
in: query
required: false
schema:
type: string
enum:
- all
- visible
- hidden
description: 'all: (default) Return all sites user is a member of, both visible and hidden.; visible: Only return sites set to visible for the user.; hidden: Only return sites set to hidden for the user.'
- name: options
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified options only. Comma-separated list. Example: options=login_url,timezone'
- name: include_domain_only
in: query
required: false
schema:
type: boolean
description: Optional. Whether to include domain-only sites
- name: include_redirect
in: query
required: false
schema:
type: boolean
description: 'Optional. Whether to include redirect sites. Default: true.'
- name: include_a8c_owned
in: query
required: false
schema:
type: boolean
description: 'Optional. Whether to include A8C owned sites. Default: true.'
- name: site_activity
in: query
required: false
schema:
type: string
enum:
- all
- active
- inactive
description: 'all: (default) Return all sites both active or inactive.; active: Only return active sites.; inactive: Only return inactive sites.'
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/me/sites/compact:
get:
operationId: getMeSitesCompact
summary: Not in use
description: Not in use
tags:
- sites
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
sites:
type: array
items: {}
description: List of sites. Currently always empty.
'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: options
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified options only. Comma-separated list. Example: options=login_url,timezone'
- name: site_visibility
in: query
required: false
schema:
type: string
description: 'visible: (default) Only return sites set to visible for the user.'
- name: site_activity
in: query
required: false
schema:
type: string
description: 'active: (default) Only return active sites.'
- name: include_domain_only
in: query
required: false
schema:
type: string
- name: include_redirect
in: query
required: false
schema:
type: string
- name: include_a8c_owned
in: query
required: false
schema:
type: string
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/me/sites/features:
get:
operationId: getMeSitesFeatures
summary: Get a list of the current user's sites features
description: Get a list of the current user's sites features
tags:
- sites
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
sites:
type: array
items: {}
description: List of current user's sites features keyed by blog_id.
'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.
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/me/sites/plugins:
get:
operationId: getMeSitesPlugins
summary: Get a list of the current user's sites plugins
description: Get a list of the current user's sites plugins
tags:
- sites
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
sites:
type: array
items: {}
description: List of current user's sites plugins keyed by blog_id.
'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.
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/sites/{site}:
get:
operationId: getSitesBySite
summary: Get information about a site.
description: Get information about a site.
tags:
- sites
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
ID:
type: integer
description: Site ID
slug:
type: string
description: Slug of site
name:
type: string
description: Title of site
description:
type: string
description: Tagline or description of site
URL:
type: string
description: Full URL to the site
user_can_manage:
type: boolean
description: The current user can manage this site
capabilities:
type: array
items: {}
description: Array of capabilities for the current user on this site.
jetpack:
type: boolean
description: Whether the site is a Jetpack site or not
jetpack_connection:
type: boolean
description: Whether the site is connected to WP.com via `jetpack-connection`
is_multisite:
type: boolean
description: Whether the site is a Multisite site or not. Always true for WP.com sites.
site_owner:
type: integer
description: User ID of the site owner
post_count:
type: integer
description: The number of posts the site has
subscribers_count:
type: integer
description: The number of subscribers the site has
lang:
type: string
description: Primary language code of the site
icon:
type: array
items: {}
description: An array of icon formats for the site
logo:
type: array
items: {}
description: The site logo, set in the Customizer
visible:
type: boolean
description: If this site is visible in the user's site list
is_private:
type: boolean
description: If the site is a private site or not
is_coming_soon:
type: boolean
description: If the site is marked as "coming soon" or not
single_user_site:
type: boolean
description: Whether the site is single user. Only returned for WP.com sites and for Jetpack sites with version 3.4 or higher.
is_vip:
type: boolean
description: If the site is a VIP site or not.
is_following:
type: boolean
description: If the current user is subscribed to this site in the reader
organization_id:
type: integer
description: P2 Organization identifier.
options:
type: array
items: {}
description: 'An array of options/settings for the blog. Only viewable by users with post editing rights to the site. Note: Post formats is deprecated, please see /sites/$id/post-formats/'
p2_thumbnail_elements:
type: array
items: {}
description: Details used to render a thumbnail of the site. P2020 themed sites only.
plan:
type: array
items: {}
description: Details of the current plan for this site.
products:
type: array
items: {}
description: Details of the current products for this site.
zendesk_site_meta:
type: array
items: {}
description: Site meta data for Zendesk.
updates:
type: array
items: {}
description: An array of available updates for plugins, themes, wordpress, and languages.
jetpack_modules:
type: array
items: {}
description: A list of active Jetpack modules.
meta:
type: object
description: Meta data
quota:
type: array
items: {}
description: An array describing how much space a user has left for uploads
launch_status:
type: string
description: A string describing the launch status of a site
site_migration:
type: array
items: {}
description: Data about any migration into the site.
is_fse_active:
type: boolean
description: If the site has Full Site Editing active or not.
is_fse_eligible:
type: boolean
description: If the site is capable of Full Site Editing or not
is_core_site_editor_enabled:
type: boolean
description: If the site has the core site editor enabled.
is_wpcom_atomic:
type: boolean
description: If the site is a WP.com Atomic one.
is_wpcom_staging_site:
type: boolean
description: If the site is a WP.com staging site.
user_interactions:
type: array
items: {}
description: An array of user interactions with a site.
was_ecommerce_trial:
type: boolean
description: If the site ever used an eCommerce trial.
was_upgraded_from_trial:
type: boolean
description: If the site ever upgraded to a paid plan from a trial.
was_migration_trial:
type: boolean
description: If the site ever used a migration trial.
was_hosting_trial:
type: boolean
description: If the site ever used a hosting trial.
wpcom_site_setup:
type: string
description: The WP.com site setup identifier.
is_deleted:
type: boolean
description: If the site flagged as deleted.
is_a4a_client:
type: boolean
description: If the site is an A4A client site.
is_a4a_dev_site:
type: boolean
description: If the site is an A4A dev site.
is_garden:
type: boolean
description: If the site is a Garden site.
garden_name:
type: string
description: The name of the Garden site.
garden_partner:
type: string
description: The partner of the Garden site.
garden_is_provisioned:
type: boolean
description: If the Garden site is provisioned.
is_wpcom_flex:
type: boolean
description: If the site is a Flex site
big_sky_enabled:
type: boolean
description: Whether the Big Sky AI assistant is enabled for this site.
hosting_provider_guess:
type: string
description: Guess of the hosting provider. WordPress.com platform only; only returned when explicitly requested via the fields parameter.
environment_type:
type: string
description: The WP_ENVIRONMENT_TYPE of the site as synced by Jetpack. WordPress.com platform only; only returned when explicitly requested via the fields parameter.
'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.
- name: options
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified options only. Comma-separated list. Example: options=login_url,timezone'
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/sites/{site}/automated-transfers/status:
get:
operationId: getSitesBySiteAutomatedTransfersStatus
summary: Returns the current status of Automated Transfer for a site.
description: Returns the current status of Automated Transfer for a site.
tags:
- sites
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: The current status of the transfer.
'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.
servers:
- url: https://public-api.wordpress.com/rest/v1.1
/sites/{site}/embeds:
get:
operationId: getSitesBySiteEmbeds
summary: 'Get a list of embeds available on a site. Note: The current user must have publishing access.'
description: 'Get a list of embeds available on a site. Note: The current user must have publishing access.'
tags:
- sites
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
embeds:
type: array
items: {}
description: A list of supported embeds by their regex pattern.
'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
# --- truncated at 32 KB (123 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/automattic/refs/heads/main/openapi/automattic-sites-api-openapi.yml