elevenlabs_flutter_sdk 0.0.1
elevenlabs_flutter_sdk: ^0.0.1 copied to clipboard
Flutter plugin for ElevenLabs conversational agents on Android and iOS using a unified Dart API.
elevenlabs_flutter_sdk #
Flutter plugin for ElevenLabs conversational agents on Android and iOS.
This package provides a unified Dart API over native ElevenLabs SDKs, including:
- session start/end
- voice controls (mute/unmute)
- text messaging and contextual updates
- feedback signaling
- native events as Dart streams
Features #
- Public and private session startup:
- public agent via
agentId - private agent via backend-issued
conversationToken
- public agent via
- Event stream support:
- connection, status, mode, messages, VAD, audio alignment, tool calls
- Convenience API in Dart:
startPublicSession(...),startPrivateSession(...)
- Works on:
- Android
- iOS
Installation #
Add the package:
dependencies:
elevenlabs_flutter_sdk: ^0.0.1
Then run:
flutter pub get
Platform Setup #
Android #
Add microphone permission to your Android app manifest:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Request runtime microphone permission in your Flutter app before startSession(...).
iOS #
- Set deployment target to
iOS 13.0+. - Add microphone usage description to
ios/Runner/Info.plist:
<key>NSMicrophoneUsageDescription</key>
<string>This app needs microphone access for voice conversations.</string>
- Add the ElevenLabs Swift SDK package to your app target in Xcode:
- URL:
https://github.com/elevenlabs/elevenlabs-swift-sdk.git - Version:
2.0.0or newer
- URL:
Reference docs: ElevenLabs Swift SDK
Quick Start #
import 'package:elevenlabs_flutter_sdk/elevenlabs_flutter_sdk.dart';
final sdk = ElevenlabsFlutterSdk();
// Public agent session
await sdk.startPublicSession(
agentId: 'your_public_agent_id',
userId: 'user_123',
);
// Send text message
await sdk.sendUserMessage('Hello!');
// End session
await sdk.endSession();
Private Agent Session #
Never ship ElevenLabs API keys in the app. Generate a temporary conversation token on your backend, then use:
await sdk.startPrivateSession(
conversationToken: tokenFromBackend,
userId: 'user_123',
);
API #
Session #
startSession({String? agentId, String? conversationToken, String? userId})startPublicSession({required String agentId, String? userId})startPrivateSession({required String conversationToken, String? userId})endSession()
Messaging and Context #
sendUserMessage(String message)sendContextualUpdate(String context)sendUserActivity()
Feedback #
sendFeedback(bool isPositive)
Audio and Status #
toggleMute()setMicMuted(bool muted)isMuted()getStatus()getConversationId()
Events #
Raw broadcast stream:
events(Stream<Map<String, dynamic>>)
Convenience streams:
onConnectonMessageonModeChangeonStatusChangeonCanSendFeedbackChangeonUnhandledClientToolCallonVadScoreonAudioAlignment
Example listener:
final sub = sdk.onStatusChange.listen((status) {
debugPrint('Status: $status');
});
Permissions Guidance #
This package does not manage UI permission prompts for you. Use a package like permission_handler in your app:
- request microphone before starting a session
- if permanently denied, prompt users to open app settings
Security #
- For private agents, use
conversationTokenfrom your backend. - Do not store ElevenLabs API keys in client applications.
Known Notes #
- iOS Local Network permission warnings in debug builds can come from Flutter VM service publishing and are usually unrelated to ElevenLabs session auth.
- Audio session behavior can vary by simulator/device and OS version.