---
title: "GET /api/v1/consulting/{mode}/{conversationId}/state"
method: GET
path: "/api/v1/consulting/{mode}/{conversationId}/state"
tags: ["Consulting"]
---

# GET /api/v1/consulting/{mode}/{conversationId}/state

`GET /api/v1/consulting/{mode}/{conversationId}/state`

Reads durable subscriber message delivery and execution state without exposing internal Flue receipts or execution identifiers.

## Path parameters

- `conversationId` string, uuid, required
- `mode` 'keyword' | 'triage', required

## Query parameters

- `cursor` string
- `reconcileClientMessageId` string, uuid

## Cookies

- `billing_session` string

## Response `200`

Current durable message and execution state.

- object
  - `execution` object, required
    - `status` 'queued' | 'running' | 'waiting_capacity' | 'terminalizing' | 'settled', required
  - `messages` object[], required
    - `acceptedAt` string, date-time, required
    - `answeredBySubmissionId` string, nullable
    - `answeredAt` string, date-time, nullable, required
    - `attachments` object[], required
      - `filename` string, required
      - `mimeType` 'application/json' | 'application/pdf' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | 'image/gif' | 'image/jpeg' | 'image/png' | 'image/webp' | 'text/csv' | 'text/markdown' | 'text/plain', required
      - `size` integer, required
      - `type` 'image', required
    - `body` string, required
    - `clientMessageId` string, uuid, required
    - `conversationSequence` integer, nullable
    - `failureAt` string, date-time, nullable
    - `failureReason` 'credits_exhausted' | 'delivery_failed' | 'null', nullable
    - `flueSubmissionId` string, nullable
    - `hiddenAttemptSubmissionIds` string[]
    - `messageStatus` 'accepted' | 'dispatched' | 'incorporated' | 'terminal', required
  - `nextCursor` string, nullable

## Other responses

- `400` — The request is invalid.
- `401` — No Product subscriber session exists.
- `404` — The conversation is not owned by the subscriber.
- `429` — The subscriber exceeded a consulting read rate limit.
- `503` — Durable consulting state is unavailable.

---

[API](https://skmtc.dev/expertschat/apis/billing-core-api.md) · [All operations](https://skmtc.dev/expertschat/apis/billing-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/expertschat/billing-core-api/revisions/c6d0e986ce32/schema)
