openapi: 3.1.0 info: title: Metalenz Press Releases API version: wp/v2 description: 'Public, unauthenticated read access to the Metalenz newsroom archive via the WordPress core REST API. The `post` content type on metalenz.com is registered with the label "Press Releases" and carries the company''s press releases, product announcements and media-coverage notices (26 published items at capture). 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: Press Releases description: Metalenz press releases, product announcements and newsroom items. paths: /wp/v2/posts: get: operationId: listPressReleases summary: List press releases tags: - Press Releases description: Retrieve a paginated collection of published Metalenz press releases (26 at capture). parameters: - name: after in: query schema: type: string format: date-time description: Limit response to posts published after a given ISO8601 compliant date. - name: author in: query schema: type: array items: type: integer default: [] description: Limit result set to posts assigned to specific authors. - name: author_exclude in: query schema: type: array items: type: integer default: [] description: Ensure result set excludes posts assigned to specific authors. - name: before in: query schema: type: string format: date-time description: Limit response to posts published before a given ISO8601 compliant date. - name: categories in: query schema: type: - object - array description: Limit result set to items with specific terms assigned in the categories taxonomy. - name: categories_exclude in: query schema: type: - object - array description: Limit result set to items except those with specific terms assigned in the categories taxonomy. - 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: format in: query schema: type: array items: enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio type: string description: Limit result set to items assigned one or more given formats. - name: ignore_sticky in: query schema: type: boolean default: true description: Whether to ignore sticky posts or not. - name: include in: query schema: type: array items: type: integer default: [] description: Limit result set to specific IDs. - name: modified_after in: query schema: type: string format: date-time description: Limit response to posts modified after a given ISO8601 compliant date. - name: modified_before in: query schema: type: string format: date-time description: Limit response to posts modified before a given ISO8601 compliant date. - 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: desc description: Order sort attribute ascending or descending. - name: orderby in: query schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title default: date description: Sort collection by post 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: search in: query schema: type: string description: Limit results to those matching a string. - name: search_columns in: query schema: type: array items: enum: - post_title - post_content - post_excerpt type: string default: [] description: Array of column names to be searched. - name: search_semantics in: query schema: type: string enum: - exact description: How to interpret the search input. - name: slug in: query schema: type: array items: type: string description: Limit result set to posts with one or more specific slugs. - name: status in: query schema: type: array items: enum: - publish - future - draft - pending - private - trash - auto-draft - inherit - request-pending - request-confirmed - request-failed - request-completed - acf-disabled - dp-rewrite-republish - any type: string default: publish description: Limit result set to posts assigned one or more statuses. - name: sticky in: query schema: type: boolean description: Limit result set to items that are sticky. - name: tags in: query schema: type: - object - array description: Limit result set to items with specific terms assigned in the tags taxonomy. - name: tags_exclude in: query schema: type: - object - array description: Limit result set to items except those with specific terms assigned in the tags taxonomy. - name: tax_relation in: query schema: type: string enum: - AND - OR description: Limit result set based on relationship between multiple taxonomies. responses: '200': description: List press releases 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/Post' '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/posts/{id}: get: operationId: getPressRelease summary: Get press release tags: - Press Releases description: Retrieve a single Metalenz press release by its numeric WordPress ID. parameters: - name: id in: path required: true schema: type: integer description: Unique identifier for the post. - 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: excerpt_length in: query schema: type: integer description: Override the default excerpt length. - name: password in: query schema: type: string description: The password for the post if it is password protected. responses: '200': description: Get press release content: application/json: schema: $ref: '#/components/schemas/Post' '400': description: Invalid parameter(s) — rest_invalid_param. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No post exists with that ID — rest_post_invalid_id. 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 Post: title: post type: object properties: date: description: The date the post was published, in the site's timezone. type: - string - 'null' format: date-time date_gmt: description: The date the post was published, as GMT. type: - string - 'null' format: date-time guid: description: The globally unique identifier for the post. type: object readOnly: true properties: raw: description: GUID for the post, as it exists in the database. type: string readOnly: true rendered: description: GUID for the post, transformed for display. type: string readOnly: true id: description: Unique identifier for the post. type: integer readOnly: true link: description: URL to the post. type: string format: uri readOnly: true modified: description: The date the post was last modified, in the site's timezone. type: string format: date-time readOnly: true modified_gmt: description: The date the post was last modified, as GMT. type: string format: date-time readOnly: true slug: description: An alphanumeric identifier for the post unique to its type. type: string status: description: A named status for the post. type: string enum: - publish - future - draft - pending - private - acf-disabled type: description: Type of post. type: string readOnly: true password: description: A password to protect access to the content and excerpt. type: string permalink_template: description: Permalink template for the post. type: string readOnly: true generated_slug: description: Slug automatically generated from the post title. type: string readOnly: true class_list: description: An array of the class names for the post container element. type: array readOnly: true items: type: string title: description: The title for the post. type: object properties: raw: description: Title for the post, as it exists in the database. type: string rendered: description: HTML title for the post, transformed for display. type: string readOnly: true content: description: The content for the post. type: object properties: raw: description: Content for the post, as it exists in the database. type: string rendered: description: HTML content for the post, transformed for display. type: string readOnly: true block_version: description: Version of the content block format used by the post. type: integer readOnly: true protected: description: Whether the content is protected with a password. type: boolean readOnly: true author: description: The ID for the author of the post. type: integer excerpt: description: The excerpt for the post. type: object properties: raw: description: Excerpt for the post, as it exists in the database. type: string rendered: description: HTML excerpt for the post, transformed for display. type: string readOnly: true protected: description: Whether the excerpt is protected with a password. type: boolean readOnly: true featured_media: description: The ID of the featured media for the post. type: integer comment_status: description: Whether or not comments are open on the post. type: string enum: - open - closed ping_status: description: Whether or not the post can be pinged. type: string enum: - open - closed format: description: The format for the post. type: string enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio meta: description: Meta fields. type: object properties: _acf_changed: type: boolean title: '' description: '' default: false content-type: type: string title: '' description: '' default: '' rank_math_lock_modified_date: type: boolean title: '' description: '' default: false _sitemap_exclude: type: boolean title: '' description: '' default: false _sitemap_priority: type: string title: '' description: '' default: '' _sitemap_frequency: type: string title: '' description: '' default: '' footnotes: type: string title: '' description: '' default: '' sticky: description: Whether or not the post should be treated as sticky. type: boolean template: description: The theme file to use to display the post. type: string categories: description: The terms assigned to the post in the category taxonomy. type: array items: type: integer tags: description: The terms assigned to the post in the post_tag taxonomy. type: array items: type: integer acf: description: ACF field data type: object links: - rel: https://api.w.org/action-publish title: The current user can publish this post. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: status: type: string enum: - publish - future - rel: https://api.w.org/action-unfiltered-html title: The current user can post unfiltered HTML markup and JavaScript. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: content: raw: type: string - rel: https://api.w.org/action-sticky title: The current user can sticky this post. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: sticky: type: boolean - rel: https://api.w.org/action-assign-author title: The current user can change the author on this post. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: author: type: integer - rel: https://api.w.org/action-assign-categories title: The current user can assign terms in the category taxonomy. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: categories: type: array items: type: integer - rel: https://api.w.org/action-create-categories title: The current user can create terms in the category taxonomy. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: categories: type: array items: type: integer - rel: https://api.w.org/action-assign-tags title: The current user can assign terms in the post_tag taxonomy. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: tags: type: array items: type: integer - rel: https://api.w.org/action-create-tags title: The current user can create terms in the post_tag taxonomy. href: https://metalenz.com/wp-json/wp/v2/posts/{id} targetSchema: type: object properties: tags: type: array items: type: integer