openapi: 3.1.0 info: title: Impossible Metals Pages API version: wp/v2 description: Public, unauthenticated read access to the static pages of impossiblemetals.com (93 published pages at capture on 2026-08-23) — Technology, Sustainability, About, Markets, Partners, Board & Advisors, Policies & Reports, Careers and Contact — via the WordPress core REST API. 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: Pages description: Static marketing, technology, sustainability and policy pages. paths: /wp/v2/pages: get: operationId: listPages summary: List pages description: Retrieve a paginated collection of published pages. 93 pages were live at capture. tags: - Pages 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: after in: query description: Limit response to posts published after a given ISO8601 compliant date. schema: type: string format: date-time - name: modified_after in: query description: Limit response to posts modified after a given ISO8601 compliant date. schema: type: string format: date-time - name: author in: query description: Limit result set to posts assigned to specific authors. schema: type: array default: [] items: type: integer - name: author_exclude in: query description: Ensure result set excludes posts assigned to specific authors. schema: type: array default: [] items: type: integer - name: before in: query description: Limit response to posts published before a given ISO8601 compliant date. schema: type: string format: date-time - name: modified_before in: query description: Limit response to posts modified before a given ISO8601 compliant date. schema: type: string format: date-time - 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: menu_order in: query description: Limit result set to posts with a specific menu_order value. schema: type: integer - name: search_semantics in: query description: How to interpret the search input. schema: type: string enum: - exact - 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: desc - name: orderby in: query description: Sort collection by post attribute. schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title - menu_order default: date - name: parent in: query description: Limit result set to items with particular parent IDs. schema: type: array default: [] 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 default: [] items: type: integer - name: search_columns in: query description: Array of column names to be searched. schema: type: array default: [] items: enum: - post_title - post_content - post_excerpt type: string - name: slug in: query description: Limit result set to posts with one or more specific slugs. schema: type: array items: type: string - name: status in: query description: Limit result set to posts assigned one or more statuses. schema: type: array default: publish items: enum: - publish - future - draft - pending - private - trash - auto-draft - inherit - request-pending - request-confirmed - request-failed - request-completed - tribe-ea-success - tribe-ea-failed - tribe-ea-schedule - tribe-ea-pending - tribe-ea-draft - tribe-ignored - any type: string responses: '200': description: List pages — success. headers: 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/Page' '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/pages/{id}: get: operationId: getPage summary: Get a page description: Retrieve a single published page by its numeric identifier. tags: - Pages parameters: - name: id in: path description: Unique identifier for the post. 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 - name: excerpt_length in: query description: Override the default excerpt length. schema: type: integer - name: password in: query description: The password for the post if it is password protected. schema: type: string responses: '200': description: Get a page — success. content: application/json: schema: type: object '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. Page: type: object properties: date: type: string description: The date the post was published, in the site's timezone. format: date-time date_gmt: type: string description: The date the post was published, as GMT. format: date-time guid: type: object description: The globally unique identifier for the post. readOnly: true properties: raw: type: string description: GUID for the post, as it exists in the database. readOnly: true rendered: type: string description: GUID for the post, transformed for display. readOnly: true id: type: integer description: Unique identifier for the post. readOnly: true link: type: string description: URL to the post. format: uri readOnly: true modified: type: string description: The date the post was last modified, in the site's timezone. format: date-time readOnly: true modified_gmt: type: string description: The date the post was last modified, as GMT. format: date-time readOnly: true slug: type: string description: An alphanumeric identifier for the post unique to its type. status: type: string description: A named status for the post. enum: - publish - future - draft - pending - private - tribe-ea-success - tribe-ea-failed - tribe-ea-schedule - tribe-ea-pending - tribe-ea-draft - tribe-ignored type: type: string description: Type of post. readOnly: true password: type: string description: A password to protect access to the content and excerpt. permalink_template: type: string description: Permalink template for the post. readOnly: true generated_slug: type: string description: Slug automatically generated from the post title. readOnly: true class_list: type: array description: An array of the class names for the post container element. readOnly: true items: type: string parent: type: integer description: The ID for the parent of the post. title: type: object description: The title for the post. properties: raw: type: string description: Title for the post, as it exists in the database. rendered: type: string description: HTML title for the post, transformed for display. readOnly: true content: type: object description: The content for the post. properties: raw: type: string description: Content for the post, as it exists in the database. rendered: type: string description: HTML content for the post, transformed for display. readOnly: true block_version: type: integer description: Version of the content block format used by the post. readOnly: true protected: type: boolean description: Whether the content is protected with a password. readOnly: true author: type: integer description: The ID for the author of the post. excerpt: type: object description: The excerpt for the post. properties: raw: type: string description: Excerpt for the post, as it exists in the database. rendered: type: string description: HTML excerpt for the post, transformed for display. readOnly: true protected: type: boolean description: Whether the excerpt is protected with a password. readOnly: true featured_media: type: integer description: The ID of the featured media for the post. comment_status: type: string description: Whether or not comments are open on the post. enum: - open - closed ping_status: type: string description: Whether or not the post can be pinged. enum: - open - closed menu_order: type: integer description: The order of the post in relation to other posts. meta: type: object description: Meta fields. properties: inline_featured_image: type: boolean footnotes: type: string template: type: string description: The theme file to use to display the post.