Backup Dashboard API

Track running, successful, and failed backups with simple HTTP calls from your backup platform.

Virtualmin example

Start the daily job with integration metadata, then mark completion.

GET "https://backupdashboard.com/api/v1/job?api_token=secret&frequency=daily&type=incremental&status=start&integration=virtualmin"
GET "https://backupdashboard.com/api/v1/job?api_token=secret&frequency=daily&type=incremental&status=success"

Generic flow

Use these status values to track job lifecycle events.

GET "https://backupdashboard.com/api/v1/job?api_token=secret&frequency=daily&type=incremental&status=running"
GET "https://backupdashboard.com/api/v1/job?api_token=secret&frequency=daily&type=incremental&status=success"
GET "https://backupdashboard.com/api/v1/job?api_token=secret&frequency=daily&type=incremental&status=error"

JetBackup hooks

Wire this into JetBackup pre and post hooks. Replace the API token with your own secret.

<?php
$url = "https://backupdashboard.com/api/v1/job?api_token=secret";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['jetbackup_pre_hook' => $argv]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
<?php
$url = "https://backupdashboard.com/api/v1/job?api_token=secret";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['jetbackup_post_hook' => $argv]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
Pyhton
import json
import requests
import sys

url = "https://backupdashboard.com/api/v1/job?api_token=secret"
data = json.dumps({"jetbackup_pre_hook": sys.argv})
headers = {
    "Content-Type": "application/json",
}

response = requests.post(url, data=data, headers=headers)
print(response.status_code)
print(response.text)