---
title: "Get or create a v2 conversation"
method: POST
path: "/v1/conversations"
tags: ["conversations"]
---

# Get or create a v2 conversation

`POST /v1/conversations`

## Request body

- ConversationCreate — Get-or-create a v2 conversation (Phase F2) — CHAT ONLY (D4/ADR-007). The generic create route creates ``chat`` conversations only: sms / voice / email creation stays adapter-owned (``/v1/sms/send``, voice dispatch, the email pipeline). ``channel`` is therefore not a request field (forced server-side), and ``origin`` / ``channel_subtype`` are gone — both are server-assigned (ADR-005 / ADR-004). Bind to exactly one of a single Assistant (``assistant_id``) or a Team (``team_id`` + ``team_revision_id``) — the ``single_xor_team`` CHECK on ``conversations``. ``assistant_revision_id`` is optional; when omitted it is resolved from the agent's active revision and pinned at bind time.
  - `end_user_id` string, uuid, nullable
  - `org_external_end_user_id` string, nullable
  - `assistant_id` string, uuid, nullable
  - `assistant_revision_id` string, uuid, nullable
  - `team_id` string, uuid, nullable
  - `team_revision_id` string, uuid, nullable
  - `session_type` 'live' | 'test' | 'simulation'
  - `external_id` string, nullable
  - `subject` string, nullable
  - `metadata` object, nullable
  - `tool_input_overrides` object, nullable
  - `context_variables` object, nullable
  - `test_features` TestSessionFeatureInput — Caller-supplied toggles. Unknown fields are rejected.
    - `identity_resolution` boolean
    - `memory` boolean
    - `summarization` boolean
    - `extraction` boolean
    - `evaluations` boolean
    - `knowledge_gap_analysis` boolean

## Response `201`

Successful Response

- ConversationResponse
  - `id` string, uuid, required
  - `organization_id` string, uuid, required
  - `end_user_id` string, uuid, required
  - `channel` string, required
  - `surface` string, required
  - `status` string, required
  - `session_type` string, required
  - `assistant_id` string, uuid, nullable
  - `assistant_revision_id` string, uuid, nullable
  - `team_id` string, uuid, nullable
  - `team_revision_id` string, uuid, nullable
  - `external_id` string, nullable
  - `subject` string, nullable
  - `tool_input_overrides` object, nullable
  - `test_features` TestSessionFeatures — Resolved, immutable snapshot persisted on a test conversation.
    - `version` 1
    - `identity_resolution` boolean, required
    - `memory` boolean, required
    - `summarization` boolean, required
    - `extraction` boolean, required
    - `evaluations` boolean, required
    - `knowledge_gap_analysis` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, 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/revisions/9cd7291d4228/schema)
