# Connect Conversations API (classic)

If you already have a [Twilio Conversations API (classic)](/docs/conversations) service, you can connect it to Conversation Orchestrator with a bridge. Messages sync bidirectionally between your classic service and Conversation Orchestrator, so your existing application keeps working while gaining access to Conversation Memory and Conversation Intelligence features.

The bridge is also the only way to use the Chat channel with Conversation Orchestrator.

## Prerequisites

* [Create a Twilio account](https://www.twilio.com/try-twilio).
* [Buy a voice- and SMS-enabled phone number](https://1console.twilio.com/phone-numbers/search).
* [Store your Twilio credentials in environment variables](/docs/usage/secure-credentials).
* [Create a Conversations (classic) service](/docs/conversations-classic/quickstart).
* [Create a memory store](/docs/conversations/orchestrator/quickstart#create-a-memory-store-and-conversation-configuration).

## Create a bridged configuration

Create a conversation configuration that points at your Conversations API (classic) service.

```bash
CREATE_CONFIGURATION_REQUEST_OBJ=$(cat << EOF
{
  "displayName": "classic-bridge-config",
  "description": "Bridges a Conversations (classic) service into Conversation Orchestrator",
  "conversationGroupingType": "GROUP_BY_PARTICIPANT_ADDRESSES",
  "memoryStoreId": "YOUR_MEMORY_STORE_ID",
  "conversationsV1Bridge": {
    "serviceId": "YOUR_CLASSIC_SERVICE_SID"
  }
}
EOF
)
curl -X POST "https://conversations.twilio.com/v2/ControlPlane/Configurations" \
--json "$CREATE_CONFIGURATION_REQUEST_OBJ" \
-u $TWILIO_API_KEY:$TWILIO_API_SECRET
```

Replace `YOUR_CLASSIC_SERVICE_SID` with your Conversations API (classic) Service SID, and replace `YOUR_MEMORY_STORE_ID` with the ID of your memory store.

Poll the returned `statusUrl` until `status` is `COMPLETED`.

## Test the bridge

1. Send a message through your existing Conversations API (classic) conversation.
2. Wait three seconds for the bridge to sync.
3. List your Conversation Orchestrator conversations:

```bash
curl -X GET "https://conversations.twilio.com/v2/Conversations" \
  -u $TWILIO_API_KEY:$TWILIO_API_SECRET
```

Continue using the Conversations API (classic) endpoints to send replies. The bridge syncs them with Conversation Orchestrator.

## Combine with other channels

You can combine a classic bridge with capture rules for other channels. For example, bridge Chat from classic while capturing voice calls passively. With `GROUP_BY_PROFILE`, voice calls and bridged chat conversations group together when Conversation Orchestrator matches the same customer profile across channels:

```bash
CREATE_CONFIGURATION_REQUEST_OBJ=$(cat << EOF
{
  "displayName": "classic-bridge-with-voice",
  "description": "Bridges a classic service and captures inbound voice calls",
  "conversationGroupingType": "GROUP_BY_PROFILE",
  "memoryStoreId": "YOUR_MEMORY_STORE_ID",
  "conversationsV1Bridge": {
    "serviceId": "YOUR_CLASSIC_SERVICE_SID"
  },
  "channelSettings": {
    "VOICE": {
      "captureRules": [
        {
          "from": "*",
          "to": "YOUR_TWILIO_PHONE_NUMBER",
          "metadata": { "callType": "PSTN" }
        }
      ]
    }
  }
}
EOF
)
curl -X POST "https://conversations.twilio.com/v2/ControlPlane/Configurations" \
--json "$CREATE_CONFIGURATION_REQUEST_OBJ" \
-u $TWILIO_API_KEY:$TWILIO_API_SECRET
```

## Considerations

* Don't configure capture rules and a classic bridge for the same traffic. Pick one integration per channel.
* `conversationGroupingType` controls grouping for channels outside classic. Inside classic, each classic conversation maps 1:1 to a Conversation Orchestrator conversation.

## Next steps

* [Ingestion modes](/docs/conversations/orchestrator/concepts/ingestion): See how the bridge relates to passive and active ingestion.
* [Channels](/docs/conversations/orchestrator/concepts/channels): Channel-specific behavior, including Chat.
* [Profiles](/docs/conversations/orchestrator/concepts/profiles): How bridged participants resolve to profiles.
* [Troubleshooting](/docs/conversations/orchestrator/troubleshooting): Resolve common errors.
