Juvenescence Discovery API

The juvlabs.com REST discovery surface — site index, `wp/v2` namespace route index with per-argument schemas, registered content types, taxonomies and statuses, plus oEmbed URL resolution.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/juvenescence-discovery-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

juvenescence-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Juvenescence Content API (WordPress REST API) Discovery API
  version: wp/v2
  description: Anonymously readable content API for juvlabs.com, the corporate site of Juvenescence Limited, derived
    from the WordPress REST route index the site publishes at https://juvlabs.com/wp-json/. It exposes Juvenescence's
    news stream (57 posts across Press Releases, In the News, Juv on the Road, Publications and Videos), the 35
    corporate, science, pipeline and leadership-biography pages, a 466-item media library, the category and tag
    taxonomies, cross-content search, and the site's registered `portfolio` custom post type (registered and publicly
    queryable, but empty at the time of derivation). Juvenescence runs no developer program and publishes no hand-authored
    specification; 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-23.
    Write operations are registered on the same routes but are authenticated administrative endpoints, not a public
    API offering, and are deliberately not modelled here. The routes that require credentials on this install (`/wp/v2/users`,
    `/wp/v2/settings`, `/wp/v2/plugins`, `/wp/v2/themes`, `/wp/v2/block-types`, `/wp/v2/menu-locations` and the
    whole `wp-abilities/v1` namespace) are likewise excluded, and are recorded in the repository's authentication
    and conformance artifacts instead.
  contact:
    name: Juvenescence Limited
    url: https://juvlabs.com/contact-us/
  termsOfService: https://juvlabs.com/terms-of-service/
  x-derived-from: https://juvlabs.com/wp-json/
  x-derived-on: '2026-08-23'
  x-api-evangelist-note: Derived by the API Evangelist enrichment pipeline from the provider-published WordPress
    REST route index at https://juvlabs.com/wp-json/ and https://juvlabs.com/wp-json/wp/v2; not authored or endorsed
    by Juvenescence Limited. Every operation was verified to return HTTP 200 without credentials on 2026-08-23.
servers:
- url: https://juvlabs.com/wp-json
  description: Production
security:
- {}
tags:
- name: Discovery
  description: Site index, namespace route index, content types, taxonomies, statuses and oEmbed
