Skip to main content

API

These are the available API paths that the built-in web server provides.

  • The web server was added in UniFi Poller v2.0.2.

/debug/vars

This path prints expvar data, which currently contains only memory statistics.

/health

Prints OK.

/api/v1/config

Prints poller config, uptime and plugins.

The empty plugins list under poller represents configured and loaded *.so shared-object plugins. These are rare and that list will almost always be empty.

$ curl unifi.poller:37288/api/v1/config | jq .
{
"arch": "linux amd64",
"branch": "dn2_events",
"built": "2020-08-17T04:20:00Z",
"cpus": 16,
"gid": 0,
"gover": "go1.14.4",
"inputs": {
"unifi": {
"name": "unifi",
"version": "v0.0.9",
"path": "github.com/unpoller/inputunifi"
}
},
"malloc": 9353240,
"memsys": 75055360,
"mtalloc": 33876272,
"numgc": 1234,
"outputs": {
"datadog": {
"name": "datadog",
"version": "v0.0.11",
"path": "github.com/unpoller/pkg/datadogunifi"
},
"influxdb": {
"name": "influxdb",
"version": "v0.0.11",
"path": "github.com/unpoller/pkg/influxunifi"
},
"loki": {
"name": "loki",
"version": "v0.0.1",
"path": "github.com/unpoller/pkg/lokiunifi"
},
"prometheus": {
"name": "prometheus",
"version": "v0.0.10",
"path": "github.com/unpoller/pkg/promunifi"
}
},
"pid": 1,
"poller": {
"plugins": [],
"debug": true,
"quiet": false
},
"uid": 0,
"uptime": 1234,
"version": "2.0.2-999"
}

/api/v1/config/plugins

Prints list of plugins only. Output and Input. These are also in /config (above).

$ curl unifi.poller:37288/api/v1/config/plugins | jq .
{
"inputs": {
"unifi": {
"name": "unifi",
"version": "v0.0.9",
"path": "github.com/unpoller/pkg/inputunifi"
}
},
"outputs": {
"datadog": {
"name": "datadog",
"version": "v0.0.11",
"path": "github.com/unpoller/pkg/datadogunifi"
},
"influxdb": {
"name": "influxdb",
"version": "v0.0.11",
"path": "github.com/unpoller/pkg/influxunifi"
},
"loki": {
"name": "loki",
"version": "v0.0.1",
"path": "github.com/unpoller/pkg/lokiunifi"
},
"prometheus": {
"name": "prometheus",
"version": "v0.0.10",
"path": "github.com/unpoller/pkg/promunifi"
}
}
}

/api/v1/output/<output>

Prints configuration for <output> output plugin.

$ curl -s unifi.poller:37288/api/v1/output/Loki | jq .
{
"disable": false,
"verify_ssl": false,
"url": "http://loki:3100",
"user": "",
"pass": "false",
"tenant_id": "",
"interval": {
"Duration": 120000000000
},
"timeout": {
"Duration": 10000000000
}
}

/api/v1/output/<output>/eventgroups

Prints all event-groups present for the requested output plugin. Output plugins currently only have one event group but there is nothing limiting them from adding more.

$ curl -s unifi.poller:37288/api/v1/output/Loki/eventgroups
["Loki"]

$ curl -s unifi.poller:37288/api/v1/output/Prometheus/eventgroups
["Prometheus"]

$ curl -s unifi.poller:37288/api/v1/output/WebServer/eventgroups
["WebServer"]

$ curl -s unifi.poller:37288/api/v1/output/InfluxDB/eventgroups
["InfluxDB"]

/api/v1/output/<output>/events/<group>

Prints events specific to the requested output and group. Looks like output plugin events with one less dictionary.

/api/v1/output/<output>/events

Prints all events for the specified plugin.

