Atsena Therapeutics Content API

The anonymously readable WordPress REST API behind atsenatx.com. It exposes Atsena Therapeutics press releases and company news (posts), the program pages for ATSN-201/XLRS, ATSN-101/LCA1, ATSN-301/USH1B and ATSN-401/Stargardt plus the pipeline and the two AAV platform-technology pages (pages), the media library, post categories and tags, cross-content search, and the type/taxonomy/status discovery endpoints. This is not a developer product Atsena markets; it is the site's own content surface, published at /wp-json/ and verified on 2026-08-02 to return data without credentials across all 20 modelled operations. The OpenAPI in this repo is derived from that published route index. Writes and the privileged reads (users, settings, plugins, templates, menus, the wp-abilities registry) are gated behind WordPress application passwords, which no third party can obtain, and are deliberately not modelled.

OpenAPI Specification

atsena-therapeutics-wp-rest-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Atsena Therapeutics Content API (WordPress REST API)
  version: wp/v2
  description: 'The anonymously readable content API behind atsenatx.com, derived from the WordPress REST route
    index Atsena Therapeutics publishes at https://atsenatx.com/wp-json/. It exposes Atsena press releases and
    company news (posts), the program, technology, clinical-trial, patient and about pages (pages), the media
    library, post categories and tags, cross-content search, and the type/taxonomy/status discovery endpoints.


    Atsena Therapeutics is a clinical-stage gene therapy company and runs no developer program: it publishes no
    developer documentation, no API reference, no support channel for this surface and no specification of its
    own. This document is a faithful derivation of the routes, parameters, defaults and enums the site itself
    advertises, restricted to the read operations verified to return HTTP 200 without credentials on 2026-08-02.


    Deliberately not modelled: write operations (registered on the same routes but gated behind WordPress application
    passwords and administrative, not a public API offering); endpoints that reject anonymous callers (users,
    settings, plugins, templates, menus, and the wp-abilities/v1 registry, all HTTP 401); comments (disabled site-wide,
    HTTP 403); and the plugin namespaces (yoast/v1, redirection/v1, cookieyes/v1, wpe/*, wp-site-health/v1, wp-block-editor/v1),
    which are site-administration surfaces rather than content.'
  contact:
    name: Atsena Therapeutics
    url: https://atsenatx.com/contact/
  x-derived-from: https://atsenatx.com/wp-json/
  x-derived-on: '2026-08-02'
  x-api-evangelist-note: Derived by the API Evangelist enrichment pipeline from the provider-published WordPress
    REST route index; not authored or endorsed by Atsena Therapeutics.
servers:
- url: https://atsenatx.com/wp-json
  description: Production
tags:
- name: Posts
  description: Press releases and company news
- name: Pages
  description: 'Static site pages: programs, technology, clinical trials, patients, about'
- name: Media
  description: Media library items
- name: Categories
  description: Post categories
- name: Tags
  description: Post tags
- name: Search
  description: Cross-content search over posts and pages
- name: Discovery
  description: Route index, content types, taxonomies and post statuses
- name: oEmbed
  description: oEmbed representation of site URLs
paths:
  /:
    get:
      operationId: getRouteIndex
      tags:
      - Discovery
      summary: Get the REST API route index
      description: Returns the site name, URL, registered namespaces, the supported authentication schemes and
        every registered route with its methods and arguments. This is the document this OpenAPI was derived from.
      security:
      - {}
      responses:
        '200':
          description: Route index
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouteIndex'
  /wp/v2:
    get:
      operationId: getCoreNamespaceIndex
      tags:
      - Discovery
      summary: Get the wp/v2 namespace index
      description: Returns the namespace descriptor and every route registered under wp/v2.
      security:
      - {}
      responses:
        '200':
          description: Namespace index
          content:
            application/json:
              schema:
                type: object
  /wp/v2/posts:
    get:
      operationId: listPosts
      tags:
      - Posts
      summary: List post records
      description: Press releases and company news items. 55 records were published at derivation time. Paginated
        with `page` and `per_page`; responses carry `X-WP-Total`, `X-WP-TotalPages` and RFC 8288 `Link` headers.
      security:
      - {}
      parameters:
      - 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: author
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to posts assigned to specific authors.
      - name: author_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        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: categories
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the categories taxonomy.
      - name: categories_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the categories taxonomy.
      - 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: exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - 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.
      - name: ignore_sticky
        in: query
        required: false
        schema:
          type: boolean
          default: true
        description: Whether to ignore sticky posts or not.
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - 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: 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: 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: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
        description: Current page of the collection.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        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: search_columns
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
        description: Array of column names to be searched.
      - name: search_semantics
        in: query
        required: false
        schema:
          type: string
          enum:
          - exact
        description: How to interpret the search input.
      - 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
          items:
            type: string
            enum:
            - publish
            - future
            - draft
            - pending
            - private
            - trash
            - auto-draft
            - inherit
            - request-pending
            - request-confirmed
            - request-failed
            - request-completed
            - acf-disabled
            - dp-rewrite-republish
            - any
          default: publish
        description: Limit result set to posts assigned one or more statuses.
      - name: sticky
        in: query
        required: false
        schema:
          type: boolean
        description: Limit result set to items that are sticky.
      - name: tags
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the tags taxonomy.
      - name: tags_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the tags taxonomy.
      - name: tax_relation
        in: query
        required: false
        schema:
          type: string
          enum:
          - AND
          - OR
        description: Limit result set based on relationship between multiple taxonomies.
      responses:
        '200':
          description: A page of post records
          headers:
            X-WP-Total:
              description: Total number of records in the collection.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available.
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel="next" / rel="prev").
              schema:
                type: string
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Post'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/posts/{id}:
    get:
      operationId: getPost
      tags:
      - Posts
      summary: Get a single post record
      security:
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the post.
      - 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: id
        in: query
        required: false
        schema:
          type: integer
        description: Unique identifier for the post.
      - name: password
        in: query
        required: false
        schema:
          type: string
        description: The password for the post if it is password protected.
      responses:
        '200':
          description: The post record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/pages:
    get:
      operationId: listPages
      tags:
      - Pages
      summary: List page records
      description: 'Static site pages: programs (XLRS, LCA1, USH1B, STGD), technology, clinical trials, patients,
        about and careers. 29 records at derivation time. Paginated with `page` and `per_page`; responses carry
        `X-WP-Total`, `X-WP-TotalPages` and RFC 8288 `Link` headers.'
      security:
      - {}
      parameters:
      - 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: author
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to posts assigned to specific authors.
      - name: author_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        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: 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: exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: menu_order
        in: query
        required: false
        schema:
          type: integer
        description: Limit result set to posts with a specific menu_order value.
      - 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: 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: 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
          - menu_order
          default: date
        description: Sort collection by post attribute.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
        description: Current page of the collection.
      - name: parent
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to items with particular parent IDs.
      - name: parent_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to all items except those of a particular parent ID.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        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: search_columns
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
        description: Array of column names to be searched.
      - name: search_semantics
        in: query
        required: false
        schema:
          type: string
          enum:
          - exact
        description: How to interpret the search input.
      - 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
          items:
            type: string
            enum:
            - publish
            - future
            - draft
            - pending
            - private
            - trash
            - auto-draft
            - inherit
            - request-pending
            - request-confirmed
            - request-failed
            - request-completed
            - acf-disabled
            - dp-rewrite-republish
            - any
          default: publish
        description: Limit result set to posts assigned one or more statuses.
      responses:
        '200':
          description: A page of page records
          headers:
            X-WP-Total:
              description: Total number of records in the collection.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available.
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel="next" / rel="prev").
              schema:
                type: string
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Page'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/pages/{id}:
    get:
      operationId: getPage
      tags:
      - Pages
      summary: Get a single page record
      security:
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the page.
      - 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: id
        in: query
        required: false
        schema:
          type: integer
        description: Unique identifier for the post.
      - name: password
        in: query
        required: false
        schema:
          type: string
        description: The password for the post if it is password protected.
      responses:
        '200':
          description: The page record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/media:
    get:
      operationId: listMedia
      tags:
      - Media
      summary: List media item records
      description: Media library items. 176 records at derivation time. Paginated with `page` and `per_page`;
        responses carry `X-WP-Total`, `X-WP-TotalPages` and RFC 8288 `Link` headers.
      security:
      - {}
      parameters:
      - 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: author
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to posts assigned to specific authors.
      - name: author_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        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: 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: exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: media_type
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - image
            - video
            - text
            - application
            - audio
        description: Limit result set to attachments of a particular media type or media types.
      - name: mime_type
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to attachments of a particular MIME type or MIME types.
      - 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: 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: 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: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
        description: Current page of the collection.
      - name: parent
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to items with particular parent IDs.
      - name: parent_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to all items except those of a particular parent ID.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        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: search_columns
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
        description: Array of column names to be searched.
      - name: search_semantics
        in: query
        required: false
        schema:
          type: string
          enum:
          - exact
        description: How to interpret the search input.
      - 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
          items:
            type: string
            enum:
            - inherit
            - private
            - trash
          default: inherit
        description: Limit result set to posts assigned one or more statuses.
      responses:
        '200':
          description: A page of media item records
          headers:
            X-WP-Total:
              description: Total number of records in the collection.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available.
              schema:
                type: integer
            Link:
              description: RFC 8288 pagination links (rel="next" / rel="prev").
              schema:
                type: string
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/media/{id}:
    get:
      operationId: getMediaItem
      tags:
      - Media
      summary: Get a single media item record
      security:
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the media item.
      - 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: id
        in: query
        required: false
        schema:
          type: integer
        description: Unique identifier for the post.
      responses:
        '200':
          description: The media item record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/categories:
    get:
      operationId: listCategories
      tags:
      - Categories
      summary: List category records
      description: Post categories. 2 terms at derivation time (Company News, Publications). Paginated with `page`
        and `per_page`; responses carry `X-WP-Total`, `X-WP-TotalPages` and RFC 8288 `Link` headers.
      security:
      - {}
      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: exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: hide_empty
        in: query
        required: false
        schema:
          type: boolean
          default: false
        description: Whether to hide terms not assigned to any posts.
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        required: false
        schema:
          type: string
          enum:
          - id
          - include
          - name
          - slug
          - include_slugs
          - term_group
          - description
          - count
          default: name
        description: Sort collection by term attribute.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          default: 1
        description: Current page of the collection.
      - name: parent
        in: query
        required: false
        schema:
          type: integer
        description: Limit result set to terms assigned to a specific parent.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        description: Maximum number of items to be returned in result set.
      - name: post
        in: query
        required: false
        schema:
          type: integer
        description: Limit result set to terms assigned to a specific post.
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: slug
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to terms with one or more specific slugs.
      responses:
        '200':
          description: A page of category records
          headers:
            X-

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/atsena-therapeutics/refs/heads/main/openapi/atsena-therapeutics-wp-rest-openapi.yml