paths:
  /:
    get:
      operationId: getSiteIndex
      tags:
      - Discovery
      summary: Get the REST site index
      description: Returns the WordPress REST API site index for juvlabs.com — site name and tagline, the 25 registered
        namespaces, the advertised authentication schemes (empty on this install), and the full 512-route table.
        This is the discovery document the rest of this specification was derived from, and the correct first call
        for any agent.
      security:
      - {}
      responses:
        '200':
          description: The site index.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteIndex'
      parameters:
      - $ref: '#/components/parameters/context'
  /wp/v2:
    get:
      operationId: getNamespaceIndex
      tags:
      - Discovery
      summary: Get the wp/v2 namespace index
      description: Returns the route index for the `wp/v2` namespace, with each route's methods, endpoints and per-argument
        schema (type, default, enum, required). This is the machine-readable parameter contract behind every operation
        in this document.
      security:
      - {}
      responses:
        '200':
          description: The wp/v2 namespace index.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NamespaceIndex'
      parameters:
      - $ref: '#/components/parameters/context'
  /wp/v2/types:
    get:
      operationId: listTypes
      tags:
      - Discovery
      summary: List registered post types
      description: Lists the post types registered on juvlabs.com, including the custom `portfolio` type alongside
        the core `post`, `page` and `attachment` types.
      security:
      - {}
      responses:
        '200':
          description: A map of post types keyed by slug.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostType'
        '401': &id001
          $ref: '#/components/responses/Unauthorized'
        '404': &id002
          $ref: '#/components/responses/NotFound'
      parameters:
      - $ref: '#/components/parameters/context'
  /wp/v2/types/{type}:
    get:
      operationId: getType
      tags:
      - Discovery
      summary: Get a registered post type
      description: Retrieves a single registered post type by slug, including its `taxonomies`, `rest_base` and
        `rest_namespace`.
      security:
      - {}
      responses:
        '200':
          description: The requested post type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostType'
        '401': *id001
        '404': *id002
      parameters:
      - name: type
        in: path
        required: true
        description: An alphanumeric identifier for the post type.
        schema:
          type: string
          examples:
          - post
          - page
          - attachment
          - portfolio
      - $ref: '#/components/parameters/context'
  /wp/v2/taxonomies:
    get:
      operationId: listTaxonomies
      tags:
      - Discovery
      summary: List registered taxonomies
      description: Lists the taxonomies registered on juvlabs.com — `category`, `post_tag` and the custom `portfolio_category`
        — with the post types each is attached to.
      security:
      - {}
      responses:
        '200':
          description: A map of taxonomies keyed by slug.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Taxonomy'
        '401': *id001
        '404': *id002
      parameters:
      - $ref: '#/components/parameters/context'
      - name: type
        in: query
        description: Limit results to taxonomies associated with a specific post type.
        schema:
          type: string
  /wp/v2/taxonomies/{taxonomy}:
    get:
      operationId: getTaxonomy
      tags:
      - Discovery
      summary: Get a registered taxonomy
      description: Retrieves a single registered taxonomy by slug.
      security:
      - {}
      responses:
        '200':
          description: The requested taxonomy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Taxonomy'
        '401': *id001
        '404': *id002
      parameters:
      - name: taxonomy
        in: path
        required: true
        description: An alphanumeric identifier for the taxonomy.
        schema:
          type: string
          examples:
          - category
          - post_tag
          - portfolio_category
      - $ref: '#/components/parameters/context'
  /wp/v2/statuses:
    get:
      operationId: listStatuses
      tags:
      - Discovery
      summary: List registered post statuses
      description: Lists the post statuses visible without credentials. Only `publish` is exposed anonymously on
        this install.
      security:
      - {}
      responses:
        '200':
          description: A map of statuses keyed by slug.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401': *id001
        '404': *id002
      parameters:
      - $ref: '#/components/parameters/context'
  /wp/v2/statuses/{status}:
    get:
      operationId: getStatus
      tags:
      - Discovery
      summary: Get a registered post status
      description: Retrieves a single registered post status by slug.
      security:
      - {}
      responses:
        '200':
          description: The requested status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401': *id001
        '404': *id002
      parameters:
      - name: status
        in: path
        required: true
        description: An alphanumeric identifier for the status.
        schema:
          type: string
          examples:
          - publish
      - $ref: '#/components/parameters/context'
  /oembed/1.0/embed:
    get:
      operationId: getOembed
      tags:
      - Discovery
      summary: Get an oEmbed response for a juvlabs.com URL
      description: Returns an oEmbed 1.0 rich response for any juvlabs.com URL — the lightest way to resolve a Juvenescence
        page or news URL to its title, author and embed HTML without fetching the page.
      security:
      - {}
      responses:
        '200':
          description: The oEmbed response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OEmbed'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: url
        in: query
        required: true
        description: The URL of the resource for which to fetch oEmbed data. Must be on juvlabs.com.
        schema:
          type: string
          format: uri
      - name: format
        in: query
        description: The oEmbed format to use.
        schema:
          type: string
          default: json
          enum:
          - json
          - xml
      - name: maxwidth
        in: query
        description: The maximum width of the embed frame in pixels.
        schema:
          type: integer
          default: 600
