Automattic Posts API

The posts API from Automattic — 34 operation(s) for posts.

Operations 42

GET /me/posts Get a list of posts across all the user's sites. #
GET /sites/{site}/dropdown-pages/ Get a list of pages to be displayed as options in a select-a-page-dropdown. #
GET /sites/{site}/posts/ Get a list of matching posts. #
POST /sites/{site}/posts/delete Delete multiple posts. Note: If the trash is enabled, this request will send non-trashed posts to the trash. Trashed pos #
POST /sites/{site}/posts/new Create a post. #
POST /sites/{site}/posts/restore Restore multiple posts. #
GET /sites/{site}/posts/slug:{post_slug} Get a single post (by slug). #
GET /sites/{site}/posts/{post_ID} Get a single post (by ID). #
POST /sites/{site}/posts/{post_ID} Edit a post. #
POST /sites/{site}/posts/{post_ID}/delete Delete a post. Note: If the trash is enabled, this request will send the post to the trash. A second request will perman #
GET /sites/{site}/posts/{post_ID}/likes/ Get a list of the likes for a post. #
GET /sites/{site}/posts/{post_ID}/likes/mine/ Get the current user's like status for a post. #
POST /sites/{site}/posts/{post_ID}/likes/mine/delete Unlike a post. #
POST /sites/{site}/posts/{post_ID}/likes/new Like a post. #
GET /sites/{site}/posts/{post_ID}/reblogs/mine Get reblog status for a post. #
POST /sites/{site}/posts/{post_ID}/reblogs/new Reblog a post. #
POST /sites/{site}/posts/{post_ID}/restore Restore a post or page from the trash to its previous status. #
POST /sites/{site}/posts/{post}/related Search within a site for related posts. #
GET /sites/{site}/posts/{post}/subscribers/ Get a list of the specified post's subscribers. #
GET /sites/{site}/posts/{post}/subscribers/mine Get subscription status of the specified post for the current user. #
POST /sites/{site}/posts/{post}/subscribers/mine/delete Unsubscribe the current user from the specified post. #
POST /sites/{site}/posts/{post}/subscribers/mine/update Subscribe current user to be notified of the specified post's comments. #
POST /sites/{site}/posts/{post}/subscribers/new Subscribe current user to be notified of the specified post's comments. #
GET /users/{user_id}/posts Get a list of published posts authored by a specified user across their public sites, ordered by date in descending orde #
GET /wp/v2/sites/{wpcom_site}/posts GET /wp/v2/sites/{wpcom_site}/posts #
POST /wp/v2/sites/{wpcom_site}/posts POST /wp/v2/sites/{wpcom_site}/posts #
GET /wp/v2/sites/{wpcom_site}/posts/{id} GET /wp/v2/sites/{wpcom_site}/posts/{id} #
POST /wp/v2/sites/{wpcom_site}/posts/{id} POST /wp/v2/sites/{wpcom_site}/posts/{id} #
PUT /wp/v2/sites/{wpcom_site}/posts/{id} PUT /wp/v2/sites/{wpcom_site}/posts/{id} #
PATCH /wp/v2/sites/{wpcom_site}/posts/{id} PATCH /wp/v2/sites/{wpcom_site}/posts/{id} #
DELETE /wp/v2/sites/{wpcom_site}/posts/{id} DELETE /wp/v2/sites/{wpcom_site}/posts/{id} #
GET /wp/v2/sites/{wpcom_site}/posts/{id}/autosaves GET /wp/v2/sites/{wpcom_site}/posts/{id}/autosaves #
POST /wp/v2/sites/{wpcom_site}/posts/{id}/autosaves POST /wp/v2/sites/{wpcom_site}/posts/{id}/autosaves #
GET /wp/v2/sites/{wpcom_site}/posts/{parent}/autosaves/{id} GET /wp/v2/sites/{wpcom_site}/posts/{parent}/autosaves/{id} #
GET /wp/v2/sites/{wpcom_site}/posts/{parent}/revisions GET /wp/v2/sites/{wpcom_site}/posts/{parent}/revisions #
GET /wp/v2/sites/{wpcom_site}/posts/{parent}/revisions/{id} GET /wp/v2/sites/{wpcom_site}/posts/{parent}/revisions/{id} #
DELETE /wp/v2/sites/{wpcom_site}/posts/{parent}/revisions/{id} DELETE /wp/v2/sites/{wpcom_site}/posts/{parent}/revisions/{id} #
POST /wpcom/v2/sites/{wpcom_site}/posts/auto-draft POST /wpcom/v2/sites/{wpcom_site}/posts/auto-draft #
GET /wpcom/v2/sites/{wpcom_site}/posts/map-url GET /wpcom/v2/sites/{wpcom_site}/posts/map-url #
GET /wpcom/v2/sites/{wpcom_site}/posts/{postId}/map-url GET /wpcom/v2/sites/{wpcom_site}/posts/{postId}/map-url #
POST /wpcom/v2/sites/{wpcom_site}/posts/{postId}/publicize POST /wpcom/v2/sites/{wpcom_site}/posts/{postId}/publicize #
GET /wpcom/v2/sites/{wpcom_site}/posts/{postId}/publicize/published-actions GET /wpcom/v2/sites/{wpcom_site}/posts/{postId}/publicize/published-actions #

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-posts-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-posts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Automattic Posts 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 posts across 4 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-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/rest/v1.2
- url: https://public-api.wordpress.com
security:
- bearerAuth: []
tags:
- name: posts
paths:
  /me/posts:
    get:
      operationId: getMePosts
      summary: Get a list of posts across all the user's sites.
      description: Get a list of posts across all the user's sites.
      tags:
      - posts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: integer
                    description: The post ID.
                  site_ID:
                    type: integer
                    description: The site ID.
                  author:
                    type: object
                    description: The author of the post.
                  date:
                    type: string
                    format: date-time
                    description: The post's creation time.
                  modified:
                    type: string
                    format: date-time
                    description: The post's most recent update time.
                  title:
                    type: string
                    description: context dependent.
                  URL:
                    type: string
                    format: uri
                    description: The full permalink URL to the post.
                  short_URL:
                    type: string
                    format: uri
                    description: The wp.me short URL.
                  content:
                    type: string
                    description: context dependent.
                  excerpt:
                    type: string
                    description: context dependent.
                  slug:
                    type: string
                    description: The name (slug) for the post, used in URLs.
                  guid:
                    type: string
                    description: The GUID for the post.
                  status:
                    type: string
                    description: 'publish: The post is published.; draft: The post is saved as a draft.; pending: The post is pending editorial approval.; private: The post is published privately; future: The post is scheduled for future publishing.; trash: The post is in the trash.; auto-draft: The post is a placeholder for a new post.'
                    enum:
                    - publish
                    - draft
                    - pending
                    - private
                    - future
                    - trash
                    - auto-draft
                  sticky:
                    type: boolean
                    description: Is the post sticky?
                  password:
                    type: string
                    description: The plaintext password protecting the post, or, more likely, the empty string if the post is not password protected.
                  has_password:
                    type: boolean
                    description: Whether the post is password protected, regardless of whether the current user can access it.
                  parent:
                    type: string
                    description: A reference to the post's parent, if it has one.
                  type:
                    type: string
                    description: The post's post_type. Post types besides post, page and revision need to be whitelisted using the rest_api_allowed_post_types filter.
                  discussion:
                    type: object
                    description: Hash of discussion options for the post
                  likes_enabled:
                    type: boolean
                    description: Is the post open to likes?
                  sharing_enabled:
                    type: boolean
                    description: Should sharing buttons show on this post?
                  like_count:
                    type: integer
                    description: The number of likes for this post.
                  i_like:
                    type: boolean
                    description: Does the current user like this post?
                  is_reblogged:
                    type: boolean
                    description: Did the current user reblog this post?
                  is_following:
                    type: boolean
                    description: Is the current user following this blog?
                  global_ID:
                    type: string
                    description: A unique WordPress.com-wide representation of a post.
                  featured_image:
                    type: string
                    format: uri
                    description: The URL to the featured image for this post if it has one.
                  post_thumbnail:
                    type: object
                    description: The attachment object for the featured image if it has one.
                  format:
                    type: string
                    description: 'standard: Standard; aside: Aside; chat: Chat; gallery: Gallery; link: Link; image: Image; quote: Quote; status: Status; video: Video; audio: Audio'
                    enum:
                    - standard
                    - aside
                    - chat
                    - gallery
                    - link
                    - image
                    - quote
                    - status
                    - video
                    - audio
                  geo:
                    type: string
                  menu_order:
                    type: integer
                    description: (Pages Only) The order pages should appear in.
                  page_template:
                    type: string
                    description: (Pages Only) The page template this page is using.
                  publicize_URLs:
                    type: array
                    items: {}
                    description: Array of Facebook URLs published by this post.
                  terms:
                    type: object
                    description: Hash of taxonomy names mapping to a hash of terms keyed by term name.
                  tags:
                    type: object
                    description: Hash of tags (keyed by tag name) applied to the post.
                  categories:
                    type: object
                    description: Hash of categories (keyed by category name) applied to the post.
                  attachments:
                    type: object
                    description: Hash of post attachments (keyed by attachment ID). Returns the most recent 20 attachments. Use the `/sites/$site/media` endpoint to query the attachments beyond the default of 20 that are returned here.
                  attachment_count:
                    type: integer
                    description: The total number of attachments for this post. Use the `/sites/$site/media` endpoint to query the attachments beyond the default of 20 that are returned here.
                  metadata:
                    type: array
                    items: {}
                    description: Array of post metadata keys and values. All unprotected meta keys are available by default for read requests. Both unprotected and protected meta keys are available for authenticated requests with access. Protected meta keys can be made available with the rest_api_allowed_public_metadata filter.
                  meta:
                    type: object
                    description: Meta information about the results. The next_page property, if present, contains a handle that will fetch the next page of results, assuming the next query uses the same criteria as the current query.
                  capabilities:
                    type: object
                    description: List of post-specific permissions for the user; publish_post, edit_post, delete_post
                  revisions:
                    type: array
                    items: {}
                    description: List of post revision IDs. Only available for posts retrieved with context=edit.
                  other_URLs:
                    type: object
                    description: List of URLs for this post. Permalink and slug suggestions.
                  posts:
                    type: array
                    items: {}
                    description: List of posts
                  found:
                    type: integer
                    description: The total number of posts found. Decreases as you advance a list with a page_handle.
        '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: author
        in: query
        required: false
        schema:
          type: integer
        description: The ID of the author or empty for `all authors`
      - name: number
        in: query
        required: false
        schema:
          type: integer
        description: 'The number of posts to return. Limit: 20. Default: 20.'
      - name: offset
        in: query
        required: false
        schema:
          type: integer
        description: 'The index to start counting from. Limit: 199.'
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: 'Return the Nth 1-indexed page of posts. Takes precedence over the offset parameter. Limit: 10.'
      - name: page_handle
        in: query
        required: false
        schema:
          type: string
        description: A page handle, returned from a previous API call as a meta.next_page property. This is the most efficient way to fetch the next page of results.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - DESC
          - ASC
        description: 'DESC: (default) Return posts in descending order. For dates, that means newest to oldest.; ASC: Return posts in ascending order. For dates, that means oldest to newest.'
      - name: order_by
        in: query
        required: false
        schema:
          type: string
          enum:
          - date
          - modified
        description: 'date: (default) Order by the created time of each post (search queries will sort by relevance).; modified: Order by the modified time (gmt) of each post. (search queries will sort by relevance)'
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts dated after the specified datetime.
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts dated before the specified datetime.
      - name: modified_after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts modified after the specified datetime.
      - name: modified_before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts modified before the specified datetime.
      - name: type
        in: query
        required: false
        schema:
          type: string
          enum:
          - post
          - page
        description: 'post: (default) Return post objects; page: Return page objects'
      - name: status
        in: query
        required: false
        schema:
          type: string
        description: 'Comma-separated list of statuses for which to query, including any of: "publish", "private", "draft", "pending", "future", and "trash", or simply "any". Defaults to "publish"'
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: 'Search query checked against `title`, `content`, `category.name`, `tag.name`, and `author`, and will return results sorted by relevance. Limit: 250 characters'
      - name: lang
        in: query
        required: false
        schema:
          type: string
        description: The search language, uses user interface language by default
      - name: sites
        in: query
        required: false
        schema:
          type: string
        description: Optional comma-separated list of specific site IDs to further limit results
      - name: site_visibility
        in: query
        required: false
        schema:
          type: string
          enum:
          - all
          - visible
          - hidden
        description: 'all: (default) Return posts from all sites user is a member of, both visible and hidden; visible: Only return posts from sites set to visible for the user; hidden: Only return posts from sites set to hidden for the user'
    servers:
    - url: https://public-api.wordpress.com/rest/v1.1
  /sites/{site}/dropdown-pages/:
    get:
      operationId: getSitesBySiteDropdownPages
      summary: Get a list of pages to be displayed as options in a select-a-page-dropdown.
      description: Get a list of pages to be displayed as options in a select-a-page-dropdown.
      tags:
      - posts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    type: integer
                    description: The number of pages found.
                  dropdown_pages:
                    type: array
                    items: {}
                    description: An array of dropdown_page objects.
        '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}/posts/:
    get:
      operationId: getSitesBySitePosts
      summary: Get a list of matching posts.
      description: Get a list of matching posts.
      tags:
      - posts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  found:
                    type: integer
                    description: The total number of posts found that match the request (ignoring limits, offsets, and pagination).
                  posts:
                    type: array
                    items: {}
                    description: An array of post objects.
                  meta:
                    type: object
                    description: Meta data
        '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: number
        in: query
        required: false
        schema:
          type: integer
        description: 'The number of posts to return. Limit: 100. Default: 20.'
      - name: offset
        in: query
        required: false
        schema:
          type: integer
        description: 0-indexed offset.
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: Return the Nth 1-indexed page of posts. Takes precedence over the offset parameter.
      - name: page_handle
        in: query
        required: false
        schema:
          type: string
        description: A page handle, returned from a previous API call as a meta.next_page property. This is the most efficient way to fetch the next page of results.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - DESC
          - ASC
        description: 'DESC: (default) Return posts in descending order. For dates, that means newest to oldest.; ASC: Return posts in ascending order. For dates, that means oldest to newest.'
      - name: order_by
        in: query
        required: false
        schema:
          type: string
          enum:
          - date
          - modified
          - title
          - comment_count
          - ID
        description: 'date: (default) Order by the created time of each post.; modified: Order by the modified time of each post.; title: Order lexicographically by the posts'' titles.; comment_count: Order by the number of comments for each post.; ID: Order by post ID.'
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts dated after the specified datetime.
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts dated before the specified datetime.
      - name: modified_after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts modified after the specified datetime.
      - name: modified_before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Return posts modified before the specified datetime.
      - name: tag
        in: query
        required: false
        schema:
          type: string
        description: Specify the tag name or slug.
      - name: category
        in: query
        required: false
        schema:
          type: string
        description: Specify the category name or slug.
      - name: term
        in: query
        required: false
        schema:
          type: object
        description: Specify comma-separated term slugs to search within, indexed by taxonomy slug.
      - name: type
        in: query
        required: false
        schema:
          type: string
        description: Specify the post type. Defaults to 'post', use 'any' to query for both posts and pages. Post types besides post and page need to be whitelisted using the rest_api_allowed_post_types filter.
      - name: parent_id
        in: query
        required: false
        schema:
          type: integer
        description: Returns only posts which are children of the specified post. Applies only to hierarchical post types.
      - name: include
        in: query
        required: false
        schema:
          type: string
        description: Includes the specified post ID(s) in the response
      - name: exclude
        in: query
        required: false
        schema:
          type: string
        description: Excludes the specified post ID(s) from the response
      - name: exclude_tree
        in: query
        required: false
        schema:
          type: integer
        description: Excludes the specified post and all of its descendants from the response. Applies only to hierarchical post types.
      - name: status
        in: query
        required: false
        schema:
          type: string
        description: 'Comma-separated list of statuses for which to query, including any of: "publish", "private", "draft", "pending", "future", and "trash", or simply "any". Defaults to "publish"'
      - name: sticky
        in: query
        required: false
        schema:
          type: string
          enum:
          - include
          - exclude
          - require
        description: 'include: (default) Sticky posts are not excluded from the list.; exclude: Sticky posts are excluded from the list.; require: Only include sticky posts'
      - name: author
        in: query
        required: false
        schema:
          type: integer
        description: Author's user ID
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Search query
      - name: meta_key
        in: query
        required: false
        schema:
          type: string
        description: Metadata key that the post should contain
      - name: meta_value
        in: query
        required: false
        schema:
          type: string
        description: Metadata value that the post should contain. Will only be applied if a `meta_key` is also given
    servers:
    - url: https://public-api.wordpress.com/rest/v1.1
  /sites/{site}/posts/delete:
    post:
      operationId: postSitesBySitePostsDelete
      summary: 'Delete multiple posts. Note: If the trash is enabled, this request will send non-trashed posts to the trash. Trashed pos'
      description: 'Delete multiple posts. Note: If the trash is enabled, this request will send non-trashed posts to the trash. Trashed posts will be permanently deleted.'
      tags:
      - posts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: integer
                    description: The post ID.
                  site_ID:
                    type: integer
                    description: The site ID.
                  author:
                    type: object
                    description: The author of the post.
                  date:
                    type: string
                    format: date-time
                    description: The post's creation time.
                  modified:
                    type: string
                    format: date-time
                    description: The post's most recent update time.
                  title:
                    type: string
                    description: context dependent.
                  URL:
                    type: string
                    format: uri
                    description: The full permalink URL to the post.
                  short_URL:
                    type: string
                    format: uri
                    description: The wp.me short URL.
                  content:
                    type: string
                    description: context dependent.
                  excerpt:
                    type: string
                    description: context dependent.
                  slug:
                    type: string
                    description: The name (slug) for the post, used in URLs.
                  guid:
                    type: string
                    description: The GUID for the post.
                  status:
                    type: string
                    description: 'publish: The post is published.; draft: The post is saved as a draft.; pending: The post is pending editorial approval.; private: The post is published privately; future: The post is scheduled for future publishing.; trash: The post is in the trash.; auto-draft: The post is a placeholder for a new post.; deleted: The post has been deleted permanently.'
                    enum:
                    - publish
                    - draft
                    - pending
                    - private
                    - future
                    - trash
                    - auto-draft
                    - deleted
                  sticky:
                    type: boolean
                    description: Is the post sticky?
                  password:
                    type: string
                    description: The plaintext password protecting the post, or, more likely, the empty string if the post is not password protected.
                  has_password:
                    type: boolean
                    description: Whether the post is password protected, regardless of whether the current user can access it.
                  parent:
                    type: string
                    description: A reference to the post's parent, if it has one.
                  type:
                    type: string
                    description: The post's post_type. Post types besides post, page and revision need to be whitelisted using the rest_api_allowed_post_types filter.
                  discussion:
                    type: object
                    description: Hash of discussion options for the post
                  likes_enabled:
                    type: boolean
                    description: Is the post open to likes?
                  sharing_enabled:
                    type: boolean
                    description: Should sharing buttons show on this post?
                  like_count:
                    type: integer
                    description: The number of likes for this post.
                  i_like:
                    type: boolean
                    description: Does the current user like this post?
                  is_reblogged:
                    type: boolean
                    description: Did the current user reblog this post?
                  is_following:
                    type: boolean
                    description: Is the current user following this blog?
     

# --- truncated at 32 KB (220 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/automattic/refs/heads/main/openapi/automattic-posts-api-openapi.yml