openapi: 3.1.0 info: title: CUTISS Posts API description: 'Read CUTISS blog posts from cutiss.swiss as JSON, with date, slug, category and search filtering. 278 posts 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: Posts description: Read CUTISS blog posts from cutiss.swiss as JSON, with date, slug, category and search filtering. 278 posts published at probe time. paths: /posts: get: operationId: listPosts summary: List posts objects description: Returns a paginated collection of posts objects from cutiss.swiss. Pagination totals are returned in the X-WP-Total and X-WP-TotalPages response headers. tags: - Posts 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: categories in: query description: Limit result set to items with specific terms assigned in the categories taxonomy. schema: type: object - name: categories_exclude in: query description: Limit result set to items, except those with specific terms assigned in the categories taxonomy. schema: type: object - 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: format in: query description: Limit result set to items assigned one or more given formats. schema: type: array items: type: string enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio - name: ignore_sticky in: query description: Whether to ignore sticky posts or not. schema: type: boolean default: true - name: include in: query description: Limit result set to specific IDs. schema: type: array items: type: integer - 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: 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: - publish - future - draft - pending - private - trash - auto-draft - inherit - request-pending - request-confirmed - request-failed - request-completed - acf-disabled - dp-rewrite-republish - email_sent - email_failed - email_scheduled - any default: publish - name: sticky in: query description: Limit result set to items that are sticky. schema: type: boolean - name: tags in: query description: Limit result set to items with specific terms assigned in the tags taxonomy. schema: type: object - name: tags_exclude in: query description: Limit result set to items, except those with specific terms assigned in the tags taxonomy. schema: type: object - name: tax_relation in: query description: Limit result set based on relationship between multiple taxonomies. schema: type: string enum: - AND - OR 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/Post' '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' /posts/{id}: get: operationId: getPostsItem summary: Retrieve a single posts object by id description: Returns one posts object from cutiss.swiss by its numeric WordPress id. tags: - Posts 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: Successful response. content: application/json: schema: $ref: '#/components/schemas/Post' '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: Post: 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 content: type: object properties: rendered: type: string protected: type: boolean excerpt: type: object properties: rendered: type: string protected: type: boolean author: type: integer featured_media: type: integer comment_status: type: string ping_status: type: string sticky: type: boolean template: type: string format: 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 footnotes: type: string categories: type: array items: {} tags: type: array items: {} class_list: type: array items: {} acf: type: array items: {} 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/posts?per_page=1 verified_total: 278 note: Parameters derived verbatim from the live route index args; schema properties derived from a live sample response. No properties were invented.