Nacuity Pharmaceuticals Pages API

Corporate, clinical-programme and press-release pages (29 published at harvest time). Nacuity authors its news items as pages, not as posts.

OpenAPI Specification

nacuity-pharmaceuticals-pages-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Nacuity Pharmaceuticals Content Pages API
  version: wp/v2
  summary: Anonymously readable WordPress REST content API behind www.nacuity.com.
  description: The read-only content surface Nacuity Pharmaceuticals exposes at https://www.nacuity.com/wp-json. Nacuity Pharmaceuticals is a clinical-stage biopharmaceutical company developing NPI-001 (N-acetylcysteine amide tablets) for retinitis pigmentosa and NPI-002 (an intravitreal implant) for the delay of cataract progression; it runs no developer program and markets no product API. This document is an API Evangelist derivation of the WordPress `wp/v2` route index the site publishes at /wp-json/, restricted to the operations that were verified to return data anonymously on 2026-08-04. Write operations, `/wp/v2/users`, `/wp/v2/settings`, `/wp/v2/menus`, `/wp/v2/themes`, `/wp/v2/plugins`, `/wp/v2/templates`, the `wp-abilities/v1` namespace, the `wordfence/v1` namespace, the `wp-site-health/v1` namespace and the authenticated half of `yoast/v1` and `exactmetrics/v1` all require authentication and are deliberately excluded — see x-api-evangelist-provenance.
  contact:
    name: Nacuity Pharmaceuticals
    url: https://www.nacuity.com/contact/
  x-api-evangelist-provenance: Derived by the API Evangelist enrichment pipeline from the live WordPress REST route index at https://www.nacuity.com/wp-json/ (211 routes across the namespaces oembed/1.0, sliderrevolution, wordfence/v1, yoast/v1, exactmetrics/v1, wp/v2, wp-site-health/v1, wp-block-editor/v1 and wp-abilities/v1) and verified against live anonymous responses on 2026-08-04. Every parameter below appears verbatim in the route index `args` for that endpoint, and every operation modelled here returned 200 without credentials. Nacuity Pharmaceuticals 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. Nothing here was obtained with credentials.
servers:
- url: https://www.nacuity.com/wp-json
  description: Production content API
tags:
- name: pages
  description: Corporate, clinical-programme and press-release pages (29 published at harvest time). Nacuity authors its news items as pages, not as posts.
