openapi: 3.2.0 info: title: Circle Pharma Content API (WordPress REST API) Pages API version: wp/v2 description: Anonymously readable content API for circlepharma.com, derived from the WordPress REST API route index the site publishes at https://circlepharma.com/wp-json/. It exposes Circle Pharma press releases, publications, in-the-news items and pages (posts/pages), the media library, the leadership/board roster (team + member_type), the events calendar (all_events + event_type), and site search. Circle Pharma does not publish a developer program or a hand-authored specification; this document is a faithful derivation of the routes, parameters and defaults the site itself advertises, restricted to the read operations verified to return HTTP 200 without credentials. Write operations exist on the same routes but are authenticated administrative endpoints, not a public API offering, and are deliberately not modelled here. contact: name: Circle Pharma email: info@circlepharma.com url: https://circlepharma.com/contact-us x-derived-from: https://circlepharma.com/wp-json/ x-derived-on: '2026-08-01' x-api-evangelist-note: Derived by the API Evangelist enrichment pipeline from the provider-published WordPress REST route index; not authored or endorsed by Circle Pharma. servers: - url: https://circlepharma.com/wp-json description: Production security: - {} tags: - name: Pages description: Static site pages (pipeline, science, clinical trials) paths: /wp/v2/pages: get: operationId: listPages tags: - Pages summary: List Page records description: Collection is paginated with `page` and `per_page`; the response carries `X-WP-Total` and `X-WP-TotalPages` headers and RFC 8288 `Link` rel="next"/"prev". parameters: - name: after in: query required: false schema: type: string format: date-time description: Limit response to posts published after a given ISO8601 compliant date. - name: author in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to posts assigned to specific authors. - name: author_exclude in: query required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes posts assigned to specific authors. - name: before in: query required: false schema: type: string format: date-time description: Limit response to posts published before a given ISO8601 compliant date. - name: context in: query required: false 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 required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes specific IDs. - name: include in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to specific IDs. - name: menu_order in: query required: false schema: type: integer description: Limit result set to posts with a specific menu_order value. - name: modified_after in: query required: false schema: type: string format: date-time description: Limit response to posts modified after a given ISO8601 compliant date. - name: modified_before in: query required: false schema: type: string format: date-time description: Limit response to posts modified before a given ISO8601 compliant date. - name: offset in: query required: false schema: type: integer description: Offset the result set by a specific number of items. - name: order in: query required: false schema: type: string enum: - asc - desc default: desc description: Order sort attribute ascending or descending. - name: orderby in: query required: false schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title - menu_order default: date description: Sort collection by post attribute. - name: page in: query required: false schema: type: integer default: 1 minimum: 1 description: Current page of the collection. - name: parent in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to items with particular parent IDs. - name: parent_exclude in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to all items except those of a particular parent ID. - name: per_page in: query required: false schema: type: integer default: 10 minimum: 1 maximum: 100 description: Maximum number of items to be returned in result set. - name: search in: query required: false schema: type: string description: Limit results to those matching a string. - name: search_columns in: query required: false schema: type: array default: [] items: type: string enum: - post_title - post_content - post_excerpt description: Array of column names to be searched. - name: search_semantics in: query required: false schema: type: string enum: - exact description: How to interpret the search input. - name: slug in: query required: false schema: type: array items: type: string description: Limit result set to posts with one or more specific slugs. - name: status in: query required: false schema: type: array default: publish items: type: string enum: - publish - future - draft - pending - private - trash - auto-draft - inherit - request-pending - request-confirmed - request-failed - request-completed - acf-disabled - any description: Limit result set to posts assigned one or more statuses. security: - {} responses: '200': description: A page of Page records headers: X-WP-Total: description: Total number of records schema: type: integer X-WP-TotalPages: description: Total number of pages 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': $ref: '#/components/responses/Error' '404': $ref: '#/components/responses/Error' /wp/v2/pages/{id}: get: operationId: getPage tags: - Pages summary: Get a single Page record parameters: - name: id in: path required: true schema: type: integer description: Unique identifier for the page. - name: context in: query required: false 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 required: false schema: type: integer description: Override the default excerpt length. - name: password in: query required: false schema: type: string description: The password for the post if it is password protected. security: - {} responses: '200': description: The Page record content: application/json: schema: $ref: '#/components/schemas/Page' '404': $ref: '#/components/responses/Error' components: schemas: Error: type: object required: - code - message properties: code: type: string description: Machine-readable WordPress error code. message: type: string description: Human-readable error message. data: type: object properties: status: type: integer description: HTTP status code. params: type: object details: type: object Page: type: object properties: id: type: integer description: Unique identifier for the record. date: type: - string - 'null' format: date-time date_gmt: type: - string - 'null' format: date-time guid: type: object properties: rendered: type: string modified: type: string format: date-time modified_gmt: type: string format: date-time slug: type: string status: type: string type: type: string link: type: string format: uri 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 featured_media: type: integer _links: type: object description: HAL-style link relations. parent: type: integer menu_order: type: integer author: type: integer responses: Error: description: WordPress REST error envelope content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_post_invalid_id message: Invalid post ID. data: status: 404 securitySchemes: applicationPassword: type: http scheme: basic description: WordPress Application Passwords (RFC 7617 Basic over TLS). Required only for write and administrative routes, which are out of scope for this document — every operation modelled here is anonymous.