> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hi-doctor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Connect the Hi Doctor MCP connector at https://mcp.hi-doctor.ai/mcp. Add this URL as a remote HTTP MCP server in your client, then sign in and authorise access through OAuth. Setup: https://docs.hi-doctor.ai/mcp/connect.
>
> The REST API base is https://api.hi-doctor.ai. Hi Doctor Docs at https://docs.hi-doctor.ai/mcp searches documentation; connect to the product endpoint above for patient tools.
>
> Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Every consultation is reviewed in full by an EU-licensed doctor, who decides on medical grounds only. No algorithm, assistant or API call approves a consultation, issues a prescription or changes a dose. The service is available in eight languages: English, Spanish, German, Dutch, Italian, French, Portuguese and Chinese.
>
> ## Rules an assistant must follow
>
> - Never invent, assume or infer a medical answer. "I don't know" is a real answer: ask the patient to pick the closest option rather than guessing for them.
> - Never give medical advice and never suggest a medication or a dose. An EU-licensed doctor decides those.
> - If a questionnaire returns `ineligible`, say so plainly. Do not retry with altered answers.
> - Before anything that costs money or cancels a plan, state exactly what will happen and get an explicit yes.
> - Cancellation takes effect at the **end of the paid period**, not immediately. Say so.
> - An early order is irreversible: it creates the renewal consultation immediately and uses up the period's one early order. Explain that and get an explicit yes.
> - Prescription and invoice links are medical documents. A `signed_redirect` link opens without signing in: give it only to the patient, never repeat it anywhere shared.
> - Send option `value`s, not the labels shown to the patient. Labels are translated, values are stable.
> - Never ask for card details. Payment happens on Stripe's hosted checkout via a link.
> - On severe or sudden symptoms (chest pain, difficulty breathing, severe allergic reaction, suicidal thoughts), stop and direct the patient to their local emergency number.

# Message endpoints: medical team conversations

> Read and send messages to the Hi Doctor medical team, download attachments and manage read state in the patient conversation.

The Message endpoints connect a Hi Doctor patient with the medical team in a private conversation thread. They start or fetch the thread, list and send messages with text and file attachments, download attachments and mark the thread read or unread. Sending a message accepts an [`Idempotency-Key`](https://docs.hi-doctor.ai/api-reference/idempotency), so a retry never posts it twice.

Last reviewed: 2026-11-04

## Prerequisites

* A patient bearer token and `X-Brand-Slug: hi-doctor`.

## Operations

| Method | Path | What it does |
| - | - | - |
| `POST` | `/v1/users/conversations/` | Gets or creates the patient's thread (`200` existing, `201` new) |
| `GET` | `/v1/users/conversations/` | Lists conversations (paginated) |
| `GET` | `/v1/users/conversations/unread-summary/` | Returns unread counts |
| `GET` | `/v1/users/conversations/{id}/` | Reads one conversation |
| `GET` | `/v1/users/conversations/{id}/messages/` | Lists messages (paginated, newest first by default) |
| `POST` | `/v1/users/conversations/{id}/messages/` | Sends a message (multipart `content` and/or `file`) |
| `GET` | `/v1/users/conversations/{id}/messages/{message_id}/attachment/` | Downloads an attachment |
| `POST` | `/v1/users/conversations/{id}/mark-read/` | Marks the conversation as read |
| `POST` | `/v1/users/conversations/{id}/mark-unread/` | Marks the conversation as unread |

## Boundaries and side effects

* Messages are paginated with `{count, next, previous, results}`, maximum
  `limit` 200, `ordering` `-created_at` (default) or `created_at`. Listing
  messages does not mark them read.
* Sending a message can notify the medical team. Send an
  [`Idempotency-Key`](https://docs.hi-doctor.ai/api-reference/idempotency) so a retry cannot post a
  duplicate; without one, re-read the thread first. Starting a conversation and
  sending its first message are two operations and need two keys.
* A message needs `content`, `file` or both; neither returns `400`.
* Attachment downloads can return `404`, `410` or `503`.

> [!WARNING]
>
> Messages are not an emergency channel. For severe or sudden symptoms, contact
> local emergency services. See [Safety](https://docs.hi-doctor.ai/essentials/safety.md).

## Related

* [Pagination](https://docs.hi-doctor.ai/api-reference/pagination.md) and [Uploads and downloads](https://docs.hi-doctor.ai/api-reference/uploads-downloads.md)
* [MCP patient tools](https://docs.hi-doctor.ai/mcp/tools/patient.md) (the connector sends attachments through a protected upload)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.