paths:
  /wp/v2/pages:
    get:
      tags:
      - pages
      operationId: listPages
      summary: List pages
      description: 'Lists published pages. At harvest time this returned the 10 corporate pages: Home, About Nacuity Pharmaceuticals, Our Science, Disease State, Resources for patients and caregivers, News, Careers, Working with Grin Therapeutics (contact), Privacy Policy and Cookie Policy.'
      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'
      - name: author
        in: query
        schema:
          type: array
          items:
            type: integer
      - name: author_exclude
        in: query
        schema:
          type: array
          items:
            type: integer
      - name: menu_order
        in: query
        description: Limit result set to posts with a specific menu_order value.
        schema:
          type: integer
      - name: parent
        in: query
        description: Limit result set to items with particular parent ids.
        schema:
          type: array
          items:
            type: integer
      - name: parent_exclude
        in: query
        description: Limit result set to all items except those of a particular parent id.
        schema:
          type: array
          items:
            type: integer
      - name: orderby
        in: query
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          - menu_order
          default: date
      - $ref: '#/components/parameters/Status'
      - $ref: '#/components/parameters/SearchColumns'
      - $ref: '#/components/parameters/SearchSemantics'
      responses:
        '200':
          description: A paginated list of pages.
          headers:
            X-WP-Total:
              $ref: '#/components/headers/XWPTotal'
            X-WP-TotalPages:
              $ref: '#/components/headers/XWPTotalPages'
            Link:
              $ref: '#/components/headers/LinkPagination'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Page'
              examples:
                corporate-pages:
                  summary: Fields-filtered page list observed 2026-08-04 (X-WP-Total 29)
                  value:
                  - id: 23
                    slug: about
                    link: https://www.nacuity.com/about/
                    title:
                      rendered: About Us
                    parent: 0
                  - id: 337
                    slug: our-science
                    link: https://www.nacuity.com/our-science/
                    title:
                      rendered: Our Science
                    parent: 0
                  - id: 630
                    slug: nacuity-pharmaceuticals-granted-u-s-fda-breakthrough-therapy-designation-for-npi-001-n-acetylcysteine-amide-tablets-for-the-treatment-of-retinitis-pigmentosa
                    link: https://www.nacuity.com/news/nacuity-pharmaceuticals-granted-u-s-fda-breakthrough-therapy-designation-for-npi-001-n-acetylcysteine-amide-tablets-for-the-treatment-of-retinitis-pigmentosa/
                    title:
                      rendered: Nacuity Pharmaceuticals Granted U.S. FDA Breakthrough Therapy Designation for NPI-001 (N-acetylcysteine amide) Tablets for the Treatment of Retinitis Pigmentosa
                    parent: 99
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/pages/{id}:
    get:
      tags:
      - pages
      operationId: getPage
      summary: Get a page
      description: 'Returns one page. IMPORTANT: on this deployment `content.rendered` and `excerpt.rendered` are EMPTY STRINGS for all 29 published pages — the page bodies are authored in Slider Revolution / page-builder post meta that WordPress does not project into the REST content field, so the body text is only reachable by rendering the HTML page. What the API does return per page is the identity and navigation metadata (id, slug, title, link, date, modified, parent, menu_order, template, class_list) plus the Yoast `yoast_head` markup and `yoast_head_json` object, which carries the canonical URL, robots directives, Open Graph tags and the schema.org @graph (WebPage, BreadcrumbList, WebSite, Organization).'
      parameters:
      - $ref: '#/components/parameters/PathId'
      - $ref: '#/components/parameters/Context'
      responses:
        '200':
          description: A page
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Page:
      type: object
      description: A WordPress page. On www.nacuity.com `content.rendered` and `excerpt.rendered` are empty strings for every one of the 29 published pages — see getPage.
      properties:
        id:
          type: integer
        date:
          type: string
          format: date-time
        date_gmt:
          type: string
          format: date-time
        guid:
          $ref: '#/components/schemas/RenderedText'
        modified:
          type: string
          format: date-time
        modified_gmt:
          type: string
          format: date-time
        slug:
          type: string
        status:
          type: string
        type:
          type: string
        link:
          type: string
          format: uri
        title:
          $ref: '#/components/schemas/RenderedText'
        content:
          $ref: '#/components/schemas/RenderedText'
        excerpt:
          $ref: '#/components/schemas/RenderedText'
        author:
          type: integer
        featured_media:
          type: integer
        parent:
          type: integer
          description: Parent page id — pages are hierarchical. On this deployment 14 of 29 pages hang off page 99 (News) and 2 off page 560 (Medical Information).
        menu_order:
          type: integer
        template:
          type: string
        class_list:
          type: array
          items:
            type: string
        yoast_head:
          type: string
          description: Rendered Yoast SEO head markup for this page.
        yoast_head_json:
          type: object
          description: Parsed Yoast SEO head data — title, canonical, robots, og_* and twitter_* tags, and the schema.org `schema.@graph` (WebPage, BreadcrumbList, WebSite, Organization). On this deployment this object is the only per-page descriptive text the API returns, because content.rendered and excerpt.rendered are empty.
        _links:
          type: object
    Error:
      type: object
      description: The WordPress REST error envelope. Note this is NOT RFC 9457 application/problem+json — it is served as application/json with code/message/data.
      required:
      - code
      - message
      - data
      properties:
        code:
          type: string
          description: Machine-readable error slug
          e.g. rest_post_invalid_id.: null
        message:
          type: string
          description: Human-readable message.
        data:
          type: object
          properties:
            status:
              type: integer
            params:
              type: object
              additionalProperties:
                type: string
            details:
              type: object
    RenderedText:
      type: object
      properties:
        rendered:
          type: string
  parameters:
    SearchSemantics:
      name: search_semantics
      in: query
      description: How to interpret the search input.
      schema:
        type: string
        enum:
        - exact
    PathId:
      name: id
      in: path
      required: true
      description: Unique identifier for the object.
      schema:
        type: integer
    Status:
      name: status
      in: query
      description: Limit result set to posts assigned one or more statuses. Anonymous callers may only request `publish`.
      schema:
        type: array
        items:
          type: string
        default:
        - publish
    Slug:
      name: slug
      in: query
      description: Limit result set to posts with one or more specific slugs.
      schema:
        type: array
        items:
          type: string
    PerPage:
      name: per_page
      in: query
      description: Maximum number of items to be returned in result set. Values outside 1-100 return a 400 rest_invalid_param.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    Context:
      name: context
      in: query
      description: Scope under which the request is made; determines fields present in response. Anonymous callers may only use `view` and `embed`.
      schema:
        type: string
        enum:
        - view
        - embed
        - edit
        default: view
    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
    Before:
      name: before
      in: query
      description: Limit response to posts published before a given ISO8601 compliant date.
      schema:
        type: string
        format: date-time
    ModifiedAfter:
      name: modified_after
      in: query
      description: Limit response to posts modified after a given ISO8601 compliant date.
      schema:
        type: string
        format: date-time
    Offset:
      name: offset
      in: query
      description: Offset the result set by a specific number of items.
      schema:
        type: integer
    SearchColumns:
      name: search_columns
      in: query
      description: Array of column names to be searched.
      schema:
        type: array
        items:
          type: string
    Page:
      name: page
      in: query
      description: Current page of the collection.
      schema:
        type: integer
        minimum: 1
        default: 1
    Exclude:
      name: exclude
      in: query
      description: Ensure result set excludes specific IDs.
      schema:
        type: array
        items:
          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
    Include:
      name: include
      in: query
      description: Limit result set to specific IDs.
      schema:
        type: array
        items:
          type: integer
    After:
      name: after
      in: query
      description: Limit response to posts published after a given ISO8601 compliant date.
      schema:
        type: string
        format: date-time
  headers:
    XWPTotal:
      description: Total number of matching records across all pages.
      schema:
        type: integer
    XWPTotalPages:
      description: Total number of result pages at the current per_page.
      schema:
        type: integer
    LinkPagination:
      description: RFC 8288 Link header carrying rel="next" / rel="prev" page links.
      schema:
        type: string
  responses:
    InvalidParam:
      description: One or more query parameters failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            per-page-out-of-bounds:
              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)
    NotFound:
      description: The requested object does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalid-id:
              value:
                code: rest_post_invalid_id
                message: Invalid post ID.
                data:
                  status: 404