openapi: 3.2.0
info:
title: ReCode Therapeutics Content Taxonomy API
version: 1.0.0
summary: The anonymously readable WordPress REST content API behind recodetx.com.
description: 'ReCode Therapeutics runs no developer program and markets no product API. The only machine-readable contract reachable from the public internet without credentials is the WordPress REST API registered at https://recodetx.com/wp-json/, which the site publishes as a consequence of running WordPress on WP Engine behind Cloudflare.
This document is DERIVED by the API Evangelist enrichment pipeline from the route index the site itself publishes at https://recodetx.com/wp-json/ (376 routes across 16 namespaces) and was verified against live anonymous responses on 2026-08-05. **Only operations that actually returned data without credentials are modelled here.** Everything write-side (POST/PUT/PATCH/ DELETE on every collection), and the administrative namespaces the site also registers (`aioseo/v1`, `elementor/v1`, `elementor-pro/v1`, `elementor-ai/v1`, `redirection/v1`, `wpe_sign_on_plugin/v1`, `wp-site-health/v1`, `wp-block-editor/v1`, `wp-abilities/v1`), return 401 `rest_forbidden` anonymously and are deliberately omitted rather than documented as capabilities.
What the surface actually yields: 82 press releases and publications, 18 corporate pages, a 305-item media library, two site-specific custom post types registered into `wp/v2` (`events`, 50 items — conference and investor appearances; and `values`, 6 items — the company''s stated values), the category and tag taxonomies, the registered type/status/taxonomy metadata, cross-content search, and the oEmbed 1.0 provider endpoint. Unlike many corporate WordPress installs, `content.rendered` IS populated on posts and pages here (5.7 KB on the most recent press release, 53 KB on the home page), so the API returns real prose and not just identity metadata.
Note on `/wp/v2/users`: the site leaves author enumeration open, and the collection returns 200 with 5 author records anonymously. The operation is documented here because it is genuinely part of the observed surface, but API Evangelist deliberately packages no agent skill and no MCP tool against it, and records no individual from it. See `x-personal-data` on that operation.'
contact:
name: ReCode Therapeutics
url: https://recodetx.com/
license:
name: Not stated
url: https://recodetx.com/terms-conditions/
x-derived-from: https://recodetx.com/wp-json/
x-verified: '2026-08-05'
x-upstream-contract: https://developer.wordpress.org/rest-api/
servers:
- url: https://recodetx.com/wp-json
description: Production WordPress REST API for recodetx.com (WP Engine, fronted by Cloudflare).
tags:
- name: taxonomy
description: Categories, tags, and the registered type/status/taxonomy descriptors.
paths:
/wp/v2/categories:
get:
operationId: listCategories
tags:
- taxonomy
summary: List post categories
description: 7 terms at verification — press-releases (47), featured (14), presentations (9), publications (9), careers (3), team (0), uncategorized (0).
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- $ref: '#/components/parameters/slug'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: Category terms.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Term'
/wp/v2/categories/{id}:
get:
operationId: getCategory
tags:
- taxonomy
summary: Get a single category term
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: The category term.
content:
application/json:
schema:
$ref: '#/components/schemas/Term'
'404':
$ref: '#/components/responses/InvalidTermId'
/wp/v2/tags:
get:
operationId: listTags
tags:
- taxonomy
summary: List post tags
description: 11 terms at verification, mostly scientific-conference labels — american-thoracic-society-ats, nacfc, north-american-cystic-fibrosis-conference, gordon-research-conferences, pnas, journal-of-cystic-fibrosis, j-p-morgan, cilia2022, featured.
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- $ref: '#/components/parameters/slug'
- $ref: '#/components/parameters/fields'
responses:
'200':
description: Tag terms.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Term'
/wp/v2/tags/{id}:
get:
operationId: getTag
tags:
- taxonomy
summary: Get a single tag term
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: The tag term.
content:
application/json:
schema:
$ref: '#/components/schemas/Term'
'404':
$ref: '#/components/responses/InvalidTermId'
/wp/v2/types:
get:
operationId: listTypes
tags:
- taxonomy
summary: List registered post types
description: 21 registered types. Beyond WordPress core, the install registers `events`, `values` and `portfolio` (site content) plus Elementor and Jupiter X builder types whose collections are either empty or 401 anonymously.
responses:
'200':
description: A map of type slug to type descriptor.
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/TypeDescriptor'
/wp/v2/types/{type}:
get:
operationId: getType
tags:
- taxonomy
summary: Get a single post-type descriptor
parameters:
- name: type
in: path
required: true
description: The post-type slug, e.g. `post`, `page`, `events`, `values`.
schema:
type: string
responses:
'200':
description: The type descriptor.
content:
application/json:
schema:
$ref: '#/components/schemas/TypeDescriptor'
/wp/v2/taxonomies:
get:
operationId: listTaxonomies
tags:
- taxonomy
summary: List registered taxonomies
description: 6 taxonomies — category, post_tag, nav_menu, wp_pattern_category, portfolio_category, portfolio_tag.
responses:
'200':
description: A map of taxonomy slug to taxonomy descriptor.
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/TaxonomyDescriptor'
/wp/v2/taxonomies/{taxonomy}:
get:
operationId: getTaxonomy
tags:
- taxonomy
summary: Get a single taxonomy descriptor
parameters:
- name: taxonomy
in: path
required: true
schema:
type: string
responses:
'200':
description: The taxonomy descriptor.
content:
application/json:
schema:
$ref: '#/components/schemas/TaxonomyDescriptor'
/wp/v2/statuses:
get:
operationId: listStatuses
tags:
- taxonomy
summary: List publicly visible post statuses
description: Two statuses are exposed anonymously — `publish` and `acf-disabled`. Draft, pending, private, future and trash are not returned to an unauthenticated caller.
responses:
'200':
description: A map of status slug to status descriptor.
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/StatusDescriptor'
/wp/v2/statuses/{status}:
get:
operationId: getStatus
tags:
- taxonomy
summary: Get a single status descriptor
parameters:
- name: status
in: path
required: true
schema:
type: string
responses:
'200':
description: The status descriptor.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusDescriptor'
components:
parameters:
slug:
name: slug
in: query
description: Limit results to one or more slugs.
schema:
type: array
items:
type: string
page:
name: page
in: query
description: 1-based page of the collection to return.
schema:
type: integer
minimum: 1
default: 1
id:
name: id
in: path
required: true
description: The object's unique numeric identifier.
schema:
type: integer
perPage:
name: per_page
in: query
description: Items per page. Maximum 100 — a request for 101 is rejected with 400 `rest_invalid_param` (verified 2026-08-05).
schema:
type: integer
minimum: 1
maximum: 100
default: 10
fields:
name: _fields
in: query
description: Comma-separated sparse-fieldset projection, e.g. `_fields=id,slug,title`. Applies to every collection and item operation.
schema:
type: string
schemas:
Term:
type: object
description: A category or tag term.
properties:
id:
type: integer
count:
type: integer
description:
type: string
link:
type: string
format: uri
name:
type: string
slug:
type: string
taxonomy:
type: string
enum:
- category
- post_tag
parent:
type: integer
description: Present on hierarchical taxonomies (category) only.
meta:
type: object
_links:
$ref: '#/components/schemas/Links'
required:
- id
- name
- slug
- taxonomy
Links:
type: object
description: HAL-style link relations. `self`, `collection`, `about`, `author`, `replies`, `wp:featuredmedia`, `wp:attachment`, `wp:term`, and `curies` mapping the `wp:` prefix.
additionalProperties: true
Error:
type: object
description: The WordPress REST error envelope. NOT RFC 9457 — the media type is `application/json`, not `application/problem+json`, and the field names are WordPress-specific.
properties:
code:
type: string
description: A machine-readable WordPress error slug, e.g. `rest_forbidden`.
message:
type: string
data:
type: object
properties:
status:
type: integer
params:
type: object
details:
type: object
required:
- code
- message
TypeDescriptor:
type: object
properties:
name:
type: string
slug:
type: string
description:
type: string
hierarchical:
type: boolean
has_archive:
oneOf:
- type: boolean
- type: string
rest_base:
type: string
rest_namespace:
type: string
taxonomies:
type: array
items:
type: string
icon:
type: string
nullable: true
_links:
$ref: '#/components/schemas/Links'
TaxonomyDescriptor:
type: object
properties:
name:
type: string
slug:
type: string
description:
type: string
types:
type: array
items:
type: string
hierarchical:
type: boolean
rest_base:
type: string
rest_namespace:
type: string
_links:
$ref: '#/components/schemas/Links'
StatusDescriptor:
type: object
properties:
name:
type: string
slug:
type: string
public:
type: boolean
queryable:
type: boolean
date_floating:
type: boolean
_links:
$ref: '#/components/schemas/Links'
headers:
XWPTotal:
description: Total number of items in the unpaged collection.
schema:
type: integer
responses:
InvalidTermId:
description: No term exists with that ID in this taxonomy.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: rest_term_invalid
message: Term does not exist.
data:
status: 404