Code Samples #
Copy
curl --request GET \
--url 'https://app.xcloud.host/api/v1/servers/{uuid}/snapshots' \
--header 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://app.xcloud.host/api/v1/servers/{uuid}/snapshots', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
});
const data = await response.json();
console.log(data);
import requests
headers = {
"Authorization": "Bearer YOUR_TOKEN"
}
response = requests.get("https://app.xcloud.host/api/v1/servers/{uuid}/snapshots", headers=headers)
print(response.json())
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://app.xcloud.host/api/v1/servers/{uuid}/snapshots',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_TOKEN'
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
using System.Net.Http;
var client = new HttpClient();
var request = new HttpRequestMessage(new HttpMethod("GET"), "https://app.xcloud.host/api/v1/servers/{uuid}/snapshots");
request.Headers.Add("Authorization", "Bearer YOUR_TOKEN");
var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
import java.net.URI;
import java.net.http.*;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://app.xcloud.host/api/v1/servers/{uuid}/snapshots"))
.header("Authorization", "Bearer YOUR_TOKEN")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Response #
Copy
{
"success": true,
"message": "Snapshots retrieved successfully.",
"data": {
"items": [
{
"uuid": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"name": "pre-deploy",
"description": "Snapshot before v2 release",
"type": "private",
"status": "ready",
"size_bytes": 524288000,
"formatted_size": "500 MB",
"public_url_token": null,
"source_site_uuid": "11aa22bb-33cc-44dd-55ee-66ff77aa88bb",
"source_site_name": "example.com",
"created_at": "2026-04-01T10:00:00Z",
"updated_at": "2026-04-01T10:15:00Z"
}
],
"pagination": {
"total": 1,
"per_page": 15,
"current_page": 1,
"last_page": 1
}
}
}
{
"success": false,
"message": "Unauthenticated.",
"data": null
}
{
"success": false,
"message": "This action is unauthorized. Your token is missing the required scope.",
"data": null
}
{
"success": false,
"message": "Not found.",
"data": null
}
Returns the site snapshots taken from sites hosted on this Server (aggregated across every source site on the Server). These are site-Level backups/snapshots — this is not a Server-image or Server-Level snapshot. Each entry carries the originating site’s UUID and name so callers can correlate back to the site. SSH keypair references, raw meta, and logs are stripped. The public_url_token is included only for public snapshots. Requires the read:servers scope.
Path Parameters #
| Name | Type | Required | Description |
|---|---|---|---|
uuid | string (uuid) | Required | UUID of the Server |
Query Parameters #
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | Optional | Page number (default 1) |
per_page | integer | Optional | Items per page (default 15, max 100) |
Responses #
200 — Paginated list of Server snapshots #
| Field | Type | Required | Description |
|---|---|---|---|
success | boolean | Optional | |
message | string | Optional | |
data | object | Optional | |
data | object | Optional | |
data.items | array of object | Optional | |
data.pagination | object | Optional | |
data.pagination.total | integer | Optional | |
data.pagination.per_page | integer | Optional | |
data.pagination.current_page | integer | Optional | |
data.pagination.last_page | integer | Optional |
Example 200 response
Copy
{
"success": true,
"message": "Snapshots retrieved successfully.",
"data": {
"items": [
{
"uuid": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"name": "pre-deploy",
"description": "Snapshot before v2 release",
"type": "private",
"status": "ready",
"size_bytes": 524288000,
"formatted_size": "500 MB",
"public_url_token": null,
"source_site_uuid": "11aa22bb-33cc-44dd-55ee-66ff77aa88bb",
"source_site_name": "example.com",
"created_at": "2026-04-01T10:00:00Z",
"updated_at": "2026-04-01T10:15:00Z"
}
],
"pagination": {
"total": 1,
"per_page": 15,
"current_page": 1,
"last_page": 1
}
}
}
401 — Missing or invalid authentication token #
| Field | Type | Required | Description |
|---|---|---|---|
success | boolean | Optional | |
message | string | Optional | |
data | object | Optional |
Example 401 response
Copy
{
"success": false,
"message": "Unauthenticated.",
"data": null
}
403 — Token lacks the required scope #
| Field | Type | Required | Description |
|---|---|---|---|
success | boolean | Optional | |
message | string | Optional | |
data | object | Optional |
Example 403 response
Copy
{
"success": false,
"message": "This action is unauthorized. Your token is missing the required scope.",
"data": null
}
404 — Resource not found or not accessible to your Team #
| Field | Type | Required | Description |
|---|---|---|---|
success | boolean | Optional | |
message | string | Optional | |
data | object | Optional |
Example 404 response
Copy
{
"success": false,
"message": "Not found.",
"data": null
}
