Restore Stack Snapshot
curl --request POST \
--url https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"restore_image_version": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({restore_image_version: true})
};
fetch('https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore"
payload = { "restore_image_version": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore"
payload := strings.NewReader("{\n \"restore_image_version\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Snapshots
Restore Stack Snapshot
Brings every member of a stack back to a snapshot, databases first and then applications.
POST
/
v1
/
stacks
/
{stack_id}
/
snapshots
/
{snapshot_id}
/
restore
Restore Stack Snapshot
curl --request POST \
--url https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"restore_image_version": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({restore_image_version: true})
};
fetch('https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore"
payload = { "restore_image_version": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore"
payload := strings.NewReader("{\n \"restore_image_version\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Restores all the members together: databases first, then applications. It stops at the first error and reports what was already restored in
details.restored. Needs the stacks:write scope when called with an API key.
string
required
The stack ID.
string
required
The stack snapshot ID.
string
The workspace the stack belongs to, when you act on it as the workspace owner.
boolean
default:"false"
Applications that run a custom image also go back to the image version of the snapshot, if it still exists.
Response
The restore result, as in Restore Application Snapshot.Errors
| Status | Code | When |
|---|---|---|
| 403 | WORKSPACE_OWNER_ONLY | You are a workspace member, not the owner. |
| 404 | STACK_NOT_FOUND | The stack does not exist or belongs to another account. |
Last modified on October 28, 2026