openapi: 3.1.0 info: title: Flare Therapeutics Content API version: wp/v2 summary: Anonymously readable WordPress REST content API behind www.flaretx.com. description: >- The read-only content surface Flare Therapeutics exposes at https://www.flaretx.com/wp-json. Flare Therapeutics is a clinical-stage biotechnology company at 400 Technology Square, Cambridge, Massachusetts, developing small-molecule precision medicines against transcription factors — historically "undruggable" targets — using a switch-site discovery platform. Its lead programs are FX-909 in advanced urothelial cancer and FX-111 in prostate cancer, and it runs a discovery collaboration with Roche. It operates no developer program and markets no product API. This document is an API Evangelist derivation of the WordPress `wp/v2` and `oembed/1.0` route index the site publishes at /wp-json/, restricted to the operations verified to return data anonymously on 2026-08-12. Write operations, `/wp/v2/users`, `/wp/v2/settings`, `/wp/v2/menus`, `/wp/v2/themes`, `/wp/v2/plugins`, `/wp/v2/block-types`, `/wp/v2/font-collections`, `/wp/v2/icons`, the `wp-abilities/v1` namespace, the `aiarc/v1`, `wpe_sign_on_plugin/v1`, `google-site-kit/v1`, `yoast/v1`, `wpgmza/v1`, `akismet/v1`, `post-duplicator/v1`, `mtphrSettings/v1` and `gosmtp-smtp` plugin namespaces and the whole plugin-administration surface all require authentication or are administrative and are deliberately excluded — see x-api-evangelist-provenance. contact: name: Flare Therapeutics url: https://www.flaretx.com/ email: contact@flaretx.com x-api-evangelist-provenance: >- Derived by the API Evangelist enrichment pipeline from the live WordPress REST route index at https://www.flaretx.com/wp-json/ (259 routes across 16 namespaces) and verified against live anonymous responses on 2026-08-12. Every parameter below appears verbatim in the route index `args` for that endpoint, and every collection count in a description was read from the `X-WP-Total` response header on that date. Flare Therapeutics publishes no OpenAPI, no developer documentation and no API reference for this surface; the humanURL in apis.yml points at the upstream WordPress REST handbook that defines the wp/v2 contract. The deployment is served by WP Engine (nginx, x-powered-by WP Engine) and API responses carry `x-robots-tag: noindex`. Nothing here was obtained with credentials. servers: - url: https://www.flaretx.com/wp-json description: Production content API tags: - name: posts description: >- News archive — press releases, news coverage and scientific presentations, 2021-05-13 (Series A launch) to 2026-06-30 (Series C and CEO appointment). 42 published at harvest time. - name: pages description: >- Corporate pages (14 published at harvest time) — home, about, science, pipeline, fx-909, fx-111, publications, news, press-releases, join-us, contact, privacy-policy, terms-of-use, flaretx. - name: media description: >- Media library (419 attachments at harvest time — 400 images, 19 application/* documents, 0 video). - name: taxonomy description: >- Categories and tags. Four categories are registered (News 36, Press Release 8, FlareTx 3, Uncategorized 3); the post_tag taxonomy is registered but empty. - name: comments description: Comment collection. Registered and reachable, but empty — no post on this deployment carries comments. - name: patterns description: >- Reusable block patterns and their categories. Registered and anonymously reachable, but both report zero published items. - name: search description: Cross-content search across published objects. - name: discovery description: Route, type, taxonomy and status discovery documents. - name: oembed description: oEmbed 1.0 provider endpoint for www.flaretx.com URLs. paths: /: get: tags: [discovery] operationId: getApiIndex summary: Get the REST API index description: >- The root discovery document. Returns the site name, description, URL, the registered namespaces, the full route table with per-endpoint `args`, and the `authentication` block. This is the only machine-readable contract Flare Therapeutics publishes. responses: '200': description: Route index. content: application/json: schema: type: object properties: name: { type: string } description: { type: string } url: { type: string, format: uri } home: { type: string, format: uri } gmt_offset: { type: number } timezone_string: { type: string } namespaces: type: array items: { type: string } authentication: { type: object } routes: { type: object } _links: { type: object } /wp/v2: get: tags: [discovery] operationId: getNamespaceIndex summary: Get the wp/v2 namespace index description: The route table scoped to the wp/v2 namespace (106 routes at harvest time). parameters: - $ref: '#/components/parameters/Context' responses: '200': description: Namespace index. content: application/json: schema: type: object properties: namespace: { type: string } routes: { type: object } _links: { type: object } /wp/v2/posts: get: tags: [posts] operationId: listPosts summary: List news posts description: >- The company news archive — press releases, news coverage and scientific presentations. 42 published items at harvest time (2026-08-12), spanning 2021-05-13 to 2026-06-30. parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Before' - $ref: '#/components/parameters/ModifiedAfter' - $ref: '#/components/parameters/ModifiedBefore' - $ref: '#/components/parameters/Exclude' - $ref: '#/components/parameters/Include' - $ref: '#/components/parameters/Offset' - $ref: '#/components/parameters/Order' - name: orderby in: query description: Sort collection by object attribute. schema: type: string default: date enum: [author, date, id, include, modified, parent, relevance, slug, include_slugs, title] - name: slug in: query description: Limit result set to posts with one or more specific slugs. schema: type: array items: { type: string } - name: status in: query description: >- Limit result set to posts assigned one or more statuses. Only `publish` is readable anonymously; any other value returns 400 rest_invalid_param. schema: type: array items: { type: string } default: [publish] - name: categories in: query description: Limit result set to items assigned to specific category term ids. schema: type: array items: { type: integer } - name: categories_exclude in: query description: Exclude items assigned to specific category term ids. schema: type: array items: { type: integer } - name: tags in: query description: Limit result set to items assigned to specific post_tag term ids. Always empty on this deployment. schema: type: array items: { type: integer } - name: sticky in: query description: Limit result set to items that are sticky. schema: { type: boolean } - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Embed' responses: '200': description: A page of posts. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } Link: { $ref: '#/components/headers/LinkPagination' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/Post' } '400': $ref: '#/components/responses/InvalidParam' /wp/v2/posts/{id}: get: tags: [posts] operationId: getPost summary: Get one news post parameters: - $ref: '#/components/parameters/PathId' - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Embed' responses: '200': description: The post. content: application/json: schema: { $ref: '#/components/schemas/Post' } '404': $ref: '#/components/responses/InvalidPostId' /wp/v2/pages: get: tags: [pages] operationId: listPages summary: List corporate pages description: 14 published pages at harvest time. parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Before' - $ref: '#/components/parameters/ModifiedAfter' - $ref: '#/components/parameters/ModifiedBefore' - $ref: '#/components/parameters/Exclude' - $ref: '#/components/parameters/Include' - $ref: '#/components/parameters/Offset' - $ref: '#/components/parameters/Order' - name: orderby in: query schema: type: string default: date enum: [author, date, id, include, modified, parent, relevance, slug, include_slugs, title, menu_order] - name: slug in: query schema: type: array items: { type: string } - name: parent in: query description: Limit result set to items with particular parent ids. The page tree is flat on this deployment. schema: type: array items: { type: integer } - name: menu_order in: query schema: { type: integer } - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Embed' responses: '200': description: A page of pages. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } Link: { $ref: '#/components/headers/LinkPagination' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/Page' } '400': $ref: '#/components/responses/InvalidParam' /wp/v2/pages/{id}: get: tags: [pages] operationId: getPage summary: Get one corporate page parameters: - $ref: '#/components/parameters/PathId' - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Embed' responses: '200': description: The page. content: application/json: schema: { $ref: '#/components/schemas/Page' } '404': $ref: '#/components/responses/InvalidPostId' /wp/v2/media: get: tags: [media] operationId: listMedia summary: List media library attachments description: >- 419 attachments at harvest time — 400 with media_type `image` and 19 with media_type `application` (documents such as posters and publications). No video. parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Before' - $ref: '#/components/parameters/ModifiedAfter' - $ref: '#/components/parameters/ModifiedBefore' - $ref: '#/components/parameters/Exclude' - $ref: '#/components/parameters/Include' - $ref: '#/components/parameters/Offset' - $ref: '#/components/parameters/Order' - name: orderby in: query schema: type: string default: date enum: [author, date, id, include, modified, parent, relevance, slug, include_slugs, title] - name: slug in: query schema: type: array items: { type: string } - name: parent in: query description: Limit result set to attachments uploaded to particular post ids. schema: type: array items: { type: integer } - name: media_type in: query description: Limit result set to attachments of a particular media type. schema: type: string enum: [image, video, text, application, audio] - name: mime_type in: query description: Limit result set to attachments of a particular MIME type. schema: { type: string } - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Embed' responses: '200': description: A page of media items. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } Link: { $ref: '#/components/headers/LinkPagination' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/MediaItem' } '400': $ref: '#/components/responses/InvalidParam' /wp/v2/media/{id}: get: tags: [media] operationId: getMediaItem summary: Get one media attachment parameters: - $ref: '#/components/parameters/PathId' - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Fields' responses: '200': description: The media item. content: application/json: schema: { $ref: '#/components/schemas/MediaItem' } '404': $ref: '#/components/responses/InvalidPostId' /wp/v2/categories: get: tags: [taxonomy] operationId: listCategories summary: List categories description: >- Four registered categories at harvest time — News (36 posts), Press Release (8), FlareTx (3), Uncategorized (3). parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - $ref: '#/components/parameters/Exclude' - $ref: '#/components/parameters/Include' - $ref: '#/components/parameters/Order' - name: orderby in: query schema: type: string default: name enum: [id, include, name, slug, include_slugs, term_group, description, count] - name: hide_empty in: query description: Whether to hide terms not assigned to any posts. schema: { type: boolean, default: false } - name: parent in: query schema: { type: integer } - name: post in: query description: Limit result set to terms assigned to a specific post. schema: { type: integer } - name: slug in: query schema: type: array items: { type: string } - $ref: '#/components/parameters/Fields' responses: '200': description: A page of category terms. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/Term' } '400': $ref: '#/components/responses/InvalidParam' /wp/v2/categories/{id}: get: tags: [taxonomy] operationId: getCategory summary: Get one category term parameters: - $ref: '#/components/parameters/PathId' - $ref: '#/components/parameters/Context' responses: '200': description: The category term. content: application/json: schema: { $ref: '#/components/schemas/Term' } '404': $ref: '#/components/responses/InvalidTerm' /wp/v2/tags: get: tags: [taxonomy] operationId: listTags summary: List post tags description: >- The post_tag taxonomy is registered and reachable but empty on this deployment (X-WP-Total 0 at harvest time). parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - $ref: '#/components/parameters/Order' - name: orderby in: query schema: type: string default: name enum: [id, include, name, slug, include_slugs, term_group, description, count] - name: hide_empty in: query schema: { type: boolean, default: false } - name: post in: query schema: { type: integer } - $ref: '#/components/parameters/Fields' responses: '200': description: A page of tag terms. Empty on this deployment. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/Term' } /wp/v2/tags/{id}: get: tags: [taxonomy] operationId: getTag summary: Get one tag term parameters: - $ref: '#/components/parameters/PathId' - $ref: '#/components/parameters/Context' responses: '200': description: The tag term. content: application/json: schema: { $ref: '#/components/schemas/Term' } '404': $ref: '#/components/responses/InvalidTerm' /wp/v2/comments: get: tags: [comments] operationId: listComments summary: List comments description: Registered and reachable but empty on this deployment (X-WP-Total 0 at harvest time). parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - $ref: '#/components/parameters/After' - $ref: '#/components/parameters/Before' - $ref: '#/components/parameters/Order' - name: orderby in: query schema: type: string default: date_gmt enum: [date, date_gmt, id, include, post, parent, type] - name: post in: query description: Limit result set to comments assigned to specific post ids. schema: type: array items: { type: integer } - $ref: '#/components/parameters/Fields' responses: '200': description: A page of comments. Empty on this deployment. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/Comment' } /wp/v2/comments/{id}: get: tags: [comments] operationId: getComment summary: Get one comment parameters: - $ref: '#/components/parameters/PathId' - $ref: '#/components/parameters/Context' responses: '200': description: The comment. content: application/json: schema: { $ref: '#/components/schemas/Comment' } '404': $ref: '#/components/responses/InvalidCommentId' /wp/v2/blocks: get: tags: [patterns] operationId: listReusableBlocks summary: List reusable block patterns description: >- The wp_block post type. Registered and anonymously reachable but empty on this deployment (X-WP-Total 0 at harvest time). parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - $ref: '#/components/parameters/Fields' responses: '200': description: A page of reusable blocks. Empty on this deployment. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } content: application/json: schema: type: array items: { type: object } /wp/v2/wp_pattern_category: get: tags: [patterns] operationId: listPatternCategories summary: List block-pattern categories description: Registered and anonymously reachable but empty on this deployment (X-WP-Total 0 at harvest time). parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' responses: '200': description: A page of pattern-category terms. Empty on this deployment. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/Term' } /wp/v2/search: get: tags: [search] operationId: searchContent summary: Search across all published content description: >- Cross-content search returning lightweight pointers (id, title, url, type, subtype) that must be resolved back to the full object. A search for "flare" returned 49 hits at harvest time. parameters: - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/Search' - name: type in: query description: Limit results to items of an object type. schema: { type: string, default: post, enum: [post, term, 'post-format'] } - name: subtype in: query description: Limit results to items of one or more object subtypes. schema: type: array items: { type: string } default: [any] - name: exclude in: query schema: type: array items: { type: integer } - name: include in: query schema: type: array items: { type: integer } - $ref: '#/components/parameters/Embed' responses: '200': description: A page of search results. headers: X-WP-Total: { $ref: '#/components/headers/XWPTotal' } X-WP-TotalPages: { $ref: '#/components/headers/XWPTotalPages' } content: application/json: schema: type: array items: { $ref: '#/components/schemas/SearchResult' } '400': $ref: '#/components/responses/InvalidParam' /wp/v2/types: get: tags: [discovery] operationId: listPostTypes summary: List registered post types description: >- Eleven post types are registered at harvest time — post, page, attachment, nav_menu_item, wp_block, wp_template, wp_template_part, wp_global_styles, wp_navigation, wp_font_family and wp_font_face. No company-specific custom post type is exposed over REST. parameters: - $ref: '#/components/parameters/Context' responses: '200': description: Map of post type slug to type object. content: application/json: schema: type: object additionalProperties: { $ref: '#/components/schemas/PostType' } /wp/v2/types/{type}: get: tags: [discovery] operationId: getPostType summary: Get one registered post type parameters: - name: type in: path required: true description: An alphanumeric identifier for the post type. schema: { type: string } - $ref: '#/components/parameters/Context' responses: '200': description: The post type. content: application/json: schema: { $ref: '#/components/schemas/PostType' } '404': $ref: '#/components/responses/NoRoute' /wp/v2/taxonomies: get: tags: [discovery] operationId: listTaxonomies summary: List registered taxonomies description: >- Four taxonomies registered at harvest time — category, post_tag (also attached to an unexposed `team_member` post type), nav_menu and wp_pattern_category. parameters: - $ref: '#/components/parameters/Context' - name: type in: query description: Limit results to taxonomies associated with a specific post type. schema: { type: string } responses: '200': description: Map of taxonomy slug to taxonomy object. content: application/json: schema: type: object additionalProperties: { $ref: '#/components/schemas/Taxonomy' } /wp/v2/taxonomies/{taxonomy}: get: tags: [discovery] operationId: getTaxonomy summary: Get one registered taxonomy parameters: - name: taxonomy in: path required: true schema: { type: string } - $ref: '#/components/parameters/Context' responses: '200': description: The taxonomy. content: application/json: schema: { $ref: '#/components/schemas/Taxonomy' } '404': $ref: '#/components/responses/NoRoute' /wp/v2/statuses: get: tags: [discovery] operationId: listStatuses summary: List registered post statuses description: Anonymously only the public `publish` status is returned. parameters: - $ref: '#/components/parameters/Context' responses: '200': description: Map of status slug to status object. content: application/json: schema: type: object additionalProperties: { $ref: '#/components/schemas/Status' } /wp/v2/statuses/{status}: get: tags: [discovery] operationId: getStatus summary: Get one registered post status parameters: - name: status in: path required: true schema: { type: string } - $ref: '#/components/parameters/Context' responses: '200': description: The status. content: application/json: schema: { $ref: '#/components/schemas/Status' } '404': $ref: '#/components/responses/NoRoute' /oembed/1.0/embed: get: tags: [oembed] operationId: getOembed summary: Get the oEmbed response for a www.flaretx.com URL description: >- oEmbed 1.0 provider endpoint. Returns provider_name "Flare Therapeutics", the resolved title, author, thumbnail and an iframe embed for any URL on this site. parameters: - name: url in: query required: true description: The URL of the resource for which to fetch oEmbed data. schema: { type: string, format: uri } - name: format in: query schema: { type: string, default: json, enum: [json, xml] } - name: maxwidth in: query schema: { type: integer, default: 600 } responses: '200': description: The oEmbed rich response. content: application/json: schema: { $ref: '#/components/schemas/Oembed' } '404': description: The requested URL is not a resource on this site. content: application/json: schema: { $ref: '#/components/schemas/Error' } components: parameters: Context: name: context in: query description: >- Scope under which the request is made; determines fields present in the response. Only `view` and `embed` are available anonymously — `edit` returns 401. schema: { type: string, default: view, enum: [view, embed, edit] } Page: name: page in: query description: Current page of the collection (1-based). schema: { type: integer, default: 1, minimum: 1 } PerPage: name: per_page in: query description: Maximum number of items to be returned in the result set. schema: { type: integer, default: 10, minimum: 1, maximum: 100 } Offset: name: offset in: query description: Offset the result set by a specific number of items. schema: { type: integer } Search: name: search in: query description: Limit results to those matching a string. schema: { type: string } After: name: after in: query description: Limit response to posts published after a given ISO 8601 compliant date. schema: { type: string, format: date-time } Before: name: before in: query description: Limit response to posts published before a given ISO 8601 compliant date. schema: { type: string, format: date-time } ModifiedAfter: name: modified_after in: query description: Limit response to posts modified after a given ISO 8601 compliant date. The incremental-sync key. schema: { type: string, format: date-time } ModifiedBefore: name: modified_before in: query description: Limit response to posts modified before a given ISO 8601 compliant date. schema: { type: string, format: date-time } Exclude: name: exclude in: query description: Ensure result set excludes specific ids. schema: type: array items: { type: integer } Include: name: include in: query description: Limit result set to specific ids. schema: type: array items: { type: integer } Order: name: order in: query description: Order sort attribute ascending or descending. schema: { type: string, default: desc, enum: [asc, desc] } Fields: name: _fields in: query description: Comma-separated allow-list of top-level response fields to return. schema: { type: string } Embed: name: _embed in: query description: Inline embeddable resources (author, featured media, terms) under `_embedded`. schema: { type: string } PathId: name: id in: path required: true description: Unique numeric identifier for the object. schema: { type: integer } headers: XWPTotal: description: Total number of matching items across all pages. schema: { type: integer } XWPTotalPages: description: Total number of pages available. schema: { type: integer } LinkPagination: description: RFC 8288 Link header carrying rel="next" and rel="prev". schema: { type: string } responses: InvalidParam: description: One or more query parameters failed validation. content: application/json: schema: { $ref: '#/components/schemas/Error' } examples: perPageOutOfBounds: summary: per_page above the maximum of 100 value: code: rest_invalid_param message: 'Invalid parameter(s): per_page' data: status: 400 params: per_page: per_page must be between 1 (inclusive) and 100 (inclusive) InvalidPostId: description: No published object exists with the requested numeric identifier. content: application/json: schema: { $ref: '#/components/schemas/Error' } examples: invalidPostId: value: code: rest_post_invalid_id message: Invalid post ID. data: { status: 404 } InvalidCommentId: description: No comment exists with the requested numeric identifier. content: application/json: schema: { $ref: '#/components/schemas/Error' } examples: invalidCommentId: value: code: rest_comment_invalid_id message: Invalid comment ID. data: { status: 404 } InvalidTerm: description: No taxonomy term exists with the requested numeric identifier. content: application/json: schema: { $ref: '#/components/schemas/Error' } examples: invalidTerm: value: code: rest_term_invalid message: Term does not exist. data: { status: 404 } NoRoute: description: No route was found matching the URL and request method. content: application/json: schema: { $ref: '#/components/schemas/Error' } examples: noRoute: value: code: rest_no_route message: No route was found matching the URL and request method. data: { status: 404 } schemas: RenderedText: type: object description: A WordPress rendered-text container. properties: rendered: { type: string } Post: type: object description: A news item from the Flare Therapeutics press archive. properties: id: { type: integer } date: { type: string, format: date-time } date_gmt: { type: string, format: date-time } guid: { $ref: '#/components/schemas/RenderedText' } modified: { type: string, format: date-time } modified_gmt: { type: string, format: date-time } slug: { type: string } status: { type: string } type: { type: string, const: post } link: { type: string, format: uri } title: { $ref: '#/components/schemas/RenderedText' } content: { $ref: '#/components/schemas/RenderedText' } excerpt: { $ref: '#/components/schemas/RenderedText' } author: type: integer description: >- User id. NOT resolvable anonymously — /wp/v2/users returns 401 on this deployment. featured_media: type: integer description: Attachment id, 0 when unset. 0 on every post observed at harvest time. comment_status: { type: string } ping_status: { type: string } sticky: { type: boolean } template: { type: string } format: { type: string } meta: type: object description: >- Registered meta only. Observed keys on this deployment — _acf_changed, pagelayer_contact_templates, _pagelayer_content, footnotes. categories: type: array items: { type: integer } tags: type: array items: { type: integer } description: Always empty on this deployment. acf: type: array description: >- Advanced Custom Fields payload. Present on every object but empty on this deployment. class_list: type: array items: { type: string } description: The CSS class list WordPress would render for the object. yoast_head: type: string description: Yoast SEO rendered markup. Plugin extension, not part of the upstream wp/v2 contract. yoast_head_json: type: object description: Yoast SEO structured metadata, including a schema.org graph. _links: { type: object } Page: type: object description: A corporate page. properties: id: { type: integer } date: { type: string, format: date-time } date_gmt: { type: string, format: date-time } guid: { $ref: '#/components/schemas/RenderedText' } modified: { type: string, format: date-time } modified_gmt: { type: string, format: date-time } slug: { type: string } status: { type: string } type: { type: string, const: page } link: { type: string, format: uri } title: { $ref: '#/components/schemas/RenderedText' } content: { $ref: '#/components/schemas/RenderedText' } excerpt: { $ref: '#/components/schemas/RenderedText' } author: { type: integer } featured_media: { type: integer } parent: type: integer description: Parent page id. 0 for every page on this deployment — the page tree is flat. menu_order: { type: integer } comment_status: { type: string } ping_status: { type: string } template: { type: string } meta: { type: object } acf: { type: array } class_list: type: array items: { type: string } yoast_head: { type: string } yoast_head_json: { type: object } _links: { type: object } MediaItem: type: object description: A media library attachment. properties: id: { type: integer } date: { type: string, format: date-time } date_gmt: { type: string, format: date-time } guid: { $ref: '#/components/schemas/RenderedText' } modified: { type: string, format: date-time } modified_gmt: { type: string, format: date-time } slug: { type: string } status: { type: string } type: { type: string, const: attachment } link: { type: string, format: uri } title: { $ref: '#/components/schemas/RenderedText' } author: { type: integer } caption: { $ref: '#/components/schemas/RenderedText' } alt_text: { type: string } description: { $ref: '#/components/schemas/RenderedText' } media_type: type: string enum: [image, video, text, application, audio] mime_type: { type: string } media_details: type: object description: >- Width, height, filesize and the generated `sizes` map. Prefer a named size over source_url when bandwidth matters. post: type: integer nullable: true description: The post or page the attachment was uploaded to; null for library-only uploads. source_url: { type: string, format: uri } filename: { type: string } filesize: { type: integer } featured_media: { type: integer } comment_status: { type: string } ping_status: { type: string } template: { type: string } meta: { type: object } acf: { type: array } class_list: type: array items: { type: string } _links: { type: object } Term: type: object description: A taxonomy term (category, tag or pattern category). properties: id: { type: integer } count: { type: integer } description: { type: string } link: { type: string, format: uri } name: { type: string } slug: { type: string } taxonomy: { type: string } parent: { type: integer } meta: { type: object } acf: { type: array } yoast_head: { type: string } yoast_head_json: { type: object } _links: { type: object } Comment: type: object description: A comment. The collection is empty on this deployment. properties: id: { type: integer } post: { type: integer } parent: { type: integer } author: { type: integer } author_name: { type: string } author_url: { type: string } date: { type: string, format: date-time } date_gmt: { type: string, format: date-time } content: { $ref: '#/components/schemas/RenderedText' } link: { type: string, format: uri } status: { type: string } type: { type: string } _links: { type: object } SearchResult: type: object description: >- A lightweight pointer returned by cross-content search. Not a stored entity — resolve it back to a Post, Page or MediaItem using id + subtype. properties: id: { type: integer } title: { type: string } url: { type: string, format: uri } type: { type: string } subtype: { type: string } _links: { type: object } PostType: type: object properties: slug: { type: string } name: { type: string } description: { type: string } hierarchical: { type: boolean } has_archive: { type: boolean } rest_base: { type: string } rest_namespace: { type: string } icon: { type: string } taxonomies: type: array items: { type: string } _links: { type: object } Taxonomy: type: object properties: slug: { type: string } name: { type: string } description: { type: string } hierarchical: { type: boolean } rest_base: { type: string } rest_namespace: { type: string } types: type: array items: { type: string } _links: { type: object } Status: type: object properties: slug: { type: string } name: { type: string } public: { type: boolean } queryable: { type: boolean } date_floating: { type: boolean } _links: { type: object } Oembed: type: object properties: version: { type: string, const: '1.0' } provider_name: { type: string } provider_url: { type: string, format: uri } author_name: { type: string } author_url: { type: string, format: uri } title: { type: string } type: { type: string } width: { type: integer } height: { type: integer, nullable: true } html: { type: string } thumbnail_url: { type: string, format: uri } thumbnail_width: { type: integer } thumbnail_height: { type: integer } Error: type: object description: >- The WordPress REST error envelope. NOT RFC 9457 problem details — no `type` URI and no application/problem+json media type. See errors/flare-therapeutics-problem-types.yml. properties: code: type: string description: Machine-readable error code — the stable discriminator. message: type: string description: Human-readable message, localized to the site language. data: type: object properties: status: { type: integer } params: { type: object } details: { type: object } required: [code, message, data]