---
title: "Read one patient's visible conversations"
method: GET
path: "/api/sites/patient/messages"
tags: ["Messaging"]
---

# Read one patient's visible conversations

`GET /api/sites/patient/messages`

## Request

- Base URL: `https://sim.animahealth.com`
- URL: `https://sim.animahealth.com/api/sites/patient/messages`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - API key in cookie `sim_session`

Requires GP scope. Team keys stay in their own world. Returns conversations in storage order. Patient reads omit internal notes, assignments, queued/failed outgoing messages and automation configuration. The team key permits role-playing synthetic patients; this is not patient identity authentication. Templates remain available through the practice messaging-workspace operation.

## Query parameters

- `patientId` string, required
- `offset` integer
- `limit` integer
- `world` string

## Response `200`

Success

- ConversationsPage
  - `items` Conversation[], required
    - `id` string, required
    - `patientId` string
    - `kind` 'conversation', required
    - `title` string, required
    - `status` string, required
    - `owner` 'gp', required
    - `visibleTo` string[], required
    - `priority` 'routine' | 'urgent', required
    - `createdAt` number, required: Simulation Unix timestamp in milliseconds.
    - `dueAt` number: Simulation Unix timestamp in milliseconds.
    - `data` object, required: Kind-specific payload. Hospital notes, medication orders and blood-test orders use the named schemas; the full workspace payload is returned without projection.
      - `assignee` string, required
      - `allowReply` boolean, required
      - `entries` union[], required
        - union
          - object
            - `id` string, required
            - `body` string, required
            - `at` number, required
            - `actor` object, required
              - …
            - `direction` 'outgoing', required
            - `channel` 'sms' | 'email', required
            - `delivery` object[], required
              - …
          - object
            - `id` string, required
            - `body` string, required
            - `at` number, required
            - `actor` object, required
              - …
            - `direction` 'incoming', required
            - `channel` 'sms' | 'email', required
          - object
            - `id` string, required
            - `body` string, required
            - `at` number, required
            - `actor` object, required
              - …
            - `direction` 'internal', required
      - `autoReply` object
        - `steps` object[], required
          - `body` string, required
          - `delayMinutes` number, required
        - `nextStep` integer, required
        - `pending` object[], required
          - `entryId` string, required
          - `stepIndex` integer, required
          - `at` number, required
    - `version` integer, required
    - `provenance` object
      - `created` RecordChange, required
        - `actor` object, required
          - `kind` 'team' | 'operator' | 'simulation', required
          - `name` string, required
        - `source` string, required
        - `action` string, required
        - `time` number, required: Simulation Unix timestamp in milliseconds.
        - `version` integer, required
      - `changes` RecordChange[], required
        - `actor` object, required
          - `kind` 'team' | 'operator' | 'simulation', required
          - `name` string, required
        - `source` string, required
        - `action` string, required
        - `time` number, required: Simulation Unix timestamp in milliseconds.
        - `version` integer, required
      - `recovery` object
  - `total` integer, required
  - `offset` integer, required
  - `limit` integer, required
  - `now` number, required: Simulation Unix timestamp in milliseconds.

## Other responses

- `400`: Invalid input or unsupported workflow
- `401`: Missing or invalid credentials
- `403`: Scope, origin or operator restriction
- `404`: Unknown resource
- `409`: Stale version, invalid transition or unavailable capacity
- `413`: Request exceeds this operation's body-size limit
- `429`: Deployment has reached its 5,000-team capacity
- `500`: Internal simulation error

---

[API](https://skmtc.dev/animahealth/apis/nhs-sim-api.md) - [All operations](https://skmtc.dev/animahealth/apis/nhs-sim-api/llms.txt) - [OpenAPI document](https://skmtc.dev/animahealth/apis/nhs-sim-api/revisions/c7803d7a3e58?raw)
