* * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. Please see LICENSE.txt at the top level of * the source code distribution for details. */ if ($_SESSION['userlevel'] == '10') { ?>

Introduction

The API is designed to enable you to interact with your installtion from other systems, monitoring systems, apps or websites using any programming language that can make a web request and both send and receive json data. This documentation will provide you the methods, accepted parameters and responses from the API.



Token authentication

Authentication against the API is done by tokens which are assigned to a user account. You can view and create tokens using the API access link within the System > API menu.


To send the token to the API you need to do this by using the X-Auth-Token within the header. As example if your API token was 91c60e737e342c205be5bba8e2954d27 then you would send the following X-Auth-Token: 91c60e737e342c205be5bba8e2954d27. As an example using curl within PHP you would do something like this:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Auth-Token: 91c60e737e342c205be5bba8e2954d27'));


API Responses

The following responses are standard across each request type except for where an image would be returned directly, the response will be output in json format:

status
message

This will contain the reason for the success or failure of the request.




API request types

The following request types are currently used:



Available requests

Version Path (required) Additional variables / JSON Data Returns
Port Graphs
/api /v0 /devices/$hostname/ports/$ifName/$type
  • $hostname = the hostname of the device you want the graph for
  • $ifName = The ifName of the interface you want a graph for
  • $type = the type of graph for the port (port_bits,port_upkts)
  • $width = the width of the graph to be returned
  • $height = the height of the graph to be returned
  • $from = the from date/time of the graph (unix timestamp)
  • $to = the to date/time of the graph (unix timestamp)
PNG Image
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost/ports/eth0/port_bits" > /tmp/graph.png
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost/ports/eth0/port_bits?width=1024&height=768&from=1405457456&to=1405543856" > /tmp/graph.png
General Info
/api /v0 /devices/$hostname
  • $hostname = the hostname of the device you want the information about
JSON
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost" > localhost.json
General Graphs
/api /v0 /devices/$hostname/$type
  • $hostname = the hostname of the device you want the graph for
  • $type = the type of graph for the device (device_processor,device_storage)
  • $width = the width of the graph to be returned
  • $height = the height of the graph to be returned
  • $from = the from date/time of the graph (unix timestamp)
  • $to = the to date/time of the graph (unix timestamp)
PNG Image
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost/device_processor" > /tmp/graph.png
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost/device_processor?width=1024&height=768&from=1405457456&to=1405543856" > /tmp/graph.png
Port Stats
/api /v0 /devices/$hostname/ports/$ifName
  • $hostname = the hostname of the device
  • $ifName = the ifName of the port
JSON
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost/ports/eth0"
List
/api /v0 /devices
  • $order = the name of the column to order by
  • $type = this is the device status (all, ignored, up, down, disabled)
JSON
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices"
curl -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices?order=hostname&type=all"
Add
/api /v0 /devices
  • hostname = the hostname to be added
  • version = the version of snmp to use
  • community = the community to use
  • port = the port to use
  • transport = the transport to use
  • authlevel = the auth level to use for v3
  • authname = the auth name to use for v3
  • authpass = the auth pass to use for v3
  • authalog = the auth algorythm to use for v3
  • cryptopass = the crypto pass to use for v3
  • cryptoalgo = the crytpo algo to use for v3
JSON
curl -X POST -d '{"hostname":"localhost.localdomain","version":"v0","community":"public"}' \
-H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices"
Delete
/api /v0 /devices/$hostname
  • hostname = the hostname to be deleted
JSON
curl -X DELETE -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost"
List VLANs
/api /v0 /vlans/$hostname
  • hostname = the hostname to list vlans for
JSON
curl -X DELETE -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/vlans/localhost"