Restore Operations
Full organization restores, granular feature-level restores, pre-flight safety validation, and atomic restores with automatic rollback.
All endpoints require Authorization: Bearer <token>.
How Restore Works
Every restore follows the same safety sequence: pre-flight validation checks the live org state before anything is applied, changes are applied atomically, and if any step fails midway the engine automatically rolls the network back to the snapshot taken at the start of the operation.
| Step | What happens |
|---|---|
| 1. Pre-flight | Validate that the target org/network exists and is reachable. Check feature compatibility. |
| 2. Snapshot | Capture the current live state as a rollback checkpoint before applying any changes. |
| 3. Apply | Push each selected feature back to the Meraki Dashboard API in sequence. |
| 4. Verify | Confirm each change landed. If any step fails, the rollback checkpoint is applied automatically. |
List Available Backups
/api/restore/get_backup_list_for_org Returns a deduplicated list of backup IDs available for restore. Includes both local-disk backups and Azure-only backups. Azure-only entries are re-hydrated on demand when a restore or viewer request is made.
| org_id | string | Filter by organization. Omit to list backups for all orgs. |
Response (200)
[ "2026-05-18_org_L_123456", "2026-05-17_org_L_123456", "2026-05-16_org_L_123456" ]
Full Organization Restore
/api/restore/restore_org_from_file When preview=false this operation modifies your live Meraki configuration. Always run with preview=true first.
Restores a full organization configuration from a backup. Runs pre-flight safety checks before applying any changes. Returns a RestorePreviewResponse when preview=true, or true / false on execute.
Query parameters
| org_id required | string | Target Meraki organization ID |
| backup_path required | string | Backup ID (folder name) to restore from |
| preview | boolean | If true, validate and return a preview without applying changes. Default: false |
Preview response shape
{
"networks": [
{
"network_id": "N_abc123",
"network_name": "Office-Main",
"changes": ["vlans", "firewall_rules"],
"warnings": []
}
],
"total_changes": 12,
"estimated_duration_seconds": 45
} # Preview first curl -X POST "https://your-host/api/restore/restore_org_from_file?org_id=L_123456&backup_path=2026-05-17_org_L_123456&preview=true" \ -H "Authorization: Bearer <token>" # Then execute curl -X POST "https://your-host/api/restore/restore_org_from_file?org_id=L_123456&backup_path=2026-05-17_org_L_123456" \ -H "Authorization: Bearer <token>"
Granular Restore
Select individual features (VLANs, firewall rules, SSIDs, switch ports, device assignments) and restore only those, without touching unrelated configuration.
/granular/features Returns all feature keys supported for granular restore, with display names and categories.
/granular/features/by-category Same as above, grouped by category (Switching, Wireless, Security, etc.).
/granular/backups/{backup_id}/features Lists which feature keys are present in a specific backup.
/granular/backups/{backup_id}/features/{feature_id}/items Returns the actual items stored for a feature in a backup (e.g. the list of VLANs). Filter by network with the optional network_id query param.
/granular/preview Returns a diff of what would change if the selected features were restored. Body: GranularRestoreRequest.
{
"backup_id": "2026-05-17_org_L_123456",
"org_id": "L_123456",
"features": ["vlans", "firewall_rules"],
"network_ids": ["N_abc123"]
} /granular/execute Executes the granular restore. Same body shape as /granular/preview. Returns a GranularRestoreResult with per-feature outcomes.
Response shape
{
"success": true,
"results": [
{ "feature": "vlans", "network_id": "N_abc123", "status": "applied", "changes": 3 },
{ "feature": "firewall_rules", "network_id": "N_abc123", "status": "applied", "changes": 7 }
],
"rolled_back": false
} Pre-flight Validation
/granular/preflight Validates the restore request against the live Meraki org without applying any changes. Checks that the target networks exist, are reachable, and that the backup features are compatible with current network types.
Request body: PreflightValidationRequest
{
"backup_id": "2026-05-17_org_L_123456",
"org_id": "L_123456",
"features": ["vlans", "ssids"],
"network_ids": ["N_abc123", "N_def456"]
} Response: PreflightValidationResponse
{
"valid": true,
"warnings": [
{
"network_id": "N_def456",
"feature": "ssids",
"message": "Network has fewer SSID slots than backup; slots 9-14 will be skipped"
}
],
"errors": []
} /granular/networks/{network_id}/validate Validates that a specific target network is reachable and compatible. Returns a NetworkValidationResponse.
Atomic Restore
Atomic restores are long-running operations that can be monitored in real time. The engine takes a pre-restore snapshot, applies changes, and automatically rolls back to the snapshot if any step fails.
/granular/atomic Start an atomic restore. Returns a restore_id immediately. Poll the status endpoint to track progress. Body: AtomicRestoreRequest.
{
"backup_id": "2026-05-17_org_L_123456",
"org_id": "L_123456",
"features": ["vlans", "firewall_rules", "ssids"],
"network_ids": ["N_abc123"]
} Response: AtomicRestoreResponse
{
"restore_id": "rst_a1b2c3d4",
"status": "pending",
"created_at": "2026-05-18T11:00:00Z"
} /granular/atomic/{restore_id} Poll for the current status of an atomic restore. Returns an AtomicRestoreStatus.
{
"restore_id": "rst_a1b2c3d4",
"status": "in_progress",
"progress_pct": 60,
"current_step": "Applying firewall_rules to N_abc123",
"rolled_back": false,
"completed_at": null
} /granular/atomic Lists all atomic restore sessions for the current user.
Manual Rollback
/granular/atomic/{restore_id}/rollback Manually triggers a rollback for a completed or failed atomic restore, applying the pre-restore snapshot back to the live org. Automatic rollback is triggered by the engine on failure; this endpoint covers the case where you want to undo a successful restore after the fact.
The rollback snapshot is only retained for a limited window after the restore completes. Check AtomicRestoreStatus.rollback_available before calling this endpoint.
Compatibility Check
/granular/compatibility Checks whether a backup's feature set is compatible with the target network before attempting a restore. Useful when restoring between different network types (e.g. MX to MX, MS to MS) or firmware versions.
Request body: CompatibilityCheckRequest
{
"backup_id": "2026-05-17_org_L_123456",
"target_network_id": "N_abc123",
"features": ["vlans", "ssids"]
} Response: CompatibilityCheckResponse
{
"compatible": true,
"issues": [],
"warnings": ["SSID count in backup (14) exceeds target limit (8); first 8 will be restored"]
} Restore to an Existing Network
/granular/networks Lists available target networks in an org for restore targeting.
| org_id required | string | Organization to list networks from |
| product_types | string | Comma-separated filter (e.g. appliance,switch) |
/granular/existing-network
Restores selected features from a backup into an existing target network, which may differ from the original source network. Useful for cloning configurations across sites.
Body: ExistingNetworkRestoreRequest.
{
"backup_id": "2026-05-17_org_L_123456",
"source_network_id": "N_abc123",
"target_network_id": "N_xyz789",
"features": ["vlans", "switch_ports"]
}