---
title: "Vibe Chat Stream"
method: POST
path: "/api/vibe-search/chat/stream"
tags: ["vibe-search"]
---

# Vibe Chat Stream

`POST /api/vibe-search/chat/stream`

## Request

- Base URL: `https://ai.tacostreetlocating.com`
- URL: `https://ai.tacostreetlocating.com/api/vibe-search/chat/stream`
- Auth: none declared

Streaming counterpart to /chat, for sessions on the agent pipeline.

A separate endpoint rather than content-negotiation on /chat: the legacy
pipeline has nothing to stream (one model call, then a response), and
teaching a 700-line handler to sometimes be a generator is how the fallback
path stops being trustworthy.

A session not routed to the agent gets a single `fallback` frame and the
client re-issues against /chat. That keeps the decision about WHICH
pipeline runs in one place — should_use_agent — instead of duplicating it
in the frontend.

## Request body

- VibeSearchRequest
  - `session_id` string, nullable
  - `tracking_session_id` string, nullable
  - `synthetic_traffic` boolean
  - `message` string, required
  - `history` ChatMessage[]
    - `role` string, required
    - `content` string, required
  - `city` string
  - `map_context` object, nullable
  - `user_profile` object, nullable
  - `current_filters` object, nullable
  - `from_action` boolean
  - `conversation_token` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/tacostreetlocating/apis/taco-street-locating-public-api.md) · [All operations](https://skmtc.dev/tacostreetlocating/apis/taco-street-locating-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tacostreetlocating/apis/taco-street-locating-public-api/revisions/e09e16f653cc?raw)
