Allay Therapeutics Posts API

News archive — press releases, in-the-news coverage, and presentations/publications. 19 posts published at harvest time, spanning 2021-05-13 (company launch with first clinical data) through 2025-06-05 (the $57.5M Series D announcement).

OpenAPI Specification

allay-therapeutics-posts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Allay Therapeutics Content Posts API
  version: wp/v2
  summary: Anonymously readable WordPress REST content API behind www.allaytx.com.
  description: The read-only content surface Allay Therapeutics exposes at https://www.allaytx.com/wp-json. Allay Therapeutics is a clinical-stage biopharmaceutical company in San Jose, California and Singapore developing ultra-sustained, non-opioid analgesic products for post-surgical pain management, led by the bupivacaine-based ATX-101 implant for total knee replacement. 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 verified to return data anonymously on 2026-08-06. Every write route, the entire plugin-administration surface, and `/wp/v2/users` are deliberately excluded — see x-api-evangelist-provenance.
  contact:
    name: Allay Therapeutics
    url: https://www.allaytx.com/
    email: contact@allaytx.com
  x-api-evangelist-provenance: 'Derived by the API Evangelist enrichment pipeline from the live WordPress REST route index at https://www.allaytx.com/wp-json/ (196 routes across 10 namespaces: oembed/1.0, wpe/cache-plugin/v1, wpe_sign_on_plugin/v1, yoast/v1, duplicate-post/v1, monsterinsights/v1, wp/v2, wp-site-health/v1, wp-block-editor/v1 and wp-abilities/v1) and verified against live anonymous responses on 2026-08-06. 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. Only operations that returned data without credentials are modelled. Anonymous 401s recorded at harvest: /wp/v2/settings (rest_forbidden), /wp/v2/menus (rest_cannot_view), /wp/v2/themes (rest_cannot_view_themes), /wp/v2/plugins (rest_cannot_view_plugins), /wp/v2/block-types (rest_block_type_cannot_view), /wp/v2/font-collections (rest_cannot_read), /wp/v2/icons (rest_cannot_view) and the whole wp-abilities/v1 namespace (rest_forbidden) — so no agent-capability, MCP or AgentCard surface is claimed for this provider. DELIBERATE EXCLUSION: /wp/v2/users answers anonymously with 7 author records (WordPress default author enumeration). The exposure is recorded here as a factual observation, but the endpoint is NOT modelled as an operation, NOT packaged as an agent skill, and no individual is named anywhere in this repository. Allay 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 nginx, responses carry `x-robots-tag: noindex` and `cache-control: max-age=600, must-revalidate`. Nothing here was obtained with credentials.'
servers:
- url: https://www.allaytx.com/wp-json
  description: Production content API
tags:
- name: posts
  description: News archive — press releases, in-the-news coverage, and presentations/publications. 19 posts published at harvest time, spanning 2021-05-13 (company launch with first clinical data) through 2025-06-05 (the $57.5M Series D announcement).
paths:
  /wp/v2/posts:
    get:
      tags:
      - posts
      operationId: listPosts
      summary: List news posts
      description: Lists published posts. On this deployment the collection is the company news archive — 19 items from the May 2021 launch through the June 2025 Series D. Paginated; `X-WP-Total` and `X-WP-TotalPages` are exposed via `Access-Control-Expose-Headers`, and a `Link` header carries `rel="next"` / `rel="prev"`.
      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/Fields'
      - name: orderby
        in: query
        description: Sort collection by post attribute.
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
      - name: categories
        in: query
        description: Limit result set to items with specific category term IDs.
        schema:
          type: array
          items:
            type: integer
      - name: categories_exclude
        in: query
        description: Ensure result set excludes items with specific category term IDs.
        schema:
          type: array
          items:
            type: integer
      - name: tags
        in: query
        description: Limit result set to items with specific tag term IDs.
        schema:
          type: array
          items:
            type: integer
      - name: tags_exclude
        in: query
        description: Ensure result set excludes items with specific tag term IDs.
        schema:
          type: array
          items:
            type: integer
      - name: sticky
        in: query
        description: Limit result set to items that are sticky.
        schema:
          type: boolean
      responses:
        '200':
          description: A page of posts
          headers:
            X-WP-Total:
              description: Total number of items 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/InvalidParam'
  /wp/v2/posts/{id}:
    get:
      tags:
      - posts
      operationId: getPost
      summary: Get a single news post
      description: Retrieves one published post by numeric ID.
      parameters:
      - $ref: '#/components/parameters/PathId'
      - $ref: '#/components/parameters/Context'
      - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          description: A post
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        '404':
          $ref: '#/components/responses/PostNotFound'
