openapi: 3.1.0 info: title: Impossible Metals Taxonomy API version: wp/v2 description: 'Public, unauthenticated read access to the classification vocabularies behind impossiblemetals.com: post categories (16 terms at capture), post tags (2 terms), the registered post types and the registered taxonomies. These are the vocabularies that organise the company''s public writing on deep-sea mining.' contact: name: Impossible Metals url: https://impossiblemetals.com/contact/ x-derived-from: https://impossiblemetals.com/wp-json/ route index + per-route HTTP OPTIONS schema documents x-derived-on: '2026-08-23' x-api-evangelist-note: Third-party profile. Impossible Metals publishes no developer program. This document describes the anonymously readable WordPress REST content API served from impossiblemetals.com. Every path, parameter and schema was read from the server's own published route index and OPTIONS documents on 2026-08-23 — nothing is invented. servers: - url: https://impossiblemetals.com/wp-json description: Impossible Metals WordPress REST API tags: - name: Taxonomy description: Categories, tags and the registered type/taxonomy vocabularies. paths: /wp/v2/categories: get: operationId: listCategories summary: List categories description: Retrieve the post category terms. 16 terms were live at capture. tags: - Taxonomy 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 default: 1 minimum: 1 - name: per_page in: query description: Maximum number of items to be returned in result set. schema: type: integer default: 10 minimum: 1 maximum: 100 - 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 default: [] items: type: integer - name: include in: query description: Limit result set to specific IDs. schema: type: array default: [] 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 - name: slug in: query description: Limit result set to terms with one or more specific slugs. schema: type: array items: type: string responses: '200': description: List categories — success. headers: &id003 X-WP-Total: description: Total number of items in the unpaginated collection. schema: type: integer X-WP-TotalPages: description: Total number of pages available at the requested per_page size. 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': &id001 description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/RestError' examples: invalidParam: 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) '404': &id002 description: WordPress REST error envelope. content: application/json: schema: $ref: '#/components/schemas/RestError' examples: invalidId: value: code: rest_post_invalid_id message: Invalid post ID. data: status: 404 /wp/v2/categories/{id}: get: operationId: getCategory summary: Get a category description: Retrieve a single category term by its numeric identifier. tags: - Taxonomy parameters: - name: id in: path description: Unique identifier for the term. schema: type: integer required: true - 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: Get a category — success. content: application/json: schema: type: object '400': *id001 '404': *id002 /wp/v2/tags: get: operationId: listTags summary: List tags description: Retrieve the post tag terms. 2 terms were live at capture. tags: - Taxonomy 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 default: 1 minimum: 1 - name: per_page in: query description: Maximum number of items to be returned in result set. schema: type: integer default: 10 minimum: 1 maximum: 100 - 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 default: [] items: type: integer - name: include in: query description: Limit result set to specific IDs. schema: type: array default: [] items: type: integer - name: offset in: query description: Offset the result set by a specific number of items. schema: 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: post in: query description: Limit result set to terms assigned to a specific post. schema: type: integer - name: slug in: query description: Limit result set to terms with one or more specific slugs. schema: type: array items: type: string responses: '200': description: List tags — success. headers: *id003 content: application/json: schema: type: array items: $ref: '#/components/schemas/Tag' '400': *id001 '404': *id002 /wp/v2/tags/{id}: get: operationId: getTag summary: Get a tag description: Retrieve a single tag term by its numeric identifier. tags: - Taxonomy parameters: - name: id in: path description: Unique identifier for the term. schema: type: integer required: true - 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: Get a tag — success. content: application/json: schema: type: object '400': *id001 '404': *id002 /wp/v2/types: get: operationId: listTypes summary: List post types description: Retrieve every registered post type and its REST base. tags: - Taxonomy 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 responses: '200': description: List post types — success. content: application/json: schema: type: array items: $ref: '#/components/schemas/Type' '400': *id001 '404': *id002 /wp/v2/taxonomies: get: operationId: listTaxonomies summary: List taxonomies description: Retrieve every registered taxonomy and its REST base. tags: - Taxonomy 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: type in: query description: Limit results to taxonomies associated with a specific post type. schema: type: string responses: '200': description: List taxonomies — success. content: application/json: schema: type: array items: $ref: '#/components/schemas/Taxonomy' '400': *id001 '404': *id002 components: schemas: RestError: type: object description: The WordPress REST API error envelope. Not RFC 9457 problem+json — it is served as application/json with a WordPress-specific code/message/data shape. required: - code - message - data properties: code: type: string description: Machine-readable WordPress error code, e.g. rest_post_invalid_id. message: type: string description: Human-readable message. data: type: object properties: status: type: integer description: HTTP status code. params: type: object description: Per-parameter validation messages, present on rest_invalid_param. Category: type: object properties: id: type: integer description: Unique identifier for the term. readOnly: true count: type: integer description: Number of published posts for the term. readOnly: true description: type: string description: HTML description of the term. link: type: string description: URL of the term. format: uri readOnly: true name: type: string description: HTML title for the term. slug: type: string description: An alphanumeric identifier for the term unique to its type. taxonomy: type: string description: Type attribution for the term. enum: - category readOnly: true parent: type: integer description: The parent term ID. meta: type: object description: Meta fields. Tag: type: object properties: id: type: integer description: Unique identifier for the term. readOnly: true count: type: integer description: Number of published posts for the term. readOnly: true description: type: string description: HTML description of the term. link: type: string description: URL of the term. format: uri readOnly: true name: type: string description: HTML title for the term. slug: type: string description: An alphanumeric identifier for the term unique to its type. taxonomy: type: string description: Type attribution for the term. enum: - post_tag readOnly: true meta: type: object description: Meta fields. Type: type: object properties: capabilities: type: object description: All capabilities used by the post type. readOnly: true description: type: string description: A human-readable description of the post type. readOnly: true hierarchical: type: boolean description: Whether or not the post type should have children. readOnly: true viewable: type: boolean description: Whether or not the post type can be viewed. readOnly: true labels: type: object description: Human-readable labels for the post type for various contexts. readOnly: true name: type: string description: The title for the post type. readOnly: true slug: type: string description: An alphanumeric identifier for the post type. readOnly: true supports: type: object description: All features, supported by the post type. readOnly: true has_archive: type: - string - boolean description: If the value is a string, the value will be used as the archive slug. If the value is false the post type has no archive. readOnly: true taxonomies: type: array description: Taxonomies associated with post type. readOnly: true items: type: string rest_base: type: string description: REST base route for the post type. readOnly: true rest_namespace: type: string description: REST route's namespace for the post type. readOnly: true visibility: type: object description: The visibility settings for the post type. readOnly: true properties: show_ui: type: boolean description: Whether to generate a default UI for managing this post type. show_in_nav_menus: type: boolean description: Whether to make the post type available for selection in navigation menus. icon: type: string description: The icon for the post type. readOnly: true template: type: array description: The block template associated with the post type. readOnly: true template_lock: type: - string - boolean description: The template_lock associated with the post type, or false if none. enum: - all - insert - contentOnly - false readOnly: true Taxonomy: type: object properties: capabilities: type: object description: All capabilities used by the taxonomy. readOnly: true description: type: string description: A human-readable description of the taxonomy. readOnly: true hierarchical: type: boolean description: Whether or not the taxonomy should have children. readOnly: true labels: type: object description: Human-readable labels for the taxonomy for various contexts. readOnly: true name: type: string description: The title for the taxonomy. readOnly: true slug: type: string description: An alphanumeric identifier for the taxonomy. readOnly: true show_cloud: type: boolean description: Whether or not the term cloud should be displayed. readOnly: true types: type: array description: Types associated with the taxonomy. readOnly: true items: type: string rest_base: type: string description: REST base route for the taxonomy. readOnly: true rest_namespace: type: string description: REST namespace route for the taxonomy. readOnly: true visibility: type: object description: The visibility settings for the taxonomy. readOnly: true properties: public: type: boolean description: Whether a taxonomy is intended for use publicly either via the admin interface or by front-end users. publicly_queryable: type: boolean description: Whether the taxonomy is publicly queryable. show_ui: type: boolean description: Whether to generate a default UI for managing this taxonomy. show_admin_column: type: boolean description: Whether to allow automatic creation of taxonomy columns on associated post-types table. show_in_nav_menus: type: boolean description: Whether to make the taxonomy available for selection in navigation menus. show_in_quick_edit: type: boolean description: Whether to show the taxonomy in the quick/bulk edit panel.