---
title: "Read Thread"
method: GET
path: "/v1/native/messages"
tags: ["native"]
---

# Read Thread

`GET /v1/native/messages`

## Request

- Base URL: `https://api.mundane.market` (the document declares no server; this is the origin it was published from)
- URL: `https://api.mundane.market/v1/native/messages`
- Auth: none declared

Everything after `since`, plus whether the agent is mid-turn.

Cursor rather than page number: the thread only ever grows at the end, and
a poll that asks for "what is new since 412" cannot skip or repeat a
message the way an offset can when rows land between requests.

`seen` is the console saying the page is in front of someone. It is what
holds back the "your agent wrote" email, and it is a separate flag rather
than implied by the poll because a background tab keeps polling: a
customer who left the tab open and walked away would otherwise never be
told anything.

## Query parameters

- `thread` string, nullable
- `since` integer
- `limit` integer
- `seen` boolean

## Headers

- `authorization` string

## Cookies

- `mundane_principal_session` string, nullable

## Response `200`

Successful Response

- ThreadOut
  - `conversation_id` string, required
  - `status` string, required
  - `messages` MessageOut[], required
    - `id` integer, required
    - `direction` string, required
    - `body` string, required
    - `media_urls` string[], required
    - `created_at` string, required
  - `agent_working` boolean, required
  - `cursor` integer, required
  - `proposal` ProposalOut: An offer waiting for the customer's Approve. Every number is worked out server-side; the card only displays them.
    - `proposal_id` string, required
    - `worker_handle` string, required
    - `title` string, nullable, required
    - `instructions` string, nullable, required
    - `address` string, nullable, required
    - `deadline` string, nullable, required
    - `amount_minor` integer, required
    - `fee_minor` integer, required
    - `total_minor` integer, required
    - `live_location` boolean, required
    - `blockers` string[], required
    - `last_error` string, nullable, required
    - `location` object, nullable
    - `needs_location` boolean
    - `photos` integer
    - `purchase_minor` integer
  - `needs_files` boolean, nullable
  - `best_fit` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/mundane/apis/mundane-api.md) · [All operations](https://skmtc.dev/mundane/apis/mundane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mundane/apis/mundane-api/revisions/f1cba6e69834?raw)
