Try Live
Add Docs
Rankings
Pricing
Enterprise
Docs
Install
Install
Docs
Pricing
Enterprise
More...
More...
Try Live
Rankings
Add Docs
Veeam Backup & Replication Docs
https://github.com/comnam90/veeam-docs-vbr-dump
Admin
Unofficial documentation dump for Veeam Backup & Replication (VBR). Includes user guide, PowerShell
...
Tokens:
2,953,379
Snippets:
16,555
Trust Score:
7.3
Update:
1 month ago
Context
Skills
Chat
Benchmark
79.4
Suggestions
Latest
Show doc for...
Code
Info
Show Results
Context Summary (auto-generated)
Raw
Copy
Link
# Veeam Backup & Replication Documentation Veeam Backup & Replication is an enterprise-grade data protection solution that provides backup, replication, and recovery capabilities for virtual, physical, and cloud-based workloads. It supports VMware vSphere, Microsoft Hyper-V, and various cloud platforms including AWS, Azure, and Google Cloud. The solution offers comprehensive data protection through VM backups, file-level recovery, instant VM recovery, application-aware processing for databases like SQL Server and Oracle, and continuous data protection (CDP) for near-zero RPO requirements. This documentation covers the Enterprise Manager REST API for programmatic management, PowerShell cmdlets for automation, and configuration guides for all supported platforms. The REST API enables integration with external systems for job management, backup monitoring, and restore operations, while PowerShell provides deep automation capabilities for backup infrastructure management, job creation, and disaster recovery workflows. ## Enterprise Manager REST API ### Authentication - Create Session Authenticate with Veeam Backup Enterprise Manager to obtain a session token for subsequent API calls. The API uses Basic HTTP Authentication with base64-encoded credentials, returning an X-RestSvcSessionId token that must be included in all subsequent requests. ```bash # Encode credentials (username:password) in base64 CREDENTIALS=$(echo -n "DOMAIN\Administrator:password" | base64) # Create a new logon session curl -X POST "https://enterprise-manager:9398/api/sessionMngr/?v=latest" \ -H "Authorization: Basic $CREDENTIALS" \ -H "Accept: application/json" # Response includes X-RestSvcSessionId header - save it for subsequent requests # Example response header: X-RestSvcSessionId: O9Msj3rq7EGUhtSMBQx+mw== # Use the session token in all subsequent API calls curl -X GET "https://enterprise-manager:9398/api/jobs" \ -H "X-RestSvcSessionId: O9Msj3rq7EGUhtSMBQx+mw==" \ -H "Accept: application/json" ``` ### GET /backupServers - List Backup Servers Retrieves all backup servers connected to Veeam Backup Enterprise Manager. This endpoint returns server references including their IDs, names, and connection status, which are required for many other API operations. ```bash # Get list of all connected backup servers curl -X GET "https://enterprise-manager:9398/api/backupServers" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Get detailed entity representation curl -X GET "https://enterprise-manager:9398/api/backupServers?format=Entity" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Response example (XML): # <EntityReferences xmlns="http://www.veeam.com/ent/v1.0"> # <Ref Type="BackupServerReference" # Href="https://em:9398/api/backupServers/d1444f74-27e6-4399-81a9-d28ba98913f0" # Name="backup-server.domain.com" # UID="urn:veeam:BackupServer:d1444f74-27e6-4399-81a9-d28ba98913f0"/> # </EntityReferences> ``` ### GET /jobs - List All Jobs Returns all backup, replication, and backup copy jobs from all connected backup servers. Supports filtering by job type and returns job configuration details including schedule settings. ```bash # Get all jobs (references only) curl -X GET "https://enterprise-manager:9398/api/jobs" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Get jobs with full entity details curl -X GET "https://enterprise-manager:9398/api/jobs?format=Entity" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Get specific job by ID curl -X GET "https://enterprise-manager:9398/api/jobs/5658281f-625e-4627-89dd-d2a0c48be99e?format=Entity" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Query jobs with filtering curl -X GET "https://enterprise-manager:9398/api/query?type=Job&filter=JobType==Backup" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" ``` ### POST /jobs/{ID}?action=start - Start a Job Starts a backup or replication job by its ID. The operation is asynchronous and returns a task resource that can be polled to track progress. Use action=sync for backup copy jobs instead. ```bash # Start a backup job curl -X POST "https://enterprise-manager:9398/api/jobs/78c3919c-54d7-43fe-b047-485d3566f11f?action=start" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Response: 202 Accepted with task reference # <Task Type="Task" Href="https://localhost:9398/api/tasks/task-1"> # Poll task status curl -X GET "https://enterprise-manager:9398/api/tasks/task-1" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Task completion response: # <Task> # <TaskId>task-1</TaskId> # <State>Finished</State> # <Operation>StartJob</Operation> # <Result Success="true"> # <Message>Job "Oracle Backup" triggered to start.</Message> # </Result> # </Task> ``` ### POST /jobs/{ID}?action=stop - Stop a Running Job Stops a currently running backup or replication job. Returns a task that can be polled to confirm the job has been stopped successfully. ```bash # Stop a running job curl -X POST "https://enterprise-manager:9398/api/jobs/78c3919c-54d7-43fe-b047-485d3566f11f?action=stop" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Response: 202 Accepted # Poll the returned task URL to confirm job stopped curl -X GET "https://enterprise-manager:9398/api/tasks/task-1" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Successful stop response: # <Task> # <State>Finished</State> # <Operation>StopJob</Operation> # <Result Success="true"> # <Message>Job "Oracle Backup" triggered to stop.</Message> # </Result> # </Task> ``` ### GET /backups - List All Backups Returns all backups created on or imported to connected backup servers. Each backup contains restore points for all machines processed by the associated job. ```bash # Get all backups curl -X GET "https://enterprise-manager:9398/api/backups" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Get backup details by ID curl -X GET "https://enterprise-manager:9398/api/backups/BACKUP_ID?format=Entity" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Get restore points for a specific backup curl -X GET "https://enterprise-manager:9398/api/backups/BACKUP_ID/restorePoints" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" ``` ### GET /restorePoints - List Restore Points Returns all restore points for backups and replicas. Restore points represent specific points in time from which VMs can be recovered. ```bash # Get all restore points curl -X GET "https://enterprise-manager:9398/api/restorePoints" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Get VM-level restore points curl -X GET "https://enterprise-manager:9398/api/vmRestorePoints" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Query restore points with filtering curl -X GET "https://enterprise-manager:9398/api/query?type=RestorePoint&filter=CreationTime>2024-01-01" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" ``` ### GET /repositories - List Backup Repositories Returns all backup repositories configured on connected backup servers, including storage capacity and usage information. ```bash # Get all repositories curl -X GET "https://enterprise-manager:9398/api/repositories" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" # Get repository with full details curl -X GET "https://enterprise-manager:9398/api/repositories?format=Entity" \ -H "X-RestSvcSessionId: YOUR_SESSION_ID" \ -H "Accept: application/json" ``` ## PowerShell Cmdlets ### Get-VBRJob - Retrieve Backup Jobs Returns backup and replication jobs from the Veeam Backup & Replication database. Supports filtering by name and returns CBackupJob objects that can be piped to other cmdlets. ```powershell # Get all backup and replication jobs Get-VBRJob # Get jobs by name (supports wildcards) Get-VBRJob -Name "File*" # Get specific jobs Get-VBRJob -Name "Exchange Backup", "SQL Server Backup" # Get job and view its properties $job = Get-VBRJob -Name "Production Backup" $job | Format-List * # Get jobs and filter by type Get-VBRJob | Where-Object { $_.JobType -eq "Backup" } ``` ### Start-VBRJob - Start Backup Jobs Starts a backup or replication job. Supports running full backups, retrying failed jobs, and starting chained jobs. Works with jobs retrieved via Get-VBRJob. ```powershell # Start a job using pipeline Get-VBRJob -Name "WebApplications Server Backup" | Start-VBRJob # Start multiple jobs Get-VBRJob -Name "WebApplications Server Backup", "Fileserver Copy Job" | Start-VBRJob # Force a full backup Get-VBRJob -Name "WebApplications Server Backup" | Start-VBRJob -FullBackup # Retry a failed job asynchronously $job = Get-VBRJob -Name "Backup Job" Start-VBRJob -Job $job -RetryBackup -RunAsync # Start job and wait for completion $job = Get-VBRJob -Name "Critical Backup" Start-VBRJob -Job $job Write-Host "Backup completed" ``` ### Add-VBRViBackupJob - Create VMware Backup Job Creates a new VMware vSphere backup job with specified VMs, repository, and optional encryption settings. The job must be started manually or scheduled after creation. ```powershell # Create a basic backup job $Repository = Get-VBRBackupRepository -Name "Backup Repository" $VMs = Find-VBRViEntity -Name "Exchange*" Add-VBRViBackupJob -Name "Exchange Backup" -BackupRepository $Repository -Entity $VMs # Create backup job with description $Repository = Get-VBRBackupRepository -Name "Backup Repository" $VM = Find-VBRViEntity -Name "VM01" Add-VBRViBackupJob -Name "VM01 Backup" -BackupRepository $Repository -Entity $VM -Description "Daily backup of VM01" # Create encrypted backup job $Repository = Get-VBRBackupRepository -Name "Secure Repository" $VMs = Find-VBRViEntity -Name "Financial*" $Key = Get-VBREncryptionKey -Description "AES-256 Key" Add-VBRViBackupJob -Name "Financial Backup" -BackupRepository $Repository -Entity $VMs -EncryptionKey $Key # Create job and immediately schedule it $Repository = Get-VBRBackupRepository -Name "Backup Repository" $VM = Find-VBRViEntity -Name "WebServer" $job = Add-VBRViBackupJob -Name "WebServer Backup" -BackupRepository $Repository -Entity $VM Set-VBRJobSchedule -Job $job -Daily -At "22:00" -DailyKind Everyday Enable-VBRJobSchedule -Job $job ``` ### Get-VBRBackup - Retrieve Backups Returns backup metadata from the Veeam database. Each backup contains all restore points for machines processed by the associated job. ```powershell # Get all backups Get-VBRBackup # Get backup by ID Get-VBRBackup -Id "d6b08a78-f405-400a-bb02-a132cf1778fa" # Get backups by job name Get-VBRBackup -Name "Cloud Webservices Backup", "Exchange Backup_imported" # Get VeeamZIP backups only Get-VBRBackup -VeeamZIP # Get backup and its restore points $backup = Get-VBRBackup -Name "Production Backup" Get-VBRRestorePoint -Backup $backup ``` ### Get-VBRRestorePoint - Retrieve Restore Points Returns restore points for backups and replicas. Restore points are used as the source for VM and file-level recovery operations. ```powershell # Get all restore points Get-VBRRestorePoint # Get restore point by ID Get-VBRRestorePoint -Id "2ee79fec-9aa8-4058-a147-ff6b76ef2924" # Get restore points for specific VM from a backup $backup = Get-VBRBackup -Name "MSExchange" Get-VBRRestorePoint -Name "*MSExchange02*" -Backup $backup # Get latest restore point Get-VBRBackup -Name "MSExchange Backup" | Get-VBRRestorePoint -Name "MSExchange02" | Sort-Object -Property CreationTime -Descending | Select-Object -First 1 # Get restore points from replica $replica = Get-VBRReplica -Name "DC Replica" Get-VBRRestorePoint -Backup $replica ``` ### Start-VBRRestoreVM - Restore Virtual Machine Performs full VM restore from a restore point. Supports restoring to original location, different location, staged restore with scripts, and secure restore with antivirus scanning. ```powershell # Restore VM to original location $restorepoint = Get-VBRRestorePoint -Name "WebServer" | Select-Object -First 1 Start-VBRRestoreVM -RestorePoint $restorepoint -ToOriginalLocation -Reason "Test restore" # Restore VM to different location $restorepoint = Get-VBRRestorePoint -Name "WebServer" | Select-Object -First 1 $server = Get-VBRServer -Name "esxi-host.domain.com" $rpool = Find-VBRViResourcePool -Server $server $datastore = Find-VBRViDatastore -Server $server -Name "Datastore1" Start-VBRRestoreVM -RestorePoint $restorepoint -Server $server -ResourcePool $rpool -Datastore $datastore -PowerUp:$true # Restore with different VM name $restorepoint = Get-VBRRestorePoint -Name "WebServer" | Select-Object -First 1 $server = Get-VBRServer -Name "esxi-host.domain.com" Start-VBRRestoreVM -RestorePoint $restorepoint -Server $server -VMName "WebServer-Restored" -DiskType Thin # Staged restore with script execution $restorepoint = Get-VBRRestorePoint -Name "DBServer" | Select-Object -First 1 $server = Get-VBRServer -Name "esxi-host.domain.com" $lab = Get-VSBVirtualLab -Name "VirtualLab" $creds = Get-VBRCredentials -Name "Administrator" Start-VBRRestoreVM -RestorePoint $restorepoint -Server $server -StagingVirtualLab $lab -StagingScript "c:\scripts\prepare.cmd" -EnableStagedRestore -StagingCredentials $creds ``` ### Get-VBRBackupRepository - List Repositories Returns backup repositories configured in the backup infrastructure. Supports retrieving standard and scale-out backup repositories. ```powershell # Get all standalone repositories Get-VBRBackupRepository # Get scale-out backup repositories Get-VBRBackupRepository -ScaleOut # Get repository by name Get-VBRBackupRepository -Name "Backup Repository" # Get repositories with wildcard Get-VBRBackupRepository -Name "Local*" # Check repository capacity $repo = Get-VBRBackupRepository -Name "Main Repository" $repo | Select-Object Name, Path, @{N='FreeGB';E={[math]::Round($_.GetContainer().CachedFreeSpace.InGigabytes,2)}} ``` ### Stop-VBRJob - Stop Running Jobs Stops a running backup or replication job immediately. The job session will be marked as stopped in the job history. ```powershell # Stop a job using pipeline Get-VBRJob -Name "Long Running Backup" | Stop-VBRJob # Stop job and wait for confirmation $job = Get-VBRJob -Name "Backup Job" Stop-VBRJob -Job $job # Stop all running jobs Get-VBRJob | Where-Object { $_.GetLastState() -eq "Working" } | Stop-VBRJob ``` ## Summary Veeam Backup & Replication provides comprehensive data protection through its REST API and PowerShell interfaces. The Enterprise Manager REST API enables external system integration for backup monitoring, job management, and automated recovery workflows using standard HTTP methods with XML or JSON responses. Common integration patterns include building custom dashboards that poll job status, triggering backups from CI/CD pipelines, and automating disaster recovery testing through programmatic restore operations. PowerShell automation is ideal for managing backup infrastructure at scale, implementing custom retention policies, and scripting complex recovery scenarios. Typical use cases include creating backup jobs dynamically based on VM tags, scheduling full backups during maintenance windows, automating restore testing with verification scripts, and generating compliance reports from backup session data. Both interfaces support the full range of Veeam capabilities including backup, replication, CDP policies, and cloud connect for service providers.