---
title: "Create Chat"
method: POST
path: "/chats"
---

# Create Chat

`POST /chats`

Create a tripless chat — no trip, no link, no first message.

An optional `anchor_place_id` records that the chat was opened on a place's
detail sheet (docs/PLACE_ANCHORED_CHATS.md). It is NOT a link: the chat has
no `ConversationTripLink`, so it stays a global chat with the global tool
surface, and the anchor only adds the place's dossier to the first turn.

An optional `proposal_id` instead returns the chat that plan proposal is
reviewed in, creating it on the first request (docs/PLAN_PROPOSALS.md).

## Request body

- CreateChatRequest — Optional body for `POST /chats`. Absent = a plain tripless chat.
  - `anchor_place_id` string, nullable
  - `anchor_surface` 'explore_rail' | 'saved', nullable
  - `proposal_id` string, uuid, nullable

## Response `200`

Successful Response

- CreateChatResponse
  - `id` string, required
  - `created_at` string, date-time, required

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-25** `f6559d3df7e9` — 1 info
  - added the new optional request property `anyOf[subschema #1: CreateChatRequest]/proposal_id`

[Change history](https://skmtc.dev/stardrift/apis/fastapi/changes/chats/post.md)

---

[API](https://skmtc.dev/stardrift/apis/fastapi.md) · [All operations](https://skmtc.dev/stardrift/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc.dev/stardrift/apis/fastapi/revisions/f6559d3df7e9?raw)
