External APIs
These endpoints are designed for use by other applications and integrations, for instance Homepage.
Get Overall Summary - /api/summary
- Endpoint:
/api/summary - Method: GET
- Description: Retrieves a summary of all backup operations across all servers.
- Response:
{
"totalServers": 3,
"totalBackupsRuns": 9,
"totalBackups": 9,
"totalUploadedSize": 2397229507,
"totalStorageUsed": 43346796938,
"totalBackupSize": 126089687807,
"overdueBackupsCount": 2,
"secondsSinceLastBackup": 7200
} - Error Responses:
500: Server error fetching summary data
- Notes:
- In version 0.5.x, the field
totalBackupedSizewas replaced bytotalBackupSize - In version 0.7.x, the field
totalMachineswas replaced bytotalServers - The field
overdueBackupsCountshows the number of currently overdue backups - The field
secondsSinceLastBackupshows the time in seconds since the last backup across all servers - Returns fallback response with zeros if data fetching fails
- Note: For internal dashboard use, consider using
/api/dashboardwhich includes this data plus additional information
- In version 0.5.x, the field
Get Latest Backup - /api/lastbackup/:serverId
- Endpoint:
/api/lastbackup/:serverId - Method: GET
- Description: Retrieves the latest backup information for a specific server.
- Parameters:
serverId: the server identifier (ID or name)
note
The server identifier has to be URL Encoded.
- Response:
{
"server": {
"id": "unique-server-id",
"name": "Server Name",
"backup_name": "Backup Name",
"backup_id": "backup-id",
"created_at": "2024-03-20T10:00:00Z"
},
"latest_backup": {
"id": "backup-id",
"server_id": "unique-server-id",
"name": "Backup Name",
"date": "2024-03-20T10:00:00Z",
"status": "Success",
"warnings": 0,
"errors": 0,
"messages": 150,
"fileCount": 249426,
"fileSize": 113395849938,
"uploadedSize": 331318892,
"duration": "00:38:31",
"duration_seconds": 2311.6018052,
"durationInMinutes": 38.52669675333333,
"knownFileSize": 27203688543,
"backup_list_count": 10,
"messages_array": ["message1", "message2"],
"warnings_array": ["warning1"],
"errors_array": [],
"available_backups": ["v1", "v2", "v3"]
},
"status": 200
} - Error Responses:
404: Server not found500: Internal server error
- Notes:
- In version 0.7.x, the response object key changed from
machinetoserver - Server identifier can be either ID or name
- Returns null for latest_backup if no backups exist
- Includes cache control headers to prevent caching
- In version 0.7.x, the response object key changed from
Get Latest Backups - /api/lastbackups/:serverId
- Endpoint:
/api/lastbackups/:serverId - Method: GET
- Description: Retrieves the latest backup information for all configured backups (e.g. 'Files', 'Databases') on a specific server.
- Parameters:
serverId: the server identifier (ID or name)
note
The server identifier has to be URL Encoded.
- Response:
{
"server": {
"id": "unique-server-id",
"name": "Server Name",
"backup_name": "Default Backup",
"backup_id": "backup-id",
"created_at": "2024-03-20T10:00:00Z"
},
"latest_backups": [
{
"id": "backup1",
"server_id": "unique-server-id",
"name": "Files",
"date": "2024-03-20T10:00:00Z",
"status": "Success",
"warnings": 0,
"errors": 0,
"messages": 150,
"fileCount": 249426,
"fileSize": 113395849938,
"uploadedSize": 331318892,
"duration": "00:38:31",
"duration_seconds": 2311.6018052,
"durationInMinutes": 38.52669675333333,
"knownFileSize": 27203688543,
"backup_list_count": 10,
"messages_array": "[\"message1\", \"message2\"]",
"warnings_array": "[\"warning1\"]",
"errors_array": "[]",
"available_backups": ["v1", "v2", "v3"]
},
{
"id": "backup2",
"server_id": "unique-server-id",
"name": "Databases",
"date": "2024-03-20T11:00:00Z",
"status": "Success",
"warnings": 1,
"errors": 0,
"messages": 75,
"fileCount": 125000,
"fileSize": 56789012345,
"uploadedSize": 123456789,
"duration": "00:25:15",
"duration_seconds": 1515.1234567,
"durationInMinutes": 25.25205761166667,
"knownFileSize": 12345678901,
"backup_list_count": 5,
"messages_array": ["message1"],
"warnings_array": ["warning1"],
"errors_array": [],
"available_backups": ["v1", "v2"]
}
],
"backup_jobs_count": 2,
"backup_names": ["Files", "Databases"],
"status": 200
} - Error Responses:
404: Server not found500: Internal server error
- Notes:
- In version 0.7.x, the response object key changed from
machinetoserver, and the fieldbackup_types_countwas renamed tobackup_jobs_count - Server identifier can be either ID or name
- Returns latest backup for each backup job (backup_name) that the server has
- Unlike
/api/lastbackup/:serverIdwhich returns only the single most recent backup of the server (independ of backup job) - Includes cache control headers to prevent caching
- In version 0.7.x, the response object key changed from
Upload Backup Data - /api/upload
-
Endpoint:
/api/upload -
Method: POST
-
Description: Uploads backup operation data for a server. Supports duplicate backup run detection and sends notifications.
-
Request Body: JSON sent by Duplicati with the following options:
--send-http-url=http://my.local.server:9666/api/upload
--send-http-result-output-format=Json
--send-http-log-level=Information -
Response:
{
"success": true
} -
Error Responses:
400: Missing required fields in Extra or Data sections, or invalid MainOperation409: Duplicate backup data (ignored)500: Server error processing backup data
-
Notes:
- Only processes backup operations (MainOperation must be "Backup")
- Validates required fields in Extra section: machine-id, machine-name, backup-name, backup-id
- Validates required fields in Data section: ParsedResult, BeginTime, Duration
- Automatically detects duplicate backup runs and returns 409 status
- Sends notifications after successful backup insertion (if configured)
- Logs request data to a file in the
datadirectory in the root of the project in development mode for debugging - Uses transaction for data consistency