Skip to main content
Cloud

API Reference - Backups

The Backups API lets you manage NetBox Cloud backups programmatically. It covers three operations:

  • Request Backups -- trigger on-demand backups and list existing backups
  • Retrieve Backups -- request download access to a backup file
  • Restore Backups -- restore a NetBox instance from a retrieved backup

Each operation has its own Read and Write permission. Assign permissions when creating your API key.

Pagination

List responses follow this structure:

{
"data": [],
"metadata": {
"pagination": {
"current_page": 1,
"page_size": 100,
"total_items": 42,
"total_pages": 1,
"first_page": true,
"last_page": false
}
}
}

Request Backups

Use Request Backups to list existing backups and trigger new ones.

Required permission: Read (GET) or Write (POST)

List backups

GET /v2/organization/{org_id}/backups/

Query parameters:

ParameterTypeDescription
initial_datestring (YYYY-MM-DD)Optional. Filter by start date. UTC
end_datestring (YYYY-MM-DD)Optional. Filter by end date. UTC
pagestringOptional. Page number (default: 1)
page_sizestringOptional. Results per page (default: 100)

Example response item:

{
"id": "67a6a02d-0b23-4c7b-b7fa-08d4aa7643ab",
"obj_id": "nb-a12ff000777",
"obj_type": "netbox",
"obj_version": "4.2.9",
"trigger_id": "",
"trigger_type": "scheduled",
"checksum": "a21ae13...",
"size_bytes": 220673,
"duration": 47, //seconds
"created": "2026-03-23T01:17:10.802995Z"
}

List backup requests

GET /v2/organization/{org_id}/backup-requests/

Query parameters:

ParameterTypeDescription
pagestringOptional. Page number (default: 1)
page_sizestringOptional. Results per page (default: 100)

Example response item:

{
"id": "254fdc9b-ca40-4e13-b500-c8884ecb69be",
"obj_id": "nb-a12ff000777",
"obj_type": "netbox",
"created": "2026-03-21T08:38:17.159662Z",
"started": "2026-03-21T08:38:18.543679Z",
"completed": "2026-03-21T08:39:06.753242Z"
}

Request a backup

POST /v2/organization/{org_id}/backup-requests/

Request body:

{
"obj_id": "nb-a12ff000777",
"obj_type": "netbox"
}
FieldDescription
obj_idRequired. The ID of the NetBox instance to back up (for example, nb-aabbccddee01)
obj_typeRequired. Always "netbox"

Example response:

{
"id": "24b8878d-36c8-4d56-97cd-cd21fa575ebb"
}

The response id is the backup request ID. Use List backup requests to check its status.


Retrieve Backups

Use Retrieve Backups to request download access to a backup file. A retrieval generates a time-limited download URL.

Required permission: Read (GET) or Write (POST)

List retrievals

GET /v2/organization/{org_id}/backup-retrieved/

Query parameters:

ParameterTypeDescription
pagestringOptional. Page number (default: 1)
page_sizestringOptional. Results per page (default: 100)

Example response item:

{
"id": "97c6c02d-0b23-4c7b-b7fa-08d4aa7643cd",
"backup_id": "6eaaef10-471b-4226-bc30-852ead73ee83",
"backup_version": "4.2.9",
"presigned_url": "https://backup_retrieval.netboxlabs.com/...",
"created": "2026-03-23T19:39:23.935566Z",
"created_by": "user@example.com",
"started": "2026-03-23T19:39:25.226295Z",
"completed": "2026-03-23T19:39:26.307355Z",
"expires": "2026-03-23T22:39:26.288072Z"
}

The presigned_url field contains a time-limited URL for downloading the backup file. It is valid until the datetime in the expires field.

Request a retrieval

POST /v2/organization/{org_id}/backup-retrieved/

Request body:

{
"backup_id": "80acb50b-c08e-4233-bc32-bf8f5ce61031"
}

The backup_id field is required. Use the id from a backup in List backups.

Example response:

{
"id": "005bf3ba-aa63-43de-a45b-f8db03e5fdfe"
}

The response id is the retrieval ID. Use List retrievals to check its status and get the download URL once processing completes.


Restore Backups

Use Restore Backups to restore a NetBox instance from a previously retrieved backup.

Required permission: Read (GET) or Write (POST)

List restore jobs

GET /v2/organization/{org_id}/backup-restore/

Query parameters:

ParameterTypeDescription
target_nb_idstringOptional. Filter by target NetBox instance ID

Example response item:

{
"id": "6910836b-d767-44f1-8e5d-9fab2109f751",
"retrieval_id": "d622056f-098f-457d-a560-80ebb35a710b",
"target_nb_id": "nb-a12ff000777",
"target_version_available": false,
"created": "2026-03-24T06:29:26.179537Z",
"created_by": "user@example.com",
"started": "2026-03-24T06:29:29.321058Z",
"completed": "2026-03-24T06:29:48.624347Z",
"failed": null,
"nb_redeployed": "2026-03-24T06:29:51.834606Z"
}

Request a restore

POST /v2/organization/{org_id}/backup-restore/

Request body:

{
"retrieval_id": "84d4a841-1163-4967-b0b0-9b9da03a570e",
"target_nb_id": "nb-b23ff000888"
}

Both fields are required. Use a retrieval_id from List retrievals once the retrieval has completed.

Example response:

{
"id": "d62d6a2d-83bc-49ef-8462-8aca35382a8c"
}

The response id is the restore job ID. Use List restore jobs to check its status.

Additional response codes:

StatusMeaning
422 Unprocessable EntityThe request is valid but cannot be processed, for example if the target version is not available