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

# SDK Capability Matrix

> Documented Spatius SDK capabilities across Web, iOS, Android, Flutter, and the Python, Go, and JavaScript Server SDKs.

This matrix shows capabilities that are documented in the public reference pages. It is a lookup aid, not a replacement for the platform reference pages.

If a cell says **Not documented**, the current docs do not expose a public reference for that capability on that SDK. It does not prove the runtime cannot support it.

## Client SDK capabilities

| Capability | Web | iOS | Android | Flutter |
| - | - | - | - | - |
| Direct Mode Integration | Documented | Documented | Documented | Documented |
| Backend Mode client feed | `yieldAudioData()` / `yieldFramesData()` | `yieldAudioData(_:end:)` / `yieldFramesData(_:conversationID:)` | `yieldAudioData(audioData, end)` / `yieldFramesData(animations, conversationId)` | `yieldAudioData()` / `yieldAnimations()` |
| RTC client/provider support | `@spatius/avatarkit-rtc` | `AvatarKitRTC` with a public `RTCProvider` abstraction; Agora provider included | `ai.spatius:avatarkit-rtc` with a public `RTCProvider` abstraction; Agora provider included | Not documented |
| Region config | `region` in `AvatarSDK.initialize()` | `region` in `Configuration` | `region` in `Configuration` | `region` in `Configuration` |
| Region default | Automatic selection when unset | Automatic selection when unset | Automatic selection when unset | Automatic selection when unset |
| Audio format scope | `new AvatarView(avatar, container, { audioFormat })` | `AvatarView(avatar:audioFormat:)` | `AvatarView.init(avatar, scope, audioFormat)` | `AvatarWidget(audioFormat:)` |
| Change audio format on a live view | `controller.setAudioFormat(patch)` | `controller.setAudioFormat(sampleRate:inputAudioFormat:opusBitrate:opusUplinkEnabled:)` | `controller.setAudioFormat(sampleRate, opusBitrate, inputAudioFormat, opusUplinkEnabled)` | `controller.setAudioFormat(...)` |
| Opus audio input | `inputAudioFormat: 'opus'` | `inputAudioFormat: .opus` | `inputAudioFormat = AudioCodec.OPUS` | `inputAudioFormat: AudioCodec.opus` |
| Direct Mode Opus uplink | On by default (`opusUplinkEnabled`) | On by default (`opusUplinkEnabled`) | On by default (`opusUplinkEnabled`) | On by default (`opusUplinkEnabled`) |
| Driving mode enum | `DrivingServiceMode.direct` / `.backend` / `.rtc` | `.direct` / `.backend` / `.rtc` | `DIRECT` / `BACKEND` / `RTC` | `direct` / `backend` |
| Render quality | `RenderQuality` and `setRenderQuality()` | `RenderQuality` and `setRenderQuality(_:)` | `RenderQuality` and `setRenderQuality()` | `RenderQuality` and `setRenderQuality()` |
| Render resolution cap | `setRenderResolutionCap()` | `setRenderResolutionCap(enabled:maxHeight:)` | `setRenderResolutionCap(enabled,maxHeight)` | Not documented |
| Device capability check | `isDeviceSupported()` / `deviceScore()` | `isDeviceSupported()` / `deviceScore()` | `isDeviceSupported()` / `deviceScore()` | Not documented |
| Frame starvation behavior | `FrameStarvationMode` | `FrameStarvationMode` | `FrameStarvationMode` | Not documented |
| Strict sync mode | `FrameStarvationMode.strictSync` | `FrameStarvationMode` enum | `STRICT_SYNC` enum value | Not documented |
| Avatar bitmap export | `AvatarView.exportBitmap()` | Not documented | Not documented | Not documented |
| Avatar transform / bounds | `avatarTransform`, `getBoundingRect()` | `AvatarView.avatarTransform`, `getBoundingRect()` | `AvatarView.avatarTransform`, `getBoundingRect()` | Not documented |
| `ConnectionState` callback | Direct Mode only | Documented | Documented | Documented |
| `ConversationState` callback | Documented | Documented | Documented | Documented |
| Interrupt playback | `interrupt()` | `interrupt()` | `interrupt()` | Not documented |
| Pause / resume rendering | `AvatarView.pauseRendering()` / `resumeRendering()` | `AvatarView.pauseRendering()` / `resumeRendering()` | `AvatarView.pauseRendering()` / `resumeRendering()` | Not documented |
| Cache management | `AvatarManager` cache methods | `AvatarManager` cache methods | `AvatarManager` cache methods | Not documented |

