Accelsius Categories API

Content-class terms in the category taxonomy.

OpenAPI Specification

accelsius-categories-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Accelsius Taxonomy Categories API
  version: wp/v2
  summary: Public read surface of the taxonomies, terms, post types and statuses registered on accelsius.com.
  description: 'The classification layer behind the content API: the eight `category` terms Accelsius uses to separate content classes (blog, white-paper, press-release, news-article, video, podcast, infographic, case-study), the five `post_tag` topic terms (2pd2c-education, neucool-products, accelsius-news, scientific-research, featured), the 19 HappyFiles media folders, and the registry endpoints that describe the post types, taxonomies and publication statuses themselves.


    Accelsius publishes accelsius.com on WordPress (WP Engine origin, Cloudflare edge, MalCare firewall) with the WordPress core REST API enabled and anonymously readable. This is NOT a product API that Accelsius offers to customers — Accelsius manufactures two-phase direct-to-chip liquid-cooling hardware and ships no developer program, SDK or product API. It is the content API behind the company marketing site, captured for discovery purposes. Anonymous access is read-only: the `Allow` response header on every collection is `GET`, and write operations require WordPress cookie authentication with an X-WP-Nonce header or an Application Password, returning HTTP 401 to anonymous callers.'
  contact:
    name: Accelsius
    url: https://accelsius.com/contact/
    email: info@accelsius.com
  license:
    name: Site content - all rights reserved
    url: https://accelsius.com/privacy-policy/
  x-apis-io-provenance:
    method: derived
    source: https://accelsius.com/wp-json/
    derived_on: '2026-08-06'
    note: Parameters are transcribed verbatim from the `args` the site publishes for each route in its live WordPress route-discovery document at https://accelsius.com/wp-json/ (387 routes across 16 namespaces). Response schemas are derived from the field names and JSON types observed in live anonymous GET responses on 2026-08-06. Every collection operation documented here was probed anonymously and returned HTTP 200; routes that returned 401 without credentials (settings, menus, menu-items, templates, template-parts, themes, plugins, widgets, block-types, users/me) are deliberately omitted. No operation, parameter or field was invented, and no live response value is reproduced here as an example.
  x-provider-published: false
servers:
- url: https://accelsius.com/wp-json
  description: Production
tags:
- name: Categories
  description: Content-class terms in the category taxonomy.
paths:
  /wp/v2/categories:
    get:
      tags:
      - Categories
      operationId: listCategories
      summary: List categories
      description: Returns the terms in the `category` taxonomy. Eight terms were observed, each carrying a `count` of the published items assigned to it.
      security: []
      responses:
        '200':
          description: A page of results.
          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/Term'
        '400':
          description: Invalid parameter (rest_invalid_param), e.g. per_page outside 1-100.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: page
        in: query
        description: Current page of the collection.
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          items:
            type: integer
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          items:
            type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        description: Sort collection by term attribute.
        schema:
          type: string
          enum:
          - id
          - include
          - name
          - slug
          - include_slugs
          - term_group
          - description
          - count
          default: name
      - name: hide_empty
        in: query
        description: Whether to hide terms not assigned to any posts.
        schema:
          type: boolean
          default: false
      - name: parent
        in: query
        description: Limit result set to terms assigned to a specific parent.
        schema:
          type: integer
      - name: post
        in: query
        description: Limit result set to terms assigned to a specific post.
        schema:
          type: integer
          default: null
      - name: slug
        in: query
        description: Limit result set to terms with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      x-observed-total: 8
  /wp/v2/categories/{id}:
    get:
      tags:
      - Categories
      operationId: getCategory
      summary: Get one category
      description: Returns a single category term by its numeric ID.
      security: []
      parameters:
      - name: id
        in: path
        description: Unique identifier for the term.
        required: true
        schema:
          type: integer
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      responses:
        '200':
          description: The requested object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Term'
        '400':
          description: Invalid parameter (rest_invalid_param).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: No object exists with that identifier (rest_post_invalid_id / rest_term_invalid).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
components:
  schemas:
    Term:
      type: object
      title: Term
      description: A taxonomy term (category, post tag, or HappyFiles media folder).
      properties:
        id:
          type: integer
          description: Unique numeric identifier for the term.
        count:
          type: integer
          description: Number of published objects assigned to the term.
        description:
          type: string
          description: HTML description of the term.
        link:
          type: string
          format: uri
          description: URL of the term archive on accelsius.com.
        name:
          type: string
          description: HTML title for the term.
        slug:
          type: string
          description: Alphanumeric identifier for the term, unique within its taxonomy.
        taxonomy:
          type: string
          description: Taxonomy the term belongs to.
          enum:
          - category
          - post_tag
          - happyfiles_category
        parent:
          type: integer
          description: ID of the parent term, or 0 when there is none. Categories and HappyFiles folders are hierarchical; post tags are not.
        meta:
          type: array
          items: {}
          description: Registered meta fields exposed for the term.
        acf:
          type: array
          items: {}
          description: Advanced Custom Fields values registered on the term.
        yoast_head:
          type: string
          description: Yoast SEO head markup for the term archive.
        yoast_head_json:
          type: object
          description: Yoast SEO head metadata for the term archive.
        _links:
          type: object
          description: HAL-style link relations (self, collection, about, wp:post_type).
      required:
      - id
      - slug
      - name
      - taxonomy
      x-schema-provenance: Partially verified. Live anonymous GETs of /wp/v2/categories (HTTP 200, 8 terms), /wp/v2/tags (HTTP 200, 5 terms) and /wp/v2/happyfiles_category (HTTP 200, 19 terms) on 2026-08-06 confirmed the routes are public and returned the id, slug and count members read from those responses. Every subsequent re-probe of the term routes was refused by the site MalCare firewall with HTTP 403, so a complete term body was never captured; the remaining members listed here are the WordPress core term fields plus the acf/yoast_head/yoast_head_json extensions this site demonstrably adds to its post objects, and they are recorded as expected rather than observed. Treat id, slug, count, name and taxonomy as verified and the rest as unconfirmed.
    WPError:
      type: object
      title: WPError
      description: The WordPress REST error envelope. It is NOT RFC 9457 problem+json — the media type is application/json and the shape is a flat object carrying a machine-readable `code` slug, a human `message`, and a `data` object repeating the HTTP status.
      properties:
        code:
          type: string
          description: Machine-readable error slug, e.g. rest_post_invalid_id.
        message:
          type: string
          description: Human-readable error message.
        data:
          type: object
          properties:
            status:
              type: integer
              description: HTTP status repeated in the body.
      required:
      - code
      - message
  headers:
    LinkPagination:
      description: RFC 8288 Link header carrying rel="next" and rel="prev" for the collection.
      schema:
        type: string
    XWPTotalPages:
      description: Total number of pages at the requested per_page size.
      schema:
        type: integer
    XWPTotal:
      description: Total number of items in the unpaginated collection.
      schema:
        type: integer
  securitySchemes:
    applicationPassword:
      type: http
      scheme: basic
      description: WordPress Application Passwords over HTTP Basic. Advertised by the site at https://accelsius.com/wp-json/ under `authentication.application-passwords`. Every operation documented in this file is anonymous and takes no credential; this scheme is declared because it is the only credential the host accepts, and it governs the write and edit-context operations that are deliberately NOT documented here.