---
title: "Message"
method: POST
path: "/api/v1/specialist/message"
---

# Message

`POST /api/v1/specialist/message`

## Request

- Base URL: `https://trovastorage.it` (the document declares no server; this is the origin it was published from)
- URL: `https://trovastorage.it/api/v1/specialist/message`
- Auth: one of:
  - API key in header `X-Access-Token`
  - HTTP bearer

Free text in, a structured request out — and the numbers from Python.

The model interprets and the invariants decide, and here that is not a
convention a caller has to honour: the prose and the resolution come back as
two separate objects, and the model never sees the inventory that produced
the second one.

## Request body

- SpecialistMessageRequest: One customer turn. The browser holds an opaque id and never the transcript. `lat`/`lng` are optional: if the browser already knows where the customer is it saves a geocode, and if it does not, the model repeats the place name and the existing geocoder reads it.
  - `conversation_id` string, uuid, nullable
  - `operator_slug` string, nullable
  - `text` string, required
  - `lat` number, nullable
  - `lng` number, nullable
  - `place_from_text` boolean

## Response `200`

Successful Response

- SpecialistMessageResponse
  - `conversation_id` string, uuid, required
  - `reply` string, required
  - `reading` SpecialistReading, required: How the request was read. Prose and estimates — never availability. Availability lives in `SpecialistMessageResponse.resolution`, which Python computed. Keeping them in separate objects is what stops a client from rendering the model's guess as a fact (M6.0).
    - `size_class_m2` integer, nullable, required
    - `size_band` string, nullable
    - `volume_m3_min` number, nullable, required
    - `volume_m3_max` number, nullable, required
    - `duration_months` integer, nullable, required
    - `constraints` string[], required
    - `features` string[], required
    - `confidence` number, required
    - `reasoning` string, required
    - `class_note` string, nullable, required
    - `next_question` string, nullable, required
  - `resolution` SpecialistResolution, required
    - `size_class_m2` integer, required
    - `band_min_m2` number, required
    - `band_max_m2` number, nullable, required
    - `radius_km` number, required
    - `free_count` integer, required
    - `centres` ResolvedCentre[], required
      - `site_id` string, uuid, required
      - `name` string, required
      - `city` string, required
      - `lat` number, required
      - `lng` number, required
      - `distance_km` number, required
      - `free_count` integer, required
      - `operator` string
      - `listing_url` string, nullable
      - `declared` string, nullable
    - `alternatives` ResolvedAlternative[], required
      - `kind` string, required
      - `size_class_m2` integer, required
      - `radius_km` number, required
      - `free_count` integer, required
      - `centres` ResolvedCentre[], required
        - `site_id` string, uuid, required
        - `name` string, required
        - `city` string, required
        - `lat` number, required
        - `lng` number, required
        - `distance_km` number, required
        - `free_count` integer, required
        - `operator` string
        - `listing_url` string, nullable
        - `declared` string, nullable
      - `dropped_features` string[]
    - `zero_results` boolean, required
    - `sites_in_range` integer
    - `coverage` string[]
    - `unavailable_features` string[]
    - `frees_up` ResolvedFreesUp[]
      - `site_id` string, uuid, required
      - `name` string, required
      - `distance_km` number, required
      - `free_from` string, date, required
    - `access_rules` string[]
  - `lat` number, nullable, required
  - `lng` number, nullable, required
  - `turns_left` integer, required
  - `summary` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/trovastorage/apis/stock-your-inventory.md) · [All operations](https://skmtc.dev/trovastorage/apis/stock-your-inventory/llms.txt) · [OpenAPI document](https://skmtc.dev/trovastorage/apis/stock-your-inventory/revisions/c75f591a585c?raw)
