Skip to main content
This is the shortest path on either platform: install, initialize, identify, and open a ticket. Pick your framework below — the steps map 1:1.
1

Get your publishable API key

In the ClarioDesk dashboard, create an app and copy its publishable key — it starts with pk_live_. This key only authorizes a fresh install to register a device; it can’t read tickets or impersonate users, so it’s safe to ship in your app binary.
2

Install the SDK

flutter pub add clariodesk
3

Initialize once at app start

The first call generates the hardware device key and registers it. Later launches reuse it with no network round-trip.
import 'package:clariodesk/clariodesk.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ClarioDesk.init(apiKey: 'pk_live_…');
  runApp(const MyApp());
}
4

Identify the user

Once your own auth knows who the user is. This is metadata only — the device key is the real identity, so this grants no access. It’s idempotent, so call it on every launch for logged-in users.
await ClarioDesk.identify(
  externalId: user.id,
  email: user.email,
  traits: {'plan': 'pro'},
);
5

Open a ticket and stream replies

final t = await ClarioDesk.createTicket(
  subject: 'Upload broken',
  body: 'Tapping upload does nothing.',
);

// Reactive thread — primes + live updates.
StreamBuilder<List<Message>>(
  stream: ClarioDesk.messagesStream(t.id),
  builder: (_, snap) => /* render messages */,
);
That’s a complete loop: a real ticket lands in your dashboard inbox, and the agent’s reply streams back to the device live.

Prefer not to build the UI?

Use the prebuilt chat instead — one call opens a themeable inbox. See the prebuilt UI guide for Flutter or React Native.