WordPress.com REST API v1.3

Additive alternate version of the WordPress.com REST API, publishing 19 endpoints including WordPress.com marketplace search.

OpenAPI Specification

automattic-wordpress-com-rest-v1-3-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: WordPress.com REST API v1.3
  version: v1.3
  description: 'The WordPress.com REST API, operated by Automattic. Derived by API Evangelist from Automattic''s
    own self-describing help document at https://public-api.wordpress.com/rest/v1.3/help (Accept: application/json),
    which publishes every endpoint''s method, path, description, path/query/body parameters and response fields.
    Security schemes come from https://public-api.wordpress.com/.well-known/openid-configuration. The error envelope
    was observed live.'
  termsOfService: https://wordpress.com/tos/
  contact:
    name: WordPress.com Developer Resources
    url: https://developer.wordpress.com/docs/api/
  x-derived-from: https://public-api.wordpress.com/rest/v1.3/help
  x-derived-by: API Evangelist enrichment pipeline
servers:
- url: https://public-api.wordpress.com/rest/v1.3
tags:
- name: batch
- name: domain-connect
- name: marketplace
- name: read
- name: sites
- name: tests
- name: users
paths:
  /batch/:
    get:
      operationId: getBatch
      summary: Run several GET endpoints and return them as an array.
      description: Run several GET endpoints and return them as an array.
      tags:
      - batch
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '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: 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: urls
        in: query
        required: false
        schema:
          type: array
          items: {}
        description: Array of endpoints to call
  /domain-connect/authorize/v2/domainTemplates/providers/{provider_id}/services/{service_id}/apply:
    get:
      operationId: getDomainConnectAuthorizeV2DomaintemplatesProvidersByProviderIdServicesByServiceIdApply
      summary: Authorization request to apply a template to a domain using the Domain Connect Sync Flow method.
      description: Authorization request to apply a template to a domain using the Domain Connect Sync Flow method.
      tags:
      - domain-connect
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: True if the template was successfully applied.
                  records:
                    type: array
                    items: {}
                    description: The complete list of DNS records for the domain after the template was applied.
        '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: provider_id
        in: path
        required: true
        schema:
          type: string
        description: The provider id of the template being applied
      - name: service_id
        in: path
        required: true
        schema:
          type: string
        description: The service id of the template being applied
      - 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: domain
        in: query
        required: false
        schema:
          type: string
        description: The domain the template should be applied to.
      - name: host
        in: query
        required: false
        schema:
          type: string
        description: The subdomain label the template should be applied to
      - name: key
        in: query
        required: false
        schema:
          type: string
        description: The public key ID.
      - name: sig
        in: query
        required: false
        schema:
          type: string
        description: The query string parameter signature.
      - name: state
        in: query
        required: false
        schema:
          type: string
        description: Optional opaque value passed through to redirect_uri.
  /domain-connect/authorize/v2/domainTemplates/providers/{provider_id}/services/{service_id}/apply/authorized:
    get:
      operationId: getDomainConnectAuthorizeV2DomaintemplatesProvidersByProviderIdServicesByServiceIdApplyAuthorized
      summary: Apply a template to a domain after a user has granted authorization using the Sync Flow method.
      description: Apply a template to a domain after a user has granted authorization using the Sync Flow method.
      tags:
      - domain-connect
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: True if the template was successfully applied.
                  records:
                    type: array
                    items: {}
                    description: The complete list of DNS records for the domain after the template was applied.
        '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: provider_id
        in: path
        required: true
        schema:
          type: string
        description: The provider id of the template being applied
      - name: service_id
        in: path
        required: true
        schema:
          type: string
        description: The service id of the template being applied
      - 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: domain
        in: query
        required: false
        schema:
          type: string
        description: The domain the template should be applied to.
      - name: key
        in: query
        required: false
        schema:
          type: string
        description: The public key ID.
      - name: sig
        in: query
        required: false
        schema:
          type: string
        description: The query string parameter signature.
      - name: groupId
        in: query
        required: false
        schema:
          type: string
        description: The optional list of groupIds to apply. If not present, all records will be applied.
      - name: dc-nonce
        in: query
        required: false
        schema:
          type: string
        description: The nonce for this template request generated during the auth request.
      - name: state
        in: query
        required: false
        schema:
          type: string
        description: Optional opaque value passed through to redirect_uri.
  /domain-connect/unsupported:
    get:
      operationId: getDomainConnectUnsupported
      summary: Returns an error for an unsupported Domain Connect endpoint.
      description: Returns an error for an unsupported Domain Connect endpoint.
      tags:
      - domain-connect
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '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.
  /domain-connect/v2/domainTemplates/providers/{provider_id}/services/{service_id}:
    get:
      operationId: getDomainConnectV2DomaintemplatesProvidersByProviderIdServicesByServiceId
      summary: Determine if a a specific Domain Connect template is supported.
      description: Determine if a a specific Domain Connect template is supported.
      tags:
      - domain-connect
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '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: provider_id
        in: path
        required: true
        schema:
          type: string
        description: Provider ID as specified in the template
      - name: service_id
        in: path
        required: true
        schema:
          type: string
        description: Service ID as specified in the template
      - 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.
  /domain-connect/v2/{domain}/settings:
    get:
      operationId: getDomainConnectV2ByDomainSettings
      summary: Get the settings to use for Domain Connect.
      description: Get the settings to use for Domain Connect.
      tags:
      - domain-connect
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  settings:
                    type: array
                    items: {}
                    description: List of the Domain Connect settings
        '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: domain
        in: path
        required: true
        schema:
          type: string
        description: Domain name
      - 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.
  /marketplace/search:
    get:
      operationId: getMarketplaceSearch
      summary: Search the Wordpress.com Marketplace
      description: Search the Wordpress.com Marketplace
      tags:
      - marketplace
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                    description: The total number of results in the index.
                  corrected_query:
                    type: string
                    description: If there were no results for the query and the query got auto corrected, then this
                      string will be non-false and contain the query that was used to obtain results.
                  page_handle:
                    type: string
                    description: Query string for passing to "page_handle" param to get the next set of results.
                  results:
                    type: array
                    items: {}
                    description: The Elasticsearch formatted search results
                  aggregations:
                    type: array
                    items: {}
                    description: The Elasticsearch formatted aggregation results
                  suggestions:
                    type: array
                    items: {}
                    description: A list of suggestions for this query.
        '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: array
          items: {}
        description: List of fields to return. TBD See all fields.
      - name: callback
        in: query
        required: false
        schema:
          type: string
        description: An optional JSONP callback function.
      - name: size
        in: query
        required: false
        schema:
          type: integer
        description: 'Number of results to return. Max 20 Default: 10.'
      - name: from
        in: query
        required: false
        schema:
          type: integer
        description: Item number to return. Max 200
      - name: query
        in: query
        required: false
        schema:
          type: string
        description: The user's search query
      - name: lang
        in: query
        required: false
        schema:
          type: array
          items: {}
        description: Lang analyzer to use for searching. e.g. "en", "zh-cn"
      - name: sort
        in: query
        required: false
        schema:
          type: string
        description: 'How to sort results. Default is score_default. Also supports: date_desc, date_asc, TBD'
      - name: filter
        in: query
        required: false
        schema:
          type: array
          items: {}
        description: Filters applied to the search. Will be added as a part of a top level bool query
      - name: aggregations
        in: query
        required: false
        schema:
          type: array
          items: {}
        description: Return aggregations from matches to the search. See details.
      - name: page_handle
        in: query
        required: false
        schema:
          type: string
        description: Base64 encoded query string for scrolling results from one page to the next. Overrides "from"
          and can add fitlers
      - name: algorithm
        in: query
        required: false
        schema:
          type: string
        description: Algorithm to use for search. Typically auto selected and supplied by page_handle.
      - name: group_id
        in: query
        required: false
        schema:
          type: string
        description: 'Group id to search for, used as : to support multiple group types. A way to search across
          multiple sites.'
      - name: track_total_hits
        in: query
        required: false
        schema:
          type: boolean
        description: Controls whether to track result counts beyond 10000
  /marketplace/{product_slug}/related:
    get:
      operationId: getMarketplaceByProductSlugRelated
      summary: Get related marketplace products
      description: Get related marketplace products
      tags:
      - marketplace
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items: {}
                    description: The top level "hits" object from the Elasticsearch query response with post_id
                      and blog_id fields of the related items.
        '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: product_slug
        in: path
        required: true
        schema:
          type: string
        description: Marketplace product slug.
      - 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: size
        in: query
        required: false
        schema:
          type: integer
        description: 'Number of results to return Default: 4.'
      - name: from
        in: query
        required: false
        schema:
          type: integer
        description: Offset to start from
  /me/billing-history:
    get:
      operationId: getMeBillingHistory
      summary: Get list of current user's billing history and upcoming charges.
      description: Get list of current user's billing history and upcoming charges.
      tags:
      - users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  billing_history:
                    type: array
                    items: {}
                    description: Limited list of current user's previous purchases.
                  billing_history_total:
                    type: integer
                    description: Number of current user's previous purchases.
                  upcoming_charges:
                    type: arr

# --- truncated at 32 KB (116 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/automattic/refs/heads/main/openapi/automattic-wordpress-com-rest-v1-3-openapi.yml
Where this information came from

This is an independent, third-party profile of WordPress.com REST API v1.3, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.