components:
  parameters:
    context:
      name: context
      in: query
      description: Scope under which the request is made; determines fields present in response.
      schema:
        type: string
        default: view
        enum:
        - view
        - embed
        - edit
  schemas:
    Error:
      type: object
      description: The WordPress REST error envelope. This API does NOT use RFC 9457 application/problem+json; errors
        are returned as application/json with this shape.
      required:
      - code
      - message
      - data
      properties:
        code:
          type: string
          description: A machine-readable error code.
          examples:
          - rest_post_invalid_id
          - rest_invalid_param
          - rest_no_route
          - rest_forbidden
        message:
          type: string
          description: A human-readable error message.
        data:
          type: object
          description: Error detail. Always carries the HTTP status; validation errors also carry `params` and `details`
            keyed by the offending parameter.
          properties:
            status:
              type: integer
              description: The HTTP status code.
            params:
              type: object
              additionalProperties:
                type: string
              description: Per-parameter validation messages.
            details:
              type: object
              additionalProperties: true
              description: Per-parameter structured validation detail.
          additionalProperties: true
    Links:
      type: object
      description: HAL-style `_links` relations WordPress attaches to every resource — `self`, `collection`, `about`,
        `author`, `replies`, `wp:featuredmedia`, `wp:term` and `curies`.
      additionalProperties: true
    NamespaceIndex:
      type: object
      description: The route index for a single REST namespace.
      properties:
        namespace:
          type: string
          description: The namespace identifier.
          examples:
          - wp/v2
        routes:
          type: object
          description: Routes registered in this namespace, keyed by route pattern, each carrying its methods, endpoints
            and per-argument schema.
          additionalProperties: true
        _links:
          $ref: '#/components/schemas/Links'
    OEmbed:
      type: object
      description: An oEmbed 1.0 rich response for a juvlabs.com URL.
      properties:
        version:
          type: string
          examples:
          - '1.0'
          description: The oEmbed version number.
        provider_name:
          type: string
          examples:
          - Juvenescence
          description: The provider name.
        provider_url:
          type: string
          format: uri
          description: The provider URL.
        author_name:
          type: string
          description: The author name.
        title:
          type: string
          description: The resource title.
        type:
          type: string
          description: The resource type.
        width:
          type: integer
          description: The embed width.
        height:
          type: integer
          description: The embed height.
        html:
          type: string
          description: The embed HTML.
    PostType:
      type: object
      description: A registered post type.
      properties:
        description:
          type: string
          description: A human-readable description of the post type.
        hierarchical:
          type: boolean
          description: Whether or not the post type should have children.
        has_archive:
          type:
          - boolean
          - string
          description: If the value is a string, the value will be used as the archive slug.
        name:
          type: string
          description: The title for the post type.
        slug:
          type: string
          description: An alphanumeric identifier for the post type.
          examples:
          - post
          - page
          - attachment
          - portfolio
        taxonomies:
          type: array
          items:
            type: string
          description: All taxonomies associated with this post type.
        rest_base:
          type: string
          description: REST base route for the post type.
        rest_namespace:
          type: string
          description: REST route's namespace for the post type.
        _links:
          $ref: '#/components/schemas/Links'
    SiteIndex:
      type: object
      description: The WordPress REST API site index — the discovery document served at /wp-json/.
      properties:
        name:
          type: string
          description: The site name.
          examples:
          - Juvenescence
        description:
          type: string
          description: The site tagline.
          examples:
          - Extending Healthy Lifespan
        url:
          type: string
          format: uri
          description: The site URL.
        home:
          type: string
          format: uri
          description: The site home URL.
        gmt_offset:
          type:
          - number
          - string
          description: The site GMT offset.
        namespaces:
          type: array
          items:
            type: string
          description: The registered REST namespaces. 25 are registered on this install.
        authentication:
          type: object
          description: Advertised authentication schemes. Empty on this install — no application-password or OAuth
            discovery is exposed.
          additionalProperties: true
        site_icon_url:
          type: string
          format: uri
          description: URL of the site icon.
        routes:
          type: object
          description: The full route table, keyed by route pattern. 512 routes are registered on this install;
            most belong to administrative plugin namespaces and require credentials.
          additionalProperties: true
        _links:
          $ref: '#/components/schemas/Links'
    Status:
      type: object
      description: A registered post status.
      properties:
        name:
          type: string
          description: The title for the status.
        public:
          type: boolean
          description: Whether posts with this status should be shown in the front end of the site.
        queryable:
          type: boolean
          description: Whether posts with this status should be publicly-queryable.
        slug:
          type: string
          description: An alphanumeric identifier for the status.
          examples:
          - publish
        date_floating:
          type: boolean
          description: Whether the status is excluded from the date query.
        _links:
          $ref: '#/components/schemas/Links'
    Taxonomy:
      type: object
      description: A registered taxonomy.
      properties:
        name:
          type: string
          description: The title for the taxonomy.
        slug:
          type: string
          description: An alphanumeric identifier for the taxonomy.
          examples:
          - category
          - post_tag
          - portfolio_category
        description:
          type: string
          description: A human-readable description of the taxonomy.
        types:
          type: array
          items:
            type: string
          description: Types associated with the taxonomy.
        hierarchical:
          type: boolean
          description: Whether or not the taxonomy should have children.
        rest_base:
          type: string
          description: REST base route for the taxonomy.
        rest_namespace:
          type: string
          description: REST route's namespace for the taxonomy.
        _links:
          $ref: '#/components/schemas/Links'
  responses:
    NotFound:
      description: No such resource, or no route matching the URL and method.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalidId:
              value:
                code: rest_post_invalid_id
                message: Invalid post ID.
                data:
                  status: 404
            noRoute:
              value:
                code: rest_no_route
                message: No route was found matching the URL and request method.
                data:
                  status: 404
    Unauthorized:
      description: The requested context or route requires credentials. Returned with code `rest_forbidden` when
        `context=edit` is requested anonymously.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            forbidden:
              value:
                code: rest_forbidden
                message: Sorry, you are not allowed to do that.
                data:
                  status: 401