> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pipecat.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Frame Serializer Overview

> Overview of frame serializers for converting between Pipecat frames and external protocols

## Overview

Frame serializers are components that convert between Pipecat's internal frame format and external protocols or formats. They're essential when integrating with third-party services or APIs that have their own message formats.

## Core Responsibilities

Serializers handle:

1. **Serialization**: Converting Pipecat frames to external formats or protocols
2. **Deserialization**: Converting external messages to Pipecat frames
3. **Protocol-specific behaviors**: Managing unique aspects of each integration

## Available Serializers

Pipecat includes serializers for popular voice and communications platforms:

<CardGroup cols={2}>
  <Card title="Exotel Serializer" icon="phone" href="/api-reference/server/services/serializers/exotel">
    For integrating with Exotel WebSocket media streaming
  </Card>

  <Card title="Plivo Serializer" icon="phone" href="/api-reference/server/services/serializers/plivo">
    For integrating with Telnyx WebSocket media streaming
  </Card>

  <Card title="Telnyx Serializer" icon="phone" href="/api-reference/server/services/serializers/telnyx">
    For integrating with Telnyx WebSocket media streaming
  </Card>

  <Card title="Twilio Serializer" icon="phone" href="/api-reference/server/services/serializers/twilio">
    For integrating with Twilio Media Streams WebSocket protocol
  </Card>

  <Card title="Vonage Serializer" icon="waveform" href="/api-reference/server/services/serializers/vonage">
    For integrating with Vonage Video API Audio Connector WebSocket protocol
  </Card>
</CardGroup>

## Custom Serializers

You can create custom serializers by implementing the `FrameSerializer` base class:

```python theme={null}
from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializerType
from pipecat.frames.frames import Frame, StartFrame

class MyCustomSerializer(FrameSerializer):
    @property
    def type(self) -> FrameSerializerType:
        return FrameSerializerType.TEXT  # or BINARY

    async def setup(self, frame: StartFrame):
        # Initialize with pipeline configuration
        pass

    async def serialize(self, frame: Frame) -> str | bytes | None:
        # Convert Pipecat frame to external format
        pass

    async def deserialize(self, data: str | bytes) -> Frame | None:
        # Convert external data to Pipecat frame
        pass
```
