openapi: 3.1.0 info: title: Eridu Media API version: 1.0.0 summary: Anonymous read access to the eridu.ai media library description: 'Anonymous read access to the eridu.ai media library — logos, leadership portraits, diagrams and press imagery with their generated size variants. Eridu publishes no developer program, no developer portal and no product API. This document is an API Evangelist derivation of the only machine-readable interface the company serves — the WordPress core REST API behind eridu.ai — captured from the provider''s own live self-describing route index on 2026-08-12. It is read-only and anonymously readable; write methods exist on the same routes but require a WordPress user with an application password.' contact: name: Eridu url: https://eridu.ai/contact/ termsOfService: https://eridu.ai/terms-of-use/ x-apievangelist-derived-from: https://eridu.ai/wp-json/ x-apievangelist-derived-on: '2026-08-12' servers: - url: https://eridu.ai/wp-json description: Eridu WordPress REST API tags: - name: Media description: Anonymous read access to the eridu.ai media library — logos, leadership portraits, diagrams and press imagery with their generated size variants. security: [] paths: /wp/v2/media: get: operationId: listMedia summary: List media description: List media attachments in the eridu.ai library. tags: - Media security: [] responses: '200': description: Successful response. content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaItem' headers: X-WP-Total: description: Total number of matching records across all pages. schema: type: integer X-WP-TotalPages: description: Total number of pages available at the current per_page size. schema: type: integer '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' parameters: - name: after in: query required: false description: Limit response to posts published after a given ISO8601 compliant date. schema: type: string format: date-time - name: author in: query required: false description: Limit result set to posts assigned to specific authors. schema: type: array items: type: integer default: [] - name: author_exclude in: query required: false description: Ensure result set excludes posts assigned to specific authors. schema: type: array items: type: integer default: [] - name: before in: query required: false description: Limit response to posts published before a given ISO8601 compliant date. schema: type: string format: date-time - name: context in: query required: false description: Scope under which the request is made; determines fields present in response. schema: type: string enum: - view - embed - edit default: view - name: exclude in: query required: false description: Ensure result set excludes specific IDs. schema: type: array items: type: integer default: [] - name: include in: query required: false description: Limit result set to specific IDs. schema: type: array items: type: integer default: [] - name: media_type in: query required: false description: Limit result set to attachments of a particular media type or media types. schema: type: array items: type: string enum: - image - video - text - application - audio - name: mime_type in: query required: false description: Limit result set to attachments of a particular MIME type or MIME types. schema: type: array items: type: string - name: modified_after in: query required: false description: Limit response to posts modified after a given ISO8601 compliant date. schema: type: string format: date-time - name: modified_before in: query required: false description: Limit response to posts modified before a given ISO8601 compliant date. schema: type: string format: date-time - name: offset in: query required: false description: Offset the result set by a specific number of items. schema: type: integer - name: order in: query required: false description: Order sort attribute ascending or descending. schema: type: string enum: - asc - desc default: desc - name: orderby in: query required: false description: Sort collection by post attribute. schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title default: date - name: page in: query required: false description: Current page of the collection. schema: type: integer default: 1 minimum: 1 - name: parent in: query required: false description: Limit result set to items with particular parent IDs. schema: type: array items: type: integer default: [] - name: parent_exclude in: query required: false description: Limit result set to all items except those of a particular parent ID. schema: type: array items: type: integer default: [] - name: per_page in: query required: false description: Maximum number of items to be returned in result set. schema: type: integer default: 10 minimum: 1 maximum: 100 - name: search in: query required: false description: Limit results to those matching a string. schema: type: string - name: search_columns in: query required: false description: Array of column names to be searched. schema: type: array items: type: string enum: - post_title - post_content - post_excerpt default: [] - name: search_semantics in: query required: false description: How to interpret the search input. schema: type: string enum: - exact - name: slug in: query required: false description: Limit result set to posts with one or more specific slugs. schema: type: array items: type: string - name: status in: query required: false description: Limit result set to posts assigned one or more statuses. schema: type: array items: type: string enum: - inherit - private - trash /wp/v2/media/{id}: get: operationId: getMediaItem summary: Get a media item description: Retrieve a single media attachment by id. tags: - Media security: [] responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/MediaItem' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' parameters: - name: id in: path required: true description: Unique identifier for the post. schema: type: integer - name: context in: query required: false description: Scope under which the request is made; determines fields present in response. schema: type: string enum: - view - embed - edit default: view components: securitySchemes: applicationPassword: type: http scheme: basic description: 'WordPress application passwords (HTTP Basic: username + application password). Advertised by the site''s own API index at https://eridu.ai/wp-json/ under `authentication.application-passwords`. Required only for write methods and non-public contexts; every operation in this document is anonymously readable.' schemas: MediaItem: type: object description: A media record as returned by the WordPress core REST API. Field-level schemas are published by the endpoint itself via the OPTIONS method and the `context=edit` schema; they are not restated here so this document never diverges from the live contract. additionalProperties: true Error: type: object description: The WordPress REST API error envelope. 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 description: Error data, carrying the HTTP status and, for validation failures, per-parameter details. properties: status: type: integer description: The HTTP status code. additionalProperties: true required: - code - message responses: BadRequest: description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication is required for the requested context. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: No record matches the supplied identifier. content: application/json: schema: $ref: '#/components/schemas/Error'