What is a CHeKT App?
A CHeKT App is the unit of third-party access in the CHeKT platform. A CHeKT App is installed by a dealer admin, granted a set of permissions, and given an API key to act on behalf of the dealer — without being tied to a single human user.
This matters in operations. When a developer or admin leaves the company, an OAuth token tied to that person breaks the integration. An App's key keeps working. The ownership lives with the dealer, not the individual.
Anatomy of an app
Every CHeKT App is composed of four building blocks. You configure each one in the dealer portal at dealer.chekt.com → Settings → CHeKT Apps.
Authentication
Each app has its own API key. Rotate, revoke, and audit independently of any single user.
Authorization
Grant only the permissions your app needs. Scoped access keeps the blast radius small.
Webhooks
Subscribe to the events you want. Signed delivery, retries, and idempotency built in.
Security
Optional IP allow list. Restrict calls to your known infrastructure.
The app lifecycle
From the moment an admin creates an app to the moment your service receives its first event, the lifecycle has six steps. Once your app is installed, the same loop runs forever — your service calls CHeKT, CHeKT calls your service back.
- 01Dealer adminCHeKT platformCreate appSettings → CHeKT Apps → New app
- 02Dealer adminCHeKT platformSelect permissionsPick scopes like devices:read, events:read
- 03Dealer adminCHeKT platformSubscribe to eventsPick which webhooks the app should receive
- 04CHeKT platformYour appIssue API keyStored once — copy to your secret manager
- 05Your appCHeKT platformCall the APIAuthorization: Bearer <key>
- 06CHeKT platformYour appDeliver webhookPOST with HMAC signature
Permissions
CHeKT permissions are granular and additive. Each permission grants either read or write access to a specific resource family, and the dealer admin sees the exact set requested before installing your app.
Webhook events
Subscribe to the events your app cares about — and only those. CHeKT delivers each event as a signed POST to the webhook URL you registered when creating the app. Below is the full event catalog with the domain-state coloring that you'll see throughout the dealer portal.
alarm.createdAn alarm has been triggered at a site.
alarm.acknowledgedAn operator acknowledged an alarm.
alarm.dispatchedA guard or responder was dispatched.
alarm.resolvedAn alarm was resolved or closed.
device.onlineA device came online.
device.offlineA device went offline.
snapshot.createdA new snapshot is available.
verification.requestedA video verification was requested.
partition.armedA partition was armed.
relay.activatedA hardware relay was triggered.
A working example
Here's the smallest useful app: it subscribes to alarm.created webhooks, fetches the snapshot tied to the alarm, runs it through a vision model, and writes the verdict back to CHeKT.
This is the shape most AI-verification apps take. The only thing that varies between integrations is what the classifier does inside step 4.
1// 1) Bootstrap the SDK
2import { Chekt } from "@chekt/sdk";
3const chekt = new Chekt({ apiKey: process.env.CHEKT_API_KEY! });
4
5// 2) Subscribe to alarm.created webhooks
6app.post("/webhooks/chekt", verifySignature, async (req, res) => {
7 if (req.body.type !== "alarm.created") return res.sendStatus(200);
8
9 const alarm = req.body.data;
10
11 // 3) Fetch the snapshot tied to the alarm
12 const snap = await chekt.snapshots.get(alarm.snapshot_id);
13
14 // 4) Run your verification logic
15 const verdict = await vision.classify(snap.url);
16
17 // 5) Write the verdict back
18 await chekt.alarms.annotate(alarm.id, {
19 source: "your-app",
20 verdict: verdict.label,
21 confidence: verdict.confidence,
22 });
23
24 res.sendStatus(200);
25});CHeKT Apps vs. Platform Linking
CHeKT supports two integration patterns. Picking the right one upfront saves a lot of architectural pain. The short version: direction matters.
See Platform Linking for the platform-scale variant, or the migration guide if you're moving from a two-way integration to one direction.