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