$ curl -s unifi.poller:37288/api/v1/output/Loki/events | jq .
{
"Loki": {
"latest": "2020-07-03T04:05:58.656262803-07:00",
"events": [
{
"ts": "2020-07-03T03:09:58.376113474-07:00",
"msg": "Loki Event collection started, interval: 2m0s, URL: http://loki:3100",
"tags": {
"type": "info"
}
},
{
"ts": "2020-07-03T04:05:58.656262803-07:00",
"msg": "Events sent to Loki. Event: 0, IDS: 0, Alarm: 0, Anomaly: 0, Dur: 280ms",
"tags": {
"type": "info"
}
}
]

/api/v1/input/<input>

Prints configuration for <input> input plugin.

$ curl -s unifi.poller:37288/api/v1/input/unifi | jq .
{
"defaults": {
"verify_ssl": false,
"save_anomalies": false,
"save_alarms": false,
"save_events": false,
"save_ids": false,
"save_dpi": false,
"hash_pii": false,
"save_sites": true,
"user": "unifipoller",
"pass": "true",
"url": "https://127.0.0.1:8443",
"sites": [
"all"
]
},
"disable": false,
"dynamic": false,
"controllers": [
{
"verify_ssl": false,
"save_anomalies": true,
"save_alarms": true,
"save_events": true,
"save_ids": true,
"save_dpi": true,
"hash_pii": false,
"save_sites": true,
"user": "unifipoller",
"pass": "true",
"url": "https://unifi-controller:8443",
"sites": [
"all"
],
"id": "572e0211-a02a-4d09-b6a5-bad63fb76f1c"
}
]
}

/api/v1/input/<input>/eventgroups

Prints all event-groups present for the requested input plugin. Currently the unifi input plugin has one group for the plugin itself, and four groups for each configured site. The four groups are alarms, events, ids, anomalies, and each is prefixed with the site ID.

$ curl -s unifi.poller:37288/api/v1/input/unifi/eventgroups | jq .
[
"unifi",
"574e86664333ffb999a2683f_alarms",
"574e86664333ffb999a2683f_events",
"574e86664333ffb999a2683f_ids",
"574e86664333ffb999a2683f_anomalies"
]

/api/v1/input/<input>/eventgroups/<siteID>

Prints all event-groups present for the requested input plugin and siteID.

$ curl -s unifi.poller:37288/api/v1/input/unifi/eventgroups/574e86664333ffb999a2683f | jq .
[
"574e86664333ffb999a2683f_alarms",
"574e86664333ffb999a2683f_events",
"574e86664333ffb999a2683f_ids",
"574e86664333ffb999a2683f_anomalies"
]

/api/v1/input/<input>/events/<group>

Prints events specific to the requested input and group.

curl -s unifi.poller:37288/api/v1/input/unifi/events/unifi | jq .
{
"latest": "2020-07-04T00:30:04.461330789-07:00",
"events": [
{
"ts": "2020-07-04T00:28:31.824048428-07:00",
"msg": "Requested https://unifi-controller:8443/api/s/default/stat/anomalies?scale=hourly&end=1593847711000: elapsed 7ms, returned 421 bytes",
"tags": {
"type": "debug"
}
},
{
"ts": "2020-07-04T00:32:04.45699961-07:00",
"msg": "Unmarshalling Device Type: usw, site Home (default) ",
"tags": {
"type": "debug"
}
},
{
"ts": "2020-07-04T00:32:04.461339777-07:00",
"msg": "Unmarshalling Device Type: uap, site Home (default) ",
"tags": {
"type": "debug"
}
}
]
}

/api/v1/input/<input>/events

Prints all events for the specified plugin. Looks like output plugin events.

/api/v1/input/<input>/sites

Prints the most recently collected sites and some meta data.

$ curl -s unifi.poller:37288/api/v1/input/unifi/sites | jq .
[
{
"id": "574e86664333ffb999a2683f",
"name": "default",
"desc": "Home",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c"
}
]

/api/v1/input/<input>/clients

Prints the most recently collected clients and some meta data.

$ curl -s unifi.poller:37288/api/v1/input/unifi/clients | jq .
[
{
"rx_bytes": 2273696,
"tx_bytes": 4029181,
"name": "RMPROPLUS-43-3c-88",
"site_id": "574e86664333ffb999a2683f",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c",
"mac": "34:ea:34:43:3c:88",
"ip": "192.168.1.17",
"type": "wireless",
"device_mac": "b4:fb:e4:d2:74:39",
"since": "2020-03-29T04:37:32-07:00",
"last": "2020-07-03T04:10:36-07:00"
},
{
"rx_bytes": 1530352814,
"tx_bytes": 205398316,
"name": "ubuntu",
"site_id": "574e86664333ffb999a2683f",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c",
"mac": "52:54:00:9a:ea:9e",
"ip": "",
"type": "wired",
"device_mac": "80:2a:a8:5d:86:32",
"since": "2020-05-03T04:37:21-07:00",
"last": "2020-07-03T04:10:46-07:00"
}
]

/api/v1/input/<input>/clients/<siteID>

Prints the most recently collected clients from a specific site.

$ curl -s unifi.poller:37288/api/v1/input/unifi/clients/574e86664333ffb999a2683f | jq .
# Looks the same as above.

/api/v1/input/<input>/devices

Prints the most recently collected devices and some meta data.

$ curl -s unifi.poller:37288/api/v1/input/unifi/devices | jq .
[
{
"clients": 3,
"uptime": 4835552,
"name": "wap-lower",
"site_id": "574e86664333ffb999a2683f",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c",
"mac": "80:2a:a8:11:ea:78",
"ip": "192.168.1.14",
"type": "uap",
"model": "U7PG2",
"version": "4.3.13.11253"
},
{
"clients": 14,
"uptime": 4834600,
"name": "wap-upper",
"site_id": "574e86664333ffb999a2683f",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c",
"mac": "b4:fb:e4:d2:46:93",
"ip": "192.168.1.215",
"type": "uap",
"model": "U7NHD",
"version": "4.3.13.11253"
},
{
"clients": 2,
"uptime": 4834344,
"name": "wap-wall",
"site_id": "574e86664333ffb999a2683f",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c",
"mac": "74:83:c2:d4:22:d3",
"ip": "192.168.1.190",
"type": "uap",
"model": "UHDIW",
"version": "4.3.13.11253"
},
{
"clients": 19,
"uptime": 4834869,
"name": "switch",
"site_id": "574e86664333ffb999a2683f",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c",
"mac": "80:2a:a8:5d:68:23",
"ip": "192.168.1.7",
"type": "usw",
"model": "US48P750",
"version": "4.3.13.11253"
},
{
"clients": 26,
"uptime": 4921914,
"name": "gateway",
"site_id": "574e86664333ffb999a2683f",
"source": "https://unifi-controller:8443",
"controller": "572e0211-a02a-4d09-b6a5-bad63fb76f1c",
"mac": "74:83:c2:1a:53:93",
"ip": "67.181.75.120",
"type": "ugw",
"model": "UGW4",
"version": "4.4.51.5287926"
}
]

/api/v1/input/<input>/devices/<siteID>

Prints the most recently collected devices from a specific site.

$ curl -s unifi.poller:37288/api/v1/input/unifi/devices/574e86664333ffb999a2683f | jq .
# Looks the same as above.