Metalenz Taxonomy API

Public, unauthenticated read access to the classification layer over the Metalenz newsroom — the `category` taxonomy and the `post_tag` taxonomy, with their term records, counts and archive links. Verified live at 1 category and 2 tags (`polar-3d`, `new-products`).

Operations 4

GET /wp/v2/categories List categories #
GET /wp/v2/categories/{id} Get category #
GET /wp/v2/tags List tags #
GET /wp/v2/tags/{id} Get tag #

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/metalenz-taxonomy-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

metalenz-taxonomy-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Metalenz Taxonomy API
  version: wp/v2
  description: 'Public, unauthenticated read access to the two taxonomies that classify the metalenz.com newsroom — the `category` taxonomy (one term, `uncategorized`, carrying all 26 posts) and the `post_tag` taxonomy (two terms, `polar-3d` and `new-products`). Anonymous access is read-only: the collection answers `Allow: GET` without credentials. Write methods exist on the same routes but require WordPress application-password authentication and are not part of the public surface.'
  contact:
    name: Metalenz
    url: https://metalenz.com/contact-us/
  x-derived-from: https://metalenz.com/wp-json/ route index + per-route HTTP OPTIONS schema documents
  x-derived-on: '2026-08-25'
  x-api-evangelist-note: Third-party profile. Metalenz is a fabless metasurface-optics (meta-optics) semiconductor company and publishes no developer program, no developer portal and no API documentation; this documents the anonymously readable WordPress REST content API behind metalenz.com. Every path, parameter, enum and property here was read from the server's own published route index and OPTIONS schema documents on 2026-08-25 — nothing is invented.
servers:
- url: https://metalenz.com/wp-json
  description: Metalenz WordPress REST API
tags:
- name: Taxonomy
  description: Categories and tags applied to metalenz.com press releases.
paths:
  /wp/v2/categories:
    get:
      operationId: listCategories
      summary: List categories
      tags:
      - Taxonomy
      description: Retrieve the category terms registered on metalenz.com (1 at capture).
      parameters:
      - name: context
        in: query
        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
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: hide_empty
        in: query
        schema:
          type: boolean
          default: false
        description: Whether to hide terms not assigned to any posts.
      - name: include
        in: query
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        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
        schema:
          type: integer
          minimum: 1
          default: 1
        description: Current page of the collection.
      - name: parent
        in: query
        schema:
          type: integer
        description: Limit result set to terms assigned to a specific parent.
      - name: per_page
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        description: Maximum number of items to be returned in result set.
      - name: post
        in: query
        schema:
          type: integer
        description: Limit result set to terms assigned to a specific post.
      - name: search
        in: query
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: slug
        in: query
        schema:
          type: array
          items:
            type: string
        description: Limit result set to terms with one or more specific slugs.
      responses:
        '200':
          description: List categories
          headers:
            X-WP-Total:
              description: Total number of records matching the query.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current per_page.
              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/Category'
        '400':
          description: Invalid parameter(s) — rest_invalid_param.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required or insufficient permission — rest_forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /wp/v2/categories/{id}:
    get:
      operationId: getCategory
      summary: Get category
      tags:
      - Taxonomy
      description: Retrieve a single category term by its numeric term ID.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the term.
      - name: context
        in: query
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      responses:
        '200':
          description: Get category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
        '400':
          description: Invalid parameter(s) — rest_invalid_param.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No category exists with that ID — rest_term_invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /wp/v2/tags:
    get:
      operationId: listTags
      summary: List tags
      tags:
      - Taxonomy
      description: Retrieve the post_tag terms registered on metalenz.com (2 at capture).
      parameters:
      - name: context
        in: query
        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
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: hide_empty
        in: query
        schema:
          type: boolean
          default: false
        description: Whether to hide terms not assigned to any posts.
      - name: include
        in: query
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: offset
        in: query
        schema:
          type: integer
        description: Offset the result set by a specific number of items.
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        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
        schema:
          type: integer
          minimum: 1
          default: 1
        description: Current page of the collection.
      - name: per_page
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        description: Maximum number of items to be returned in result set.
      - name: post
        in: query
        schema:
          type: integer
        description: Limit result set to terms assigned to a specific post.
      - name: search
        in: query
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: slug
        in: query
        schema:
          type: array
          items:
            type: string
        description: Limit result set to terms with one or more specific slugs.
      responses:
        '200':
          description: List tags
          headers:
            X-WP-Total:
              description: Total number of records matching the query.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current per_page.
              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/Tag'
        '400':
          description: Invalid parameter(s) — rest_invalid_param.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required or insufficient permission — rest_forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /wp/v2/tags/{id}:
    get:
      operationId: getTag
      summary: Get tag
      tags:
      - Taxonomy
      description: Retrieve a single tag term by its numeric term ID.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the term.
      - name: context
        in: query
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      responses:
        '200':
          description: Get tag
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
        '400':
          description: Invalid parameter(s) — rest_invalid_param.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No tag exists with that ID — rest_term_invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      description: The WordPress REST API error envelope returned on every 4xx/5xx.
      properties:
        code:
          type: string
          description: Machine-readable error code, e.g. rest_post_invalid_id.
        message:
          type: string
          description: Human-readable error message.
        data:
          type: object
          properties:
            status:
              type: integer
              description: The HTTP status code.
            params:
              type: object
              description: Per-parameter validation messages (rest_invalid_param only).
            details:
              type: object
              description: Per-parameter validation detail (rest_invalid_param only).
      required:
      - code
      - message
    Category:
      title: category
      type: object
      properties:
        id:
          description: Unique identifier for the term.
          type: integer
          readOnly: true
        count:
          description: Number of published posts for the term.
          type: integer
          readOnly: true
        description:
          description: HTML description of the term.
          type: string
        link:
          description: URL of the term.
          type: string
          format: uri
          readOnly: true
        name:
          description: HTML title for the term.
          type: string
        slug:
          description: An alphanumeric identifier for the term unique to its type.
          type: string
        taxonomy:
          description: Type attribution for the term.
          type: string
          enum:
          - category
          readOnly: true
        parent:
          description: The parent term ID.
          type: integer
        meta:
          description: Meta fields.
          type: object
        acf:
          description: ACF field data
          type: object
    Tag:
      title: post_tag
      type: object
      properties:
        id:
          description: Unique identifier for the term.
          type: integer
          readOnly: true
        count:
          description: Number of published posts for the term.
          type: integer
          readOnly: true
        description:
          description: HTML description of the term.
          type: string
        link:
          description: URL of the term.
          type: string
          format: uri
          readOnly: true
        name:
          description: HTML title for the term.
          type: string
        slug:
          description: An alphanumeric identifier for the term unique to its type.
          type: string
        taxonomy:
          description: Type attribution for the term.
          type: string
          enum:
          - post_tag
          readOnly: true
        meta:
          description: Meta fields.
          type: object