# Introduction

The Stream Video ESP32 SDK is an embedded SDK written in C that adds real-time video, audio and signaling to ESP32 applications through Stream's SFU (Selective Forwarding Unit). You can publish H.264 video and Opus audio to a Stream call. The SDK currently supports publishing only; subscribing to remote participants' audio and video is not yet supported. The API is designed to fit the ESP-IDF ecosystem on resource-constrained devices.

<Admonition type="tip">

This SDK is the client half of your integration. Call types, recording, transcription, webhooks and SIP are configured from your backend with a server-side SDK or the REST API, and the token your device connects with has to be signed there too. See the [server-side documentation](https://getstream.io/video/docs/api/) for what to build there, starting with [users and tokens](https://getstream.io/docs/platform/authentication/).

</Admonition>

## Build with Stream CLI and Agent Skills

The [Stream CLI](https://getstream.io/cli/docs/) and [Agent Skills](https://getstream.io/agent-skills/docs/) give AI coding agents the tools and knowledge to work with Stream. There is no dedicated skill pack for ESP32 yet, but the default skills still help with live documentation and CLI-driven API work.

Install the CLI and the default skills:

```bash
curl -fsSL https://getstream.io/cli.sh | bash
getstream skills
```

Once installed, invoke `/stream` from your agent. It routes documentation lookups and API operations for you.

Stream Agent Skills can also be installed from [skills.sh](https://www.skills.sh/getstream/agent-skills/stream).

## Supported hardware

- **ESP32-S3 WROOM**: Supported (example provided, default board).
- **XIAO ESP32-S3 Sense**: Supported (selectable in menuconfig).

## Requirements

- **ESP-IDF** v5.4 or higher.
- WiFi connectivity for signaling and media.

## Documentation

<Cards>
  <Card size="small" icon="apps-2" title="Installation" description="Add the SDK via Component Manager, dependencies and ESP-IDF setup." href="https://getstream.io/video/docs/esp32/basics/installation/" />
  <Card size="small" icon="rocket" title="Quickstart" description="Application flow, minimal example, build and run." href="https://getstream.io/video/docs/esp32/basics/quickstart/" />
  <Card size="small" icon="braces" title="API reference" description="Init, join and leave, error handling, types." href="https://getstream.io/video/docs/esp32/guides/api-reference/" />
  <Card size="small" icon="code-s-slash" title="Example configuration" description="Configure the token service URL, call type and call ID in main.c." href="https://getstream.io/video/docs/esp32/guides/example-configuration/" />
  <Card size="small" icon="settings-3" title="SDK configuration" description="All SDK Kconfig options for core, ICE, board, video, audio and debug." href="https://getstream.io/video/docs/esp32/guides/sdk-configuration/" />
  <Card size="small" icon="key-2" title="Client auth" description="How your device fetches a token and passes auth_data to the SDK." href="https://getstream.io/video/docs/esp32/guides/client-auth/" />
</Cards>

If something is missing or could be improved, [contact us](https://getstream.io/contact/).

---

This page was last updated at 2026-09-04T17:22:29.132Z.

For the most recent version of this documentation, visit [https://getstream.io/video/docs/esp32/](https://getstream.io/video/docs/esp32/).