## Web package split

| Package | What it does | Reference |
| - | - | - |
| `@spatius/avatarkit` | Core Web AvatarKit SDK for loading, rendering, Direct Mode, and Backend Mode client feed. | [Web SDK Reference](/sdk-reference/web-sdk/reference) |
| `@spatius/avatarkit-rtc` | Web RTC transport adapter for LiveKit and Agora providers. | [RTC Adapter](/sdk-reference/web-sdk/rtc-adapter) |

## Server SDK capabilities

| Capability | Python Server SDK | Go Server SDK | JavaScript Server SDK |
| - | - | - | - |
| Backend Mode session | `new_avatar_session()` | `NewAvatarSession()` | `newAvatarSession()` on Node.js |
| Region config | `region` option | `WithRegion(region)` | `region` option |
| Region default | `auto` | `auto` | `auto` |
| Console endpoint override | `console_endpoint_url` | `WithConsoleEndpointURL()` | `consoleEndpointUrl` |
| Ingress endpoint override | `ingress_endpoint_url` | `WithIngressEndpointURL()` | `ingressEndpointUrl` |
| Audio input | PCM / Ogg Opus | PCM / Ogg Opus | PCM / Ogg Opus |
| Internal PCM to Opus encoder | Optional `spatius[opus]` and `libopus` | Native codec libraries | Bundled WebAssembly encoder |
| Motion data callback | `transport_frames` | `WithTransportFrames()` | `transportFrames` |
| Encoded audio callback | `on_encoded_audio` | `WithOnEncodedAudio()` | `onEncodedAudio` |
| LiveKit egress | `livekit_egress` | `WithLiveKitEgress()` | `livekitEgress` |
| Agora egress | `agora_egress` | `WithAgoraEgress()` | `agoraEgress` |
| Interrupt for egress | `interrupt()` | `Interrupt()` | `interrupt()` |
| Worker warm-up | `prewarm()` with optional TLS warm-up and token prefetch | `Prewarm()` with optional TLS warm-up and token prefetch | `prewarm()` with optional token prefetch |
| Handshake extensions | `extra_params` | `WithExtraParams()` | `extraParams` |
| Structured SDK errors | `AvatarSDKError` / `SessionTokenError` | `*AvatarSDKError` for supported failures | `AvatarSDKError` / `SessionTokenError` |

See the [Python](/sdk-reference/python-sdk/python-sdk), [Go](/sdk-reference/go-sdk/go-sdk), and [JavaScript / TypeScript](/sdk-reference/javascript-sdk/javascript-sdk) references for requirements and exact signatures. Error fields and code coverage differ by language.

LiveKit and Agora egress are low-level Server SDK capabilities. They are not additional integration paths.

## Integration support

| Integration | Web | iOS | Android | Flutter | Server-side component |
| - | - | - | - | - | - |
| Direct Mode Integration | Yes | Yes | Yes | Yes | Session Token endpoint |
| LiveKit Agents Integration | Bundled `LiveKitProvider` | `RTCProvider` extension point; native LiveKit provider not bundled | `RTCProvider` extension point; native LiveKit provider not bundled | Not documented | `livekit-plugins-spatius` |
| Agora Convo AI Integration | Web RTC client | AvatarKit RTC client | AvatarKit RTC client | Not documented | Agora avatar provider or TEN extension |
| Backend Mode Integration | Client feed | Client feed | Client feed | Client feed | Python, Go, or JavaScript Server SDK |

## Region support

All documented SDKs and integrations use the same region names:

| Region | Status |
| - | - |
| `us-west` | Supported |
| `ap-northeast` | Supported |
| `cn-beijing` | Supported |

See [Regions](/api-reference/regions) for endpoint composition and advanced override notes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.