openapi: 3.1.0 info: title: CUTISS Media API description: 'Read the CUTISS media library — images, documents and press assets attached to pages, posts and newsroom items — as JSON with their rendered source URLs and size variants. 842 items published at probe time. This is the WordPress REST API that serves cutiss.swiss. CUTISS publishes no product or developer API; this content surface is the only machine-readable API on the company''s public host. It is read-only without credentials — every write method and every administrative collection returns HTTP 401 `rest_forbidden`. Derived by API Evangelist from the live route index at https://cutiss.swiss/wp-json/ and live sample responses on 2026-08-11.' version: 1.0.0 contact: name: CUTISS AG email: info@cutiss.swiss url: https://cutiss.swiss/contact/ license: name: Proprietary — content © CUTISS AG url: https://cutiss.swiss/impressum-en/ servers: - url: https://cutiss.swiss/wp-json/wp/v2 description: CUTISS WordPress REST API (wp/v2 namespace) tags: - name: Media description: Read the CUTISS media library — images, documents and press assets attached to pages, posts and newsroom items — as JSON with their rendered source URLs and size variants. 842 items published at probe time. paths: /media: get: operationId: listMedia summary: List media objects description: Returns a paginated collection of media objects from cutiss.swiss. Pagination totals are returned in the X-WP-Total and X-WP-TotalPages response headers. tags: - Media parameters: - name: after in: query description: Limit response to posts published after a given ISO8601 compliant date. schema: type: string - name: author in: query description: Limit result set to posts assigned to specific authors. schema: type: array items: type: integer - name: author_exclude in: query description: Ensure result set excludes posts assigned to specific authors. schema: type: array items: type: integer - name: before in: query description: Limit response to posts published before a given ISO8601 compliant date. schema: type: string - 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: exclude in: query description: Ensure result set excludes specific IDs. schema: type: array items: type: integer - name: include in: query description: Limit result set to specific IDs. schema: type: array items: type: integer - name: media_type in: query 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 default: null - name: mime_type in: query description: Limit result set to attachments of a particular MIME type or MIME types. schema: type: array items: type: string default: null - name: modified_after in: query description: Limit response to posts modified after a given ISO8601 compliant date. schema: type: string - name: modified_before in: query description: Limit response to posts modified before a given ISO8601 compliant date. schema: type: string - 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 default: date - name: page in: query description: Current page of the collection. schema: type: integer default: 1 - name: parent in: query description: Limit result set to items with particular parent IDs. schema: type: array 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 items: type: integer - name: per_page in: query description: Maximum number of items to be returned in result set. schema: type: integer default: 10 - name: search in: query description: Limit results to those matching a string. schema: type: string - name: search_columns in: query description: Array of column names to be searched. schema: type: array items: type: string enum: - post_title - post_content - post_excerpt - name: search_semantics in: query description: How to interpret the search input. schema: type: string enum: - exact - 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 items: type: string enum: - inherit - private - trash default: inherit responses: '200': description: Successful response. headers: X-WP-Total: description: Total number of objects in the collection. schema: type: integer X-WP-TotalPages: description: Total number of pages available at the requested per_page size. schema: type: integer content: application/json: schema: type: array items: $ref: '#/components/schemas/MediaItem' '400': description: Invalid parameter. Returns a WordPress REST error object with code `rest_invalid_param`. content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Not authorized. Returns `rest_forbidden` — the requested context or resource requires authentication. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No route or object matched. Returns `rest_no_route` or `rest_post_invalid_id`. content: application/json: schema: $ref: '#/components/schemas/Error' /media/{id}: get: operationId: getMediaItem summary: Retrieve a single media object by id description: Returns one media object from cutiss.swiss by its numeric WordPress id. tags: - Media 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 responses: '200': description: Successful response. content: application/json: schema: $ref: '#/components/schemas/MediaItem' '400': description: Invalid parameter. Returns a WordPress REST error object with code `rest_invalid_param`. content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Not authorized. Returns `rest_forbidden` — the requested context or resource requires authentication. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No route or object matched. Returns `rest_no_route` or `rest_post_invalid_id`. content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: MediaItem: type: object properties: id: type: integer date: type: string date_gmt: type: string guid: type: object properties: rendered: type: string modified: type: string modified_gmt: type: string slug: type: string status: type: string type: type: string link: type: string title: type: object properties: rendered: type: string author: type: integer featured_media: type: integer comment_status: type: string ping_status: type: string template: type: string meta: type: object properties: site-sidebar-layout: type: string site-content-layout: type: string ast-site-content-layout: type: string site-content-style: type: string site-sidebar-style: type: string ast-global-header-display: type: string ast-banner-title-visibility: type: string ast-main-header-display: type: string ast-hfb-above-header-display: type: string ast-hfb-below-header-display: type: string ast-hfb-mobile-header-display: type: string site-post-title: type: string ast-breadcrumbs-content: type: string ast-featured-img: type: string footer-sml-layout: type: string ast-disable-related-posts: type: string theme-transparent-header-meta: type: string adv-header-id-meta: type: string stick-header-meta: type: string header-above-stick-meta: type: string header-main-stick-meta: type: string header-below-stick-meta: type: string astra-migrate-meta-layouts: type: string ast-page-background-enabled: type: string ast-page-background-meta: type: object properties: desktop: type: object properties: background-color: type: string background-image: type: string background-repeat: type: string background-position: type: string background-size: type: string background-attachment: type: string background-type: type: string background-media: type: string overlay-type: type: string overlay-color: type: string overlay-opacity: type: string overlay-gradient: type: string tablet: type: object properties: background-color: type: string background-image: type: string background-repeat: type: string background-position: type: string background-size: type: string background-attachment: type: string background-type: type: string background-media: type: string overlay-type: type: string overlay-color: type: string overlay-opacity: type: string overlay-gradient: type: string mobile: type: object properties: background-color: type: string background-image: type: string background-repeat: type: string background-position: type: string background-size: type: string background-attachment: type: string background-type: type: string background-media: type: string overlay-type: type: string overlay-color: type: string overlay-opacity: type: string overlay-gradient: type: string ast-content-background-meta: type: object properties: desktop: type: object properties: background-color: type: string background-image: type: string background-repeat: type: string background-position: type: string background-size: type: string background-attachment: type: string background-type: type: string background-media: type: string overlay-type: type: string overlay-color: type: string overlay-opacity: type: string overlay-gradient: type: string tablet: type: object properties: background-color: type: string background-image: type: string background-repeat: type: string background-position: type: string background-size: type: string background-attachment: type: string background-type: type: string background-media: type: string overlay-type: type: string overlay-color: type: string overlay-opacity: type: string overlay-gradient: type: string mobile: type: object properties: background-color: type: string background-image: type: string background-repeat: type: string background-position: type: string background-size: type: string background-attachment: type: string background-type: type: string background-media: type: string overlay-type: type: string overlay-color: type: string overlay-opacity: type: string overlay-gradient: type: string class_list: type: array items: {} acf: type: array items: {} description: type: object properties: rendered: type: string caption: type: object properties: rendered: type: string alt_text: type: string media_type: type: string mime_type: type: string media_details: type: object properties: width: type: integer height: type: integer file: type: string filesize: type: integer sizes: type: object properties: medium: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string large: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string thumbnail: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string medium_large: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string 1536x1536: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string 2048x2048: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string full: type: object properties: file: type: string width: type: integer height: type: integer mime_type: type: string source_url: type: string image_meta: type: object properties: aperture: type: string credit: type: string camera: type: string caption: type: string created_timestamp: type: string copyright: type: string focal_length: type: string iso: type: string shutter_speed: type: string title: type: string orientation: type: string keywords: type: array items: {} alt: type: string original_image: type: string post: type: integer source_url: type: string filename: type: string filesize: type: integer Error: type: object description: The WordPress REST API error envelope returned on every 4xx/5xx response. properties: code: type: string description: Machine-readable error code, e.g. rest_forbidden. message: type: string description: Human-readable message. Localized — cutiss.swiss returns German text. data: type: object description: Error detail. properties: status: type: integer description: HTTP status code. required: - code - message x-evidence: fetched: '2026-08-11' route_index: https://cutiss.swiss/wp-json/ sample_request: https://cutiss.swiss/wp-json/wp/v2/media?per_page=1 verified_total: 842 note: Parameters derived verbatim from the live route index args; schema properties derived from a live sample response. No properties were invented.