# Video and Audio

Stream Video runs video calling, audio rooms and livestreaming on Stream's global edge network. The SDKs manage devices, call state and participant tracks; the same API scales from one-to-one calls to streams with millions of viewers.

## SDKs

### Client Side SDKs

Everything a device needs to join a call: signaling, device management and rendering, plus prebuilt call UI on the app platforms.

- [React](https://getstream.io/video/docs/react/): Components and hooks for web calling UIs.
- [iOS](https://getstream.io/video/docs/ios/): SwiftUI components for calling UIs.
- [Android](https://getstream.io/video/docs/android/): Compose components for calling UIs.
- [React Native](https://getstream.io/video/docs/react-native/): Native calling UI from one codebase.
- [Flutter](https://getstream.io/video/docs/flutter/): Widgets for calling UIs.
- [JavaScript](https://getstream.io/video/docs/javascript/): The core browser client, with the UI left to you.
- [Unity](https://getstream.io/video/docs/unity/): Video calls inside Unity games.
- [ESP32](https://getstream.io/video/docs/esp32/): Calling on embedded hardware.

### Backend

Create calls, mint tokens and configure call types from your server. One docs set covers all seven server languages with language tabs; Vision Agents is a separate framework for putting real-time AI agents in calls.

- [Server SDKs](https://getstream.io/video/docs/api/)
- [REST](https://getstream.github.io/protocol/?urls.primaryName=Video)
- [Vision Agents](https://visionagents.ai)

## Build with AI

Your AI agent can work with Stream from the terminal with the [Stream CLI](https://getstream.io/cli/docs/). There's also an [Agent Skills](https://getstream.io/agent-skills/docs/) pack so it can look up docs and configure your app.

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

- [Agent Skills](https://getstream.io/agent-skills/docs/)
- [Stream CLI](https://getstream.io/cli/docs/)

## Platform

Users, auth and the rest of the account-level machinery work the same in every Stream product, so they are documented once in the [platform docs](https://getstream.io/docs/platform/). Video apps touch these first:

- [Authentication and tokens](https://getstream.io/docs/platform/authentication/): Create the user tokens your app joins calls with.
- [Users](https://getstream.io/docs/platform/users/): Create, update, query and delete the users behind every call.
- [Multi-tenancy and teams](https://getstream.io/docs/platform/multi-tenancy/): Partition one app into isolated teams.
- [Webhooks](https://getstream.io/docs/platform/webhooks/): React to call events from your own backend.
- [Rate limits](https://getstream.io/docs/platform/rate-limits/): How limits work and how to handle 429 responses.

## Start here

Pick your platform and use case; each tutorial ends with a working app.

### Video calling

- [React](https://getstream.io/video/sdk/react/tutorial/video-calling/)
- [iOS](https://getstream.io/video/sdk/ios/tutorial/video-calling/)
- [Android](https://getstream.io/video/sdk/android/tutorial/video-calling/)
- [React Native](https://getstream.io/video/sdk/react-native/tutorial/video-calling/)
- [Flutter](https://getstream.io/video/sdk/flutter/tutorial/video-calling/)
- [JavaScript](https://getstream.io/video/sdk/javascript/tutorial/video-calling/)
- [Unity](https://getstream.io/video/sdk/unity/tutorial/video-calling/)

### Audio rooms

- [React](https://getstream.io/video/sdk/react/tutorial/audio-room/)
- [iOS](https://getstream.io/video/sdk/ios/tutorial/audio-room/)
- [Android](https://getstream.io/video/sdk/android/tutorial/audio-room/)
- [React Native](https://getstream.io/video/sdk/react-native/tutorial/audio-room/)
- [Flutter](https://getstream.io/video/sdk/flutter/tutorial/audio-room/)
- [JavaScript](https://getstream.io/video/sdk/javascript/tutorial/audio-room/)

### Livestreaming

- [React](https://getstream.io/video/sdk/react/tutorial/livestreaming/)
- [iOS](https://getstream.io/video/sdk/ios/tutorial/livestreaming/)
- [Android](https://getstream.io/video/sdk/android/tutorial/livestreaming/)
- [React Native](https://getstream.io/video/sdk/react-native/tutorial/livestreaming/)
- [Flutter](https://getstream.io/video/sdk/flutter/tutorial/livestreaming/)
- [JavaScript](https://getstream.io/video/sdk/javascript/tutorial/livestreaming/)

## FAQ

**Are calls, audio rooms and livestreams different APIs?**

No. Each is a call with a different [call type](https://getstream.io/video/docs/api/call-types/builtin/); the SDKs and API are the same.

**How many viewers can a livestream have?**

Millions. Viewers watch over WebRTC or [HLS](https://getstream.io/video/docs/api/streaming/overview/).

**Can I stream from OBS?**

Yes. Livestreams accept [RTMP](https://getstream.io/video/docs/api/streaming/rtmp/), WHIP and SRT input.

**Can calls be recorded and transcribed?**

Yes. [Recording](https://getstream.io/video/docs/api/recording/introduction/) and [transcription](https://getstream.io/video/docs/api/transcribing/calls/) are built into the API.

**Do I need my own backend?**

Yes. Your server signs the [user tokens](https://getstream.io/docs/platform/authentication/) devices join calls with.

**Can an AI agent join a call?**

Yes. [Vision Agents](https://visionagents.ai) puts real-time AI agents into calls.

**Can I read these docs as markdown?**

Append `.md` to any page URL. [/llms.txt](https://getstream.io/llms.txt) indexes every page.

---

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