Docs · Quick start
A cloud device in three calls.
Grab an API key from the dashboard, install an SDK, and launch your first device. Everything here maps 1:1 to what the dashboard does.
Get an API key1 · Install
TypeScript and Python SDKs, plus a CLI.
npm install @flickly/sdk2 · Launch, install, control
Upload an APK, boot a device, drive it — then stop it.
import { Flickly } from "@flickly/sdk";
const client = new Flickly(process.env.FLICKLY_KEY);
// 1. upload an APK (or reuse one you've uploaded before)
const app = await client.apps.upload("./build/app-release.apk");
// 2. launch a device and install the app
const session = await client.sessions.create({ appId: app.id });
await client.sessions.waitUntilReady(session.id);
// 3. drive it — or open session.streamUrl in a browser
await client.sessions.input.tap(session.id, { x: 540, y: 1180 });
// 4. clean up (or let the idle timeout do it)
await client.sessions.stop(session.id);API reference
Versioned REST under /v1. Bearer-key auth, idempotency keys on create, structured errors, and rate limits.
POST
/v1/sessionsGET
/v1/sessionsGET
/v1/sessions/{id}DELETE
/v1/sessions/{id}POST
/v1/sessions/{id}/appsPOST
/v1/appsGET
/v1/appsGET
/v1/usageStreaming runs over a separate WSS channel with a short-lived, session-scoped token from GET /v1/sessions/{id}.
Webhooks
Subscribe to session lifecycle events instead of polling.
event session.ready
event session.stopped
event session.failed
event app.ready
event usage.threshold