components:
  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: Sparse fieldset — comma-separated list of fields to include in the response.
      schema:
        type: string
        examples:
        - id,date,slug,title,link
    Context:
      name: context
      in: query
      description: Scope under which the request is made; determines fields present in the response.
      schema:
        type: string
        enum:
        - view
        - embed
        - edit
        default: view
    Include:
      name: include
      in: query
      description: Limit result set to specific IDs.
      schema:
        type: array
        items:
          type: integer
    ModifiedAfter:
      name: modified_after
      in: query
      description: Limit response to posts modified after a given ISO8601 compliant date.
      schema:
        type: string
        format: date-time
    After:
      name: after
      in: query
      description: Limit response to posts published after a given ISO8601 compliant date.
      schema:
        type: string
        format: date-time
    Page:
      name: page
      in: query
      description: Current page of the collection.
      schema:
        type: integer
        minimum: 1
        default: 1
    Offset:
      name: offset
      in: query
      description: Offset the result set by a specific number of items.
      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
    Exclude:
      name: exclude
      in: query
      description: Ensure result set excludes specific IDs.
      schema:
        type: array
        items:
          type: integer
    Order:
      name: order
      in: query
      description: Order sort attribute ascending or descending.
      schema:
        type: string
        enum:
        - asc
        - desc
        default: desc
    Search:
      name: search
      in: query
      description: Limit results to those matching a string.
      schema:
        type: string
    PathId:
      name: id
      in: path
      required: true
      description: Unique identifier for the object.
      schema:
        type: integer
    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
    Slug:
      name: slug
      in: query
      description: Limit result set to posts with one or more specific slugs.
      schema:
        type: array
        items:
          type: string
  responses:
    InvalidParam:
      description: One or more query parameters failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            perPageOutOfBounds:
              value:
                code: rest_invalid_param
                message: 'Invalid parameter(s): per_page'
                data:
                  status: 400
                  params:
                    per_page: per_page must be between 1 (inclusive) and 100 (inclusive)
    PostNotFound:
      description: No object exists with the supplied ID.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalidPostId:
              value:
                code: rest_post_invalid_id
                message: Invalid post ID.
                data:
                  status: 404
  schemas:
    Error:
      type: object
      description: The WordPress REST error envelope. Not RFC 9457 — the media type is application/json, and the shape is {code, message, data:{status}} with an optional data.params / data.details map on validation failures.
      required:
      - code
      - message
      - data
      properties:
        code:
          type: string
          description: Machine-readable error code.
        message:
          type: string
          description: Human-readable error message.
        data:
          type: object
          properties:
            status:
              type: integer
              description: HTTP status code.
            params:
              type: object
              description: Per-parameter validation messages.
            details:
              type: object
              description: Per-parameter structured validation detail.
    Post:
      type: object
      description: A news post — press release, news coverage item, or presentation/publication.
      properties:
        id:
          type: integer
        date:
          type: string
          format: date-time
          description: Publication date in the site timezone (America/New_York).
        date_gmt:
          type: string
          format: date-time
        modified:
          type: string
          format: date-time
        modified_gmt:
          type: string
          format: date-time
        guid:
          $ref: '#/components/schemas/RenderedText'
        slug:
          type: string
        status:
          type: string
        type:
          type: string
          const: post
        link:
          type: string
          format: uri
        title:
          $ref: '#/components/schemas/RenderedText'
        content:
          $ref: '#/components/schemas/RenderedText'
        excerpt:
          $ref: '#/components/schemas/RenderedText'
        author:
          type: integer
          description: Author term ID. Author records themselves are not modelled in this document.
        featured_media:
          type: integer
        categories:
          type: array
          items:
            type: integer
        tags:
          type: array
          items:
            type: integer
        _links:
          type: object
    RenderedText:
      type: object
      properties:
        rendered:
          type: string
          description: HTML for the field, transformed for display.
        protected:
          type: boolean