openapi: 3.2.0 info: title: Virtual Incision Posts API (WordPress REST wp/v2) version: wp/v2 summary: Newsroom posts published on virtualincision.com. description: 'Virtual Incision publishes virtualincision.com on WordPress (WP Engine), which exposes the WordPress REST API at https://virtualincision.com/wp-json/. The `wp/v2` namespace is anonymously readable and returns the company newsroom, MIRA and miniRAS marketing pages, leadership profiles, events, job postings and the media library as JSON. This document was DERIVED mechanically by API Evangelist from the route-discovery document served at https://virtualincision.com/wp-json/ and the per-collection `OPTIONS` item schemas, both fetched on 2026-09-04 — every path, method, parameter and schema below is taken verbatim from what the host served. Virtual Incision does not publish an OpenAPI definition of its own, and this is NOT a product API: MIRA, the miniaturized robotic-assisted surgery system, has no public API. This is the content API the site CMS exposes. Write operations exist on these routes but require WordPress authentication.' contact: name: Virtual Incision url: https://virtualincision.com/ x-derived-by: API Evangelist enrichment pipeline x-derived-from: https://virtualincision.com/wp-json/ x-derived-on: '2026-09-04' x-provider-published: false servers: - url: https://virtualincision.com/wp-json description: Production tags: - name: Posts description: Newsroom posts published on virtualincision.com. security: - {} paths: /wp/v2/posts: get: operationId: getPosts summary: GET /wp/v2/posts description: Anonymous read — observed HTTP 200 without credentials on 2026-09-04. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: array items: $ref: '#/components/schemas/Posts' '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - {} - applicationPassword: [] parameters: - name: context in: query required: false schema: type: string enum: - view - embed - edit default: view description: Scope under which the request is made; determines fields present in response. - name: page in: query required: false schema: type: integer default: 1 minimum: 1 description: Current page of the collection. - name: per_page in: query required: false schema: type: integer default: 10 minimum: 1 maximum: 100 description: Maximum number of items to be returned in result set. - name: search in: query required: false schema: type: string description: Limit results to those matching a string. - name: after in: query required: false schema: type: string format: date-time description: Limit response to posts published after a given ISO8601 compliant date. - name: modified_after in: query required: false schema: type: string format: date-time description: Limit response to posts modified after a given ISO8601 compliant date. - name: author in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to posts assigned to specific authors. - name: author_exclude in: query required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes posts assigned to specific authors. - name: before in: query required: false schema: type: string format: date-time description: Limit response to posts published before a given ISO8601 compliant date. - name: modified_before in: query required: false schema: type: string format: date-time description: Limit response to posts modified before a given ISO8601 compliant date. - name: exclude in: query required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes specific IDs. - name: include in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to specific IDs. - name: search_semantics in: query required: false schema: type: string enum: - exact description: How to interpret the search input. - name: offset in: query required: false schema: type: integer description: Offset the result set by a specific number of items. - name: order in: query required: false schema: type: string enum: - asc - desc default: desc description: Order sort attribute ascending or descending. - name: orderby in: query required: false schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title default: date description: Sort collection by post attribute. - name: search_columns in: query required: false schema: type: array default: [] items: type: string enum: - post_title - post_content - post_excerpt description: Array of column names to be searched. - name: slug in: query required: false schema: type: array items: type: string description: Limit result set to posts with one or more specific slugs. - name: status in: query required: false schema: type: array default: publish items: type: string enum: - publish - future - draft - pending - private - trash - auto-draft - inherit - request-pending - request-confirmed - request-failed - request-completed - acf-disabled - any description: Limit result set to posts assigned one or more statuses. - name: tax_relation in: query required: false schema: type: string enum: - AND - OR description: Limit result set based on relationship between multiple taxonomies. - name: categories in: query required: false schema: type: - object - array description: Limit result set to items with specific terms assigned in the categories taxonomy. - name: categories_exclude in: query required: false schema: type: - object - array description: Limit result set to items except those with specific terms assigned in the categories taxonomy. - name: tags in: query required: false schema: type: - object - array description: Limit result set to items with specific terms assigned in the tags taxonomy. - name: tags_exclude in: query required: false schema: type: - object - array description: Limit result set to items except those with specific terms assigned in the tags taxonomy. - name: sticky in: query required: false schema: type: boolean description: Limit result set to items that are sticky. - name: ignore_sticky in: query required: false schema: type: boolean default: true description: Whether to ignore sticky posts or not. - name: format in: query required: false schema: type: array items: type: string enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio description: Limit result set to items assigned one or more given formats. post: operationId: createPosts summary: POST /wp/v2/posts description: Write operation. Requires WordPress authentication (Application Password over HTTP Basic, or a logged-in cookie plus X-WP-Nonce); anonymous callers receive HTTP 401. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - applicationPassword: [] - cookieNonce: [] requestBody: required: false content: application/json: schema: type: object properties: date: type: string format: date-time description: The date the post was published, in the site's timezone. date_gmt: type: string format: date-time description: The date the post was published, as GMT. slug: type: string description: An alphanumeric identifier for the post unique to its type. status: type: string enum: - publish - future - draft - pending - private - acf-disabled description: A named status for the post. password: type: string description: A password to protect access to the content and excerpt. title: type: object description: The title for the post. content: type: object description: The content for the post. author: type: integer description: The ID for the author of the post. excerpt: type: object description: The excerpt for the post. featured_media: type: integer description: The ID of the featured media for the post. comment_status: type: string enum: - open - closed description: Whether or not comments are open on the post. ping_status: type: string enum: - open - closed description: Whether or not the post can be pinged. format: type: string enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio description: The format for the post. meta: type: object description: Meta fields. sticky: type: boolean description: Whether or not the post should be treated as sticky. template: type: string description: The theme file to use to display the post. categories: type: array items: type: integer description: The terms assigned to the post in the category taxonomy. tags: type: array items: type: integer description: The terms assigned to the post in the post_tag taxonomy. /wp/v2/posts/{id}: get: operationId: getPostsById summary: GET /wp/v2/posts/{id} description: Anonymous read — observed HTTP 200 without credentials on 2026-09-04. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - {} - applicationPassword: [] parameters: - &id001 name: id in: path required: true schema: type: integer description: WordPress identifier for the id segment. - name: context in: query required: false schema: type: string enum: - view - embed - edit default: view description: Scope under which the request is made; determines fields present in response. - name: excerpt_length in: query required: false schema: type: integer description: Override the default excerpt length. - name: password in: query required: false schema: type: string description: The password for the post if it is password protected. post: operationId: createPostsById summary: POST /wp/v2/posts/{id} description: Write operation. Requires WordPress authentication (Application Password over HTTP Basic, or a logged-in cookie plus X-WP-Nonce); anonymous callers receive HTTP 401. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - applicationPassword: [] - cookieNonce: [] parameters: - *id001 requestBody: required: false content: application/json: schema: type: object properties: date: type: string format: date-time description: The date the post was published, in the site's timezone. date_gmt: type: string format: date-time description: The date the post was published, as GMT. slug: type: string description: An alphanumeric identifier for the post unique to its type. status: type: string enum: &id002 - publish - future - draft - pending - private - acf-disabled description: A named status for the post. password: type: string description: A password to protect access to the content and excerpt. title: type: object description: The title for the post. content: type: object description: The content for the post. author: type: integer description: The ID for the author of the post. excerpt: type: object description: The excerpt for the post. featured_media: type: integer description: The ID of the featured media for the post. comment_status: type: string enum: &id003 - open - closed description: Whether or not comments are open on the post. ping_status: type: string enum: &id004 - open - closed description: Whether or not the post can be pinged. format: type: string enum: &id005 - standard - aside - chat - gallery - link - image - quote - status - video - audio description: The format for the post. meta: type: object description: Meta fields. sticky: type: boolean description: Whether or not the post should be treated as sticky. template: type: string description: The theme file to use to display the post. categories: type: array items: type: integer description: The terms assigned to the post in the category taxonomy. tags: type: array items: type: integer description: The terms assigned to the post in the post_tag taxonomy. patch: operationId: updatePostsById summary: PATCH /wp/v2/posts/{id} description: Write operation. Requires WordPress authentication (Application Password over HTTP Basic, or a logged-in cookie plus X-WP-Nonce); anonymous callers receive HTTP 401. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - applicationPassword: [] - cookieNonce: [] parameters: - *id001 requestBody: required: false content: application/json: schema: type: object properties: date: type: string format: date-time description: The date the post was published, in the site's timezone. date_gmt: type: string format: date-time description: The date the post was published, as GMT. slug: type: string description: An alphanumeric identifier for the post unique to its type. status: type: string enum: *id002 description: A named status for the post. password: type: string description: A password to protect access to the content and excerpt. title: type: object description: The title for the post. content: type: object description: The content for the post. author: type: integer description: The ID for the author of the post. excerpt: type: object description: The excerpt for the post. featured_media: type: integer description: The ID of the featured media for the post. comment_status: type: string enum: *id003 description: Whether or not comments are open on the post. ping_status: type: string enum: *id004 description: Whether or not the post can be pinged. format: type: string enum: *id005 description: The format for the post. meta: type: object description: Meta fields. sticky: type: boolean description: Whether or not the post should be treated as sticky. template: type: string description: The theme file to use to display the post. categories: type: array items: type: integer description: The terms assigned to the post in the category taxonomy. tags: type: array items: type: integer description: The terms assigned to the post in the post_tag taxonomy. delete: operationId: deletePostsById summary: DELETE /wp/v2/posts/{id} description: Write operation. Requires WordPress authentication (Application Password over HTTP Basic, or a logged-in cookie plus X-WP-Nonce); anonymous callers receive HTTP 401. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - applicationPassword: [] - cookieNonce: [] parameters: - *id001 - name: force in: query required: false schema: type: boolean default: false description: Whether to bypass Trash and force deletion. /wp/v2/posts/{parent}/revisions: get: operationId: getPostsByParentRevisions summary: GET /wp/v2/posts/{parent}/revisions description: Anonymous read — observed HTTP 200 without credentials on 2026-09-04. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - {} - applicationPassword: [] parameters: - name: parent in: path required: true schema: type: integer description: WordPress identifier for the parent segment. - name: context in: query required: false schema: type: string enum: - view - embed - edit default: view description: Scope under which the request is made; determines fields present in response. - name: page in: query required: false schema: type: integer default: 1 minimum: 1 description: Current page of the collection. - name: per_page in: query required: false schema: type: integer minimum: 1 maximum: 100 description: Maximum number of items to be returned in result set. - name: search in: query required: false schema: type: string description: Limit results to those matching a string. - name: exclude in: query required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes specific IDs. - name: include in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to specific IDs. - name: offset in: query required: false schema: type: integer description: Offset the result set by a specific number of items. - name: order in: query required: false schema: type: string enum: - asc - desc default: desc description: Order sort attribute ascending or descending. - name: orderby in: query required: false schema: type: string enum: - date - id - include - relevance - slug - include_slugs - title default: date description: Sort collection by object attribute. /wp/v2/posts/{parent}/revisions/{id}: get: operationId: getPostsByParentRevisionsById summary: GET /wp/v2/posts/{parent}/revisions/{id} description: Anonymous read — observed HTTP 200 without credentials on 2026-09-04. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - {} - applicationPassword: [] parameters: - &id006 name: parent in: path required: true schema: type: integer description: WordPress identifier for the parent segment. - &id007 name: id in: path required: true schema: type: integer description: WordPress identifier for the id segment. - name: context in: query required: false schema: type: string enum: - view - embed - edit default: view description: Scope under which the request is made; determines fields present in response. delete: operationId: deletePostsByParentRevisionsById summary: DELETE /wp/v2/posts/{parent}/revisions/{id} description: Write operation. Requires WordPress authentication (Application Password over HTTP Basic, or a logged-in cookie plus X-WP-Nonce); anonymous callers receive HTTP 401. tags: - Posts responses: '200': description: Success. content: application/json: schema: type: object '400': description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '401': description: Authentication required or insufficient capability (`rest_forbidden`). content: application/json: schema: $ref: '#/components/schemas/WPError' '404': description: No route or resource matched (`rest_no_route` / `rest_post_invalid_id`). content: application/json: schema: $ref: '#/components/schemas/WPError' security: - applicationPassword: [] - cookieNonce: [] parameters: - *id006 - *id007 - name: force in: query required: false schema: type: boolean default: false description: Required to be true, as revisions do not support trashing. components: schemas: WPError: type: object description: The WordPress REST API error envelope, returned on every 4xx/5xx. properties: code: type: string description: Machine-readable error slug, e.g. rest_no_route, rest_forbidden. message: type: string description: Human-readable message. data: type: object properties: status: type: integer description: HTTP status code. params: type: object description: Per-parameter validation messages, when present. required: - code - message - data Posts: title: post type: object properties: date: description: The date the post was published, in the site's timezone. type: - string - 'null' format: date-time context: - view - edit - embed date_gmt: description: The date the post was published, as GMT. type: - string - 'null' format: date-time context: - view - edit guid: description: The globally unique identifier for the post. type: object context: - view - edit readonly: true properties: raw: description: GUID for the post, as it exists in the database. type: string context: - edit readonly: true rendered: description: GUID for the post, transformed for display. type: string context: - view - edit readonly: true id: description: Unique identifier for the post. type: integer context: - view - edit - embed readonly: true link: description: URL to the post. type: string format: uri context: - view - edit - embed readonly: true modified: description: The date the post was last modified, in the site's timezone. type: string format: date-time context: - view - edit readonly: true modified_gmt: description: The date the post was last modified, as GMT. type: string format: date-time context: - view - edit readonly: true slug: description: An alphanumeric identifier for the post unique to its type. type: string context: - view - edit - embed status: description: A named status for the post. type: string enum: - publish - future - draft - pending - private - acf-disabled context: - view - edit type: description: Type of post. type: string context: - view - edit - embed readonly: true password: description: A password to protect access to the content and excerpt. type: string context: - edit permalink_template: description: Permalink template for the post. type: string context: - edit readonly: true generated_slug: description: Slug automatically generated from the post title. type: string context: - edit readonly: true class_list: description: An array of the class names for the post container element. type: array context: - view - edit readonly: true items: type: string title: description: The title for the post. type: object context: - view - edit - embed properties: raw: description: Title for the post, as it exists in the database. type: string context: - edit rendered: description: HTML title for the post, transformed for display. type: string context: - view - edit - embed readonly: true content: description: The content for the post. type: object context: - view - edit properties: raw: description: Content for the post, as it exists in the database. type: string context: - edit rendered: description: HTML content for the post, transformed for display. type: string context: - view - edit readonly: true block_version: description: Version of the content block format used by the post. type: integer context: - edit readonly: true protected: description: Whether the content is protected with a password. type: boolean context: - view - edit - embed readonly: true author: description: The ID for the author of the post. type: integer context: - view - edit - embed excerpt: description: The excerpt for the post. type: object context: - view - edit - embed properties: raw: description: Excerpt for the post, as it exists in the database. type: string context: - edit rendered: description: HTML excerpt for the post, transformed for display. type: string context: - view - edit - embed readonly: true protected: description: Whether the excerpt is protected with a password. type: boolean context: - view - edit - embed readonly: true featured_media: description: The ID of the featured media for the post. type: integer context: - view - edit - embed comment_status: description: Whether or not comments are open on the post. type: string enum: - open - closed context: - view - edit ping_status: description: Whether or not the post can be pinged. type: string enum: - open - closed context: - view - edit format: description: The format for the post. type: string enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio context: - view - edit meta: description: Meta fields. type: object context: - view - edit properties: _acf_changed: type: boolean title: '' description: '' default: false content-type: type: string title: '' description: '' default: '' inline_featured_image: type: boolean title: '' description: '' default: false wp_typography_post_enhancements_disabled: type: boolean title: '' description: Whether wp-Typography's typographic enhancements should be applied to the post. default: false _monsterinsights_skip_tracking: type: boolean title: '' description: '' default: false footnotes: type: string title: '' description: '' default: '' sticky: description: Whether or not the post should be treated as sticky. type: boolean context: - view - edit template: description: The theme file to use to display the post. type: string context: - view - edit categories: description: The terms assigned to the post in the category taxonomy. type: array items: type: integer context: - view - edit tags: description: The terms assigned to the post in the post_tag taxonomy. type: array items: type: integer context: - view - edit acf: description: ACF field data type: object properties: [] links: - rel: https://api.w.org/action-publish title: The current user can publish this post. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: status: type: string enum: - publish - future - rel: https://api.w.org/action-unfiltered-html title: The current user can post unfiltered HTML markup and JavaScript. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: content: raw: type: string - rel: https://api.w.org/action-sticky title: The current user can sticky this post. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: sticky: type: boolean - rel: https://api.w.org/action-assign-author title: The current user can change the author on this post. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: author: type: integer - rel: https://api.w.org/action-assign-categories title: The current user can assign terms in the category taxonomy. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: categories: type: array items: type: integer - rel: https://api.w.org/action-create-categories title: The current user can create terms in the category taxonomy. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: categories: type: array items: type: integer - rel: https://api.w.org/action-assign-tags title: The current user can assign terms in the post_tag taxonomy. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: tags: type: array items: type: integer - rel: https://api.w.org/action-create-tags title: The current user can create terms in the post_tag taxonomy. href: https://virtualincision.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: tags: type: array items: type: integer securitySchemes: applicationPassword: type: http scheme: basic description: WordPress Application Passwords over HTTP Basic. Issued at https://virtualincision.com/wp-admin/authorize-application.php (advertised by the wp-json root `authentication` block). cookieNonce: type: apiKey in: header name: X-WP-Nonce description: Logged-in WordPress cookie plus an X-WP-Nonce header — first-party browser context only.