---
title: "Mint a fresh test-type v2 conversation bound to an agent or team"
method: POST
path: "/v1/v2/conversations/test-chat"
tags: ["runtime v2"]
---

# Mint a fresh test-type v2 conversation bound to an agent or team

`POST /v1/v2/conversations/test-chat`

conv_* replacement for the retired ``POST /v1/runtime/test-chat``.

Mints a ``session_type="test"`` ``Conversation`` on the ``api`` channel with
a throwaway ``end_user_id`` (no identity-graph node — the ``test``
discriminator suppresses memory sync, summary generation, and identity
writes). The dashboard "Try this …" panel then drives turns via
``POST /v2/conversations/{id}/turns/stream`` passing the returned id.

Binds to exactly one of a single Assistant (``agent_id``) or a Team
(``team_id`` + optional ``team_revision_id``); the request schema enforces
that XOR. Either way the bound entity is resolved + org-scoped BEFORE the
conversation is created (``get_agent_for_runtime`` / ``get_team_for_org``
both raise 404 for a missing or cross-org id), so a bare test row can never
bind to another org's agent/team.

For a team, ``team_revision_id`` defaults to the team's
``active_revision_id`` when omitted; ``bootstrap_team_conversation`` resolves
the roster and pins ``bound_revisions`` at bind. No first greeting: the
legacy endpoint emitted none, so there is nothing to replicate here.

## Request body

- TestChatStartRequest — Mint a fresh ``session_type="test"`` chat session for the dashboard. The agent-detail Test chat panel uses this to avoid leaning on the identity graph: every "Reset" or "End session" mints a new throwaway ``end_user_id`` + ``ConversationSession`` row so dev-side Neo4j churn (wipes, merges, deletes) can never strand the panel with a stale uid. Mirrors ``POST /v1/voice/web-call`` for text/API. Bind to exactly one of a single Assistant (``agent_id``) or a Team (``team_id`` + optional ``team_revision_id``) — the same single-XOR-team invariant the runtime ``conversations`` table enforces. When ``team_id`` is given without ``team_revision_id``, the handler resolves the team's active revision.
  - `agent_id` string, uuid, nullable
  - `team_id` string, uuid, nullable
  - `team_revision_id` string, uuid, nullable
  - `tool_input_overrides` object, nullable
  - `context_variables` object, nullable

## Response `201`

Successful Response

- TestChatStartResponse
  - `session_id` string, uuid, required
  - `end_user_id` string, uuid, required

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
