---
title: "Upsert Channel Binding"
method: PUT
path: "/api/v1/channels/bindings"
tags: ["channels"]
---

# Upsert Channel Binding

`PUT /api/v1/channels/bindings`

Create or update the binding for one external conversation.

PUT rather than PATCH, and addressed by the external conversation rather
than a binding id: the operator is saying "this is how the agent behaves in
this channel", and whether a row already exists is our bookkeeping, not
theirs.

## Request body

- ChannelBindingUpsert — How the agent should behave in one room. A full statement, not a patch: the operator is describing the end state, and whether a row already exists is our bookkeeping rather than theirs.
  - `provider` string, required
  - `external_conversation_id` string, required
  - `external_conversation_name` string, nullable
  - `conversation_type` string, required
  - `agent_mode` string, required
  - `chat_agent_id` string, uuid, required
  - `property_id` string, uuid, nullable
  - `enabled` boolean, required

## Response `200`

Successful Response

- ChannelBindingRead — One room the agent may or may not answer in.
  - `id` string, uuid, required
  - `provider` string, required
  - `external_conversation_id` string, required
  - `external_conversation_name` string, nullable
  - `conversation_type` string, required
  - `agent_mode` string, required
  - `chat_agent_id` string, uuid, required
  - `property_id` string, uuid, nullable
  - `enabled` boolean, required

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-09** `14d0341c60b5` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/channels/bindings/put.md)

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getanana/apis/cleon-api/revisions/41c5e4645524?raw)
