> For the complete documentation index, see [llms.txt](https://docs.amigo.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.amigo.ai/developer-guide/platform-api/conversations/channel-manager.md).

# Channel Manager

Channel setup and use-case lifecycle live in the channel management API. The workspace-scoped Platform API separately records use-case ownership and binds an owned use case to a platform service. Channel availability and setup prerequisites vary; see [Channels](/developer-guide/platform-api/conversations/channels.md).

## Supported Channels

| Channel              | Description                                   |
| -------------------- | --------------------------------------------- |
| `outbound_voice`     | Outbound phone calls                          |
| `inbound_voice`      | Inbound phone calls                           |
| `ringless_voicemail` | Voicemail drops without ringing the recipient |
| `sms`                | SMS conversations and sends                   |
| `imessage`           | iMessage conversations and sends              |
| `email`              | Outbound and inbound email                    |

{% hint style="info" %}
Creating a use case does not provision its underlying phone number, messaging line, or sending domain. Complete the channel-specific setup and verification flow first. Some setup paths require Amigo-assisted provider onboarding.
{% endhint %}

## Use Cases

A use case binds a communication channel to an approved setup. Create, read, update, and delete the resource through the channel management API at `/v1/use-case`, using `use-case:read` or `use-case:write` on the target setup. The Platform API does not proxy those lifecycle writes. After creation, claim the use case for a workspace, then bind it to a service. See [Use Cases & Bindings](/developer-guide/platform-api/workspaces/use-cases.md) for the two-surface workflow and channel-specific request shapes.

### List Use Cases

Supports filtering by `entity_name`, `channel`, and `setup_id`.

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases" method="get" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

### Use Case Ownership

Ownership records which workspace a provisioned use case belongs to. Claiming ownership is idempotent: re-claiming a use case the workspace already owns returns `200`. Claiming returns `404` if the use case does not exist and `409` if another workspace already owns it. Releasing ownership returns `204`, refuses with `409` while any service still binds the use case (unbind first), and returns `404` if the workspace does not own it. Claiming and releasing require the `Channel.ManageOwnership` permission (admin tier); reading ownership requires `Channel.view`.

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases/{use\_case\_id}/ownership" method="put" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases/{use\_case\_id}/ownership" method="get" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases/{use\_case\_id}/ownership" method="delete" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases/ownership" method="get" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

### Service Binding

A use case must be bound to a platform service before inbound webhook events can resolve to the workspace and before outbound dispatch can route through it.

Binding uses upsert semantics: rebinding to a different service replaces the prior binding. The API returns `409` if a different use case already binds the same `(service, channel)` pair, and `404` if the service or use case is missing. Getting a binding returns `404` if the use case is unbound. Unbinding returns `204 No Content`, or `404` if the use case is not currently bound. Binding requires `Channel.create`, getting requires `Channel.view`, and unbinding requires `Channel.delete`.

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases/{use\_case\_id}/service-binding" method="put" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases/{use\_case\_id}/service-binding" method="get" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

{% openapi src="<https://api.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/use-cases/{use\_case\_id}/service-binding" method="delete" %}
<https://api.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

## Permissions

| Operation                 | Required Permission       |
| ------------------------- | ------------------------- |
| List use cases            | `Channel.view`            |
| Read ownership            | `Channel.view`            |
| Claim / release ownership | `Channel.ManageOwnership` |
| Bind a service            | `Channel.create`          |
| Read a service binding    | `Channel.view`            |
| Unbind a service          | `Channel.delete`          |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.amigo.ai/developer-guide/platform-api/conversations/channel-manager.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
