openapi: 3.2.0 info: title: Matchpoint Therapeutics Content Media API version: wp/v2 summary: Anonymously readable WordPress REST content API behind matchpointtx.com. description: The read-only content surface Matchpoint Therapeutics exposes at https://matchpointtx.com/wp-json. Matchpoint Therapeutics is a Cambridge, Massachusetts biotechnology company founded in 2021 and launched publicly in October 2022 with $100 million in financing, discovering precision small-molecule covalent medicines for immune diseases and cancer on its Advanced Covalent Exploration (ACE) platform. It runs 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 that were verified to return data anonymously on 2026-08-25. contact: name: Matchpoint Therapeutics url: https://matchpointtx.com/ x-api-evangelist-provenance: 'Derived by the API Evangelist enrichment pipeline from the live WordPress REST route index at https://matchpointtx.com/wp-json/ (222 routes across 13 namespaces) and verified against live anonymous responses on 2026-08-25. 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. Matchpoint 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 behind Cloudflare (x-powered-by: WP Engine, cf-ray on every response) and API responses carry `x-robots-tag: noindex`. Write operations and the credentialed surface — POST/PUT/PATCH/DELETE everywhere, /wp/v2/users, /wp/v2/settings, /wp/v2/menus, /wp/v2/menu-items, /wp/v2/templates, /wp/v2/template-parts, the yoast/v1, struck/v1, wordfence/v1, wpe/cache-plugin/v1, wpe_sign_on_plugin/v1, wp-site-health/v1, wp-block-editor/v1 and wp-abilities/v1 namespaces, and /oembed/1.0/proxy (observed 401) — are deliberately excluded. Nothing here was obtained with credentials.' servers: - url: https://matchpointtx.com/wp-json description: Production content API tags: - name: media description: Media library — 43 image attachments at harvest time. paths: /wp/v2/media: get: tags: - media operationId: listMedia summary: List media attachments description: 'Lists the media library — 43 attachments at harvest time, entirely images (22 PNG, 21 JPEG): the logo, team headshots, investor marks and section artwork. source_url on each item resolves to the original file under /wp-content/uploads/.' 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' - $ref: '#/components/parameters/Slug' - $ref: '#/components/parameters/Status' - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Embed' - name: orderby in: query description: Sort collection by object attribute. schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title default: date - name: author in: query description: Limit result set to posts assigned to specific authors. schema: type: array items: type: integer - name: author_exclude in: query description: Ensure result set excludes posts assigned to specific authors. schema: type: array items: type: integer - name: parent in: query description: Limit result set to items with particular parent IDs. schema: type: array items: type: integer - name: parent_exclude in: query description: Limit result set to all items except those of a particular parent ID. 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 examples: - image/png - name: search_columns in: query description: Array of column names to be searched. schema: type: array items: type: string enum: - post_title - post_content - post_excerpt responses: '200': description: A page of results headers: X-WP-Total: schema: type: integer examples: - 43 description: Total number of matching items. X-WP-TotalPages: schema: type: integer description: Total number of pages available. Link: schema: type: string description: RFC 8288 pagination links (rel="next" / rel="prev"). content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaItem' '400': $ref: '#/components/responses/BadRequest' /wp/v2/media/{id}: get: tags: - media operationId: getMediaItem summary: Retrieve a media attachment description: Retrieves a single attachment by numeric ID. IDs are sparse — attachment 1 does not exist on this deployment and returns rest_post_invalid_id — so enumerate through the collection rather than by counting. parameters: - $ref: '#/components/parameters/Id' - $ref: '#/components/parameters/Context' - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Embed' responses: '200': description: The attachment content: application/json: schema: $ref: '#/components/schemas/MediaItem' '404': $ref: '#/components/responses/NotFound' components: schemas: Error: type: object description: The WordPress REST error envelope. Not RFC 9457 problem+json. required: - code - message - data properties: code: type: string description: Machine-readable error code. examples: - rest_post_invalid_id message: type: string description: Human-readable error message. examples: - Invalid post ID. data: type: object properties: status: type: integer description: The HTTP status code. examples: - 404 params: type: object description: Per-parameter messages, present on rest_invalid_param. additionalProperties: type: string details: type: object description: Per-parameter structured detail, present on rest_invalid_param. additionalProperties: type: object MediaItem: type: object description: A media-library attachment. 43 at harvest time — 22 image/png and 21 image/jpeg; no documents or video are attached. properties: id: type: integer description: Unique identifier for the object. date: type: string format: date-time description: The date the object was published, in the site timezone. date_gmt: type: string format: date-time description: The date the object was published, as GMT. guid: type: object properties: rendered: type: string modified: type: string format: date-time modified_gmt: type: string format: date-time slug: type: string status: type: string examples: - publish type: type: string link: type: string format: uri title: type: object properties: rendered: type: string content: type: object properties: rendered: type: string protected: type: boolean excerpt: type: object properties: rendered: type: string protected: type: boolean author: type: integer featured_media: type: integer description: The ID of the featured media for the object; resolve against /wp/v2/media/{id}. template: type: string meta: type: object description: Registered meta fields. No custom keys are surfaced anonymously on this deployment. class_list: type: array items: type: string yoast_head: type: string description: Yoast SEO rendered markup, inlined on every object. yoast_head_json: type: object description: Yoast SEO metadata as a structured object, including a schema.org graph. _links: type: object description: HAL-style link relations (self, collection, about, author, replies, wp:attachment, wp:term, curies). alt_text: type: string caption: type: object properties: rendered: type: string description: type: object properties: rendered: type: string media_type: type: string examples: - image mime_type: type: string examples: - image/png media_details: type: object description: Width, height, file name, and the generated size variants. source_url: type: string format: uri description: Direct URL to the original file under /wp-content/uploads/. post: type: integer description: The ID for the associated post of the attachment. parameters: Before: name: before in: query description: Limit response to posts published before a given ISO8601 compliant date. schema: type: string format: date-time Fields: name: _fields in: query description: Comma-separated allow-list of top-level response fields (WordPress REST global parameter). schema: type: string PerPage: name: per_page in: query description: Maximum number of items to be returned in the result set. schema: type: integer minimum: 1 maximum: 100 default: 10 Embed: name: _embed in: query description: Inline embeddable resources under `_embedded` (WordPress REST global parameter). schema: type: string Slug: name: slug in: query description: Limit result set to posts with one or more specific slugs. schema: type: array items: type: string Search: name: search in: query description: Limit results to those matching a string. schema: type: string Exclude: name: exclude in: query description: Ensure result set excludes specific IDs. schema: type: array items: type: integer Id: name: id in: path required: true description: Unique identifier for the object. schema: type: integer ModifiedBefore: name: modified_before in: query description: Limit response to posts modified before a given ISO8601 compliant date. schema: type: string format: date-time Status: name: status in: query description: Limit result set to posts assigned one or more statuses. Only `publish` is readable anonymously. schema: type: array items: type: string default: publish Order: name: order in: query description: Order sort attribute ascending or descending. schema: type: string enum: - asc - desc default: desc ModifiedAfter: name: modified_after in: query description: Limit response to posts modified after a given ISO8601 compliant date. schema: type: string format: date-time Context: name: context in: query description: Scope under which the request is made; determines fields present in the response. Anonymously only `view` and `embed` return data; `edit` returns 401. schema: type: string enum: - view - embed - edit default: view After: name: after in: query description: Limit response to posts published after a given ISO8601 compliant date. schema: type: string format: date-time Offset: name: offset in: query description: Offset the result set by a specific number of items. schema: type: integer Page: name: page in: query description: Current page of the collection. schema: type: integer minimum: 1 default: 1 Include: name: include in: query description: Limit result set to specific IDs. schema: type: array items: type: integer responses: NotFound: description: No object matches the requested identifier (rest_post_invalid_id / rest_term_invalid) content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid parameter (rest_invalid_param / rest_missing_callback_param) content: application/json: schema: $ref: '#/components/schemas/Error'