ReCode Therapeutics Taxonomy API

Categories, tags, and the registered type/status/taxonomy descriptors.

OpenAPI Specification

recode-therapeutics-taxonomy-api-openapi.yml Raw ↑
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