RunReveal
SourcesSource Types

Kandji

Collect audit logs from your Kandji account to monitor device management actions and administrative changes. RunReveal polls the Kandji audit events API every 60 seconds.

Kandji Source Tile

Ingest Methods

API Polling

Step 1 — Create a Kandji API token

Kandji tokens have no permissions by default. You must explicitly grant List audit events or RunReveal will receive a permission error when it tries to connect — even if the URL and token are otherwise correct.

  1. In the Kandji web app go to Settings → Access.
  2. Note your API URL — it looks like https://YOUR_SUBDOMAIN.api.kandji.io. You'll need this in Step 2.
  3. Click Add Token, give it a name (for example RunReveal), and under permissions enable List audit events. No other permissions are needed.
  4. Copy the token value — it is only shown once.

If the connection test fails with an authorization or permission error, go back to Settings → Access, open the token, and confirm List audit events is checked. If you're unsure what permissions were set, delete the token and create a new one.

Step 2 — Connect in RunReveal

  1. Go to Sources → Add Source and click the Kandji tile.
  2. Give the source a name and click Connect Source.
  3. Enter your Kandji API URL (from Step 1) and paste in your API token.
  4. Click Verify to confirm RunReveal can reach the API, then save.

Logs begin appearing within a minute. Historical audit events are backfilled on the first sync.

Kandji API polling

Schema

The following columns are exposed for this source. RunReveal applies schema normalization across all sources, ensuring uniform field names and data types for cross-source queries and reusable detection logic.

Table: kandji_logs (46 columns)

ColumnType
workspaceIDString
sourceIDString
sourceTypeString
sourceTTLUInt32
receivedAtDateTime
idString
eventTimeDateTime
eventNameString
eventIDString
srcIPString
srcASCountryCodeString
srcASNumberUInt32
srcASOrganizationString
srcCityString
srcConnectionTypeString
srcISPString
srcLatitudeFloat64
srcLongitudeFloat64
srcUserTypeString
dstIPString
dstASCountryCodeString
dstASNumberUInt32
dstASOrganizationString
ColumnType
dstCityString
dstConnectionTypeString
dstISPString
dstLatitudeFloat64
dstLongitudeFloat64
dstUserTypeString
actorMap(String, String)
tagsMap(String, String)
resourcesArray(String)
serviceNameString
enrichmentsArray(Tuple(data Map(String, String), name String, provider String, type String, value String))
readOnlyBool
rawLogString
kandjiEventIdString
actionString
actorIdString
actorTypeString
occurredAtString
targetTypeString
targetIdString
targetComponentString
newStateString
metadataString

Kandji documentation

On this page