---
title: "Send one turn of a website assistant conversation"
method: POST
path: "/v1/assistant/chat"
tags: ["Moderated Actions"]
---

# Send one turn of a website assistant conversation

`POST /v1/assistant/chat`

## Request

- Base URL: `https://loppee.com`
- URL: `https://loppee.com/v1/assistant/chat`
- Auth: none required

Website only: the request must come from a browser on the Loppee site, and API keys are refused. Returns 404 when the assistant is off. The reply is written from Loppee's own search results, which use the same reach, ordering and one-record-per-business rules as a connected assistant's search, with no Sponsored results. A location is an opaque reference from the website's location controls; coordinates and street addresses are never accepted or returned. Guests can search; a signed-in customer session is optional and adds the saved Home.

## Request body

- object
  - `messages` object[], required
    - `role` 'user' | 'assistant', required
    - `content` string, required
  - `location` union: An opaque location reference from the website's own location controls. Omit or send null when no location is chosen.
    - object
      - `kind` 'current' | 'destination', required
      - `location_proof_id` string, uuid, required
    - object
      - `kind` 'saved', required
      - `saved_location_ref` string, required
  - `continuation` object, nullable: The continuation from the previous response, sent back unchanged to get the next results.
    - `search` string, required
    - `cursor` string, required

## Response `200`

Send one turn of a website assistant conversation response

- object
  - `schema_version` '1.0', required
  - `reply` string, required
  - `results` object[], required
    - `subject_id` string, required
    - `source_type` 'published_profile' | 'unclaimed_registry_record' | 'registry_record', required
    - `business_id` string, nullable, required
    - `display_name` string, required
    - `category` string, required
    - `city` string, required
    - `state` string, required
    - `phone` string, nullable, required
    - `website` string, nullable, required
    - `distance_miles` number, nullable, required: Rounded to one decimal place. Null when no location was used.
    - `trust_class` 'verified' | 'listed' | 'registry', required
    - `trust_label` 'Verified' | 'Listed' | 'Registry record', required
    - `trust_disclosure` string, required
    - `review_summary` object, nullable, required
      - `rating` number, nullable, required
      - `count` number, required
    - `open_now` boolean, nullable, required
    - `public_profile_url` string, nullable, required
  - `has_more` boolean, required
  - `continuation` object, nullable, required
    - `search` string, required
    - `cursor` string, required
  - `actions` union[], required
    - union
      - object
        - `type` 'request_location' | 'refresh_location', required
        - `options` string[], required
      - object
        - `type` 'sign_in', required
        - `reason` 'saved_home' | 'save_business', required
  - `mode` 'assistant' | 'fallback', required: fallback: a direct search answered because the language model was unavailable.
  - `signed_in` boolean, required
  - `coordinates_returned` false, required
  - `disclosure` string, required

## Other responses

- `400`: ErrorResponse
- `404`: ErrorResponse
- `409`: ErrorResponse
- `413`: ErrorResponse
- `429`: RateLimitError
- `default`: ErrorResponse

---

[API](https://skmtc.dev/loppee/apis/loppee-business-registry-api-for-external-agents.md) · [All operations](https://skmtc.dev/loppee/apis/loppee-business-registry-api-for-external-agents/llms.txt) · [OpenAPI document](https://skmtc.dev/loppee/apis/loppee-business-registry-api-for-external-agents/revisions/37285f7cddcd?raw)
