List your cloud servers
curl --request GET \
--url https://my.server.express/api/v1/cloud \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://my.server.express/api/v1/cloud', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://my.server.express/api/v1/cloud"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"teamId": "<string>",
"productId": "<string>",
"type": "CLOUD",
"status": "ACTIVE",
"label": "<string>",
"externalId": "<string>",
"metadata": {
"ipAddress": "<string>",
"ipv6Address": "<string>"
},
"price": 123,
"currency": "<string>",
"billingCycle": "<string>",
"nextDueDate": "2023-11-07T05:31:56Z",
"dunningProtection": "<string>",
"suspendReason": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"powerState": "on",
"powerCheckedAt": "2023-11-07T05:31:56Z",
"product": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"type": "<string>",
"price": 123,
"currency": "<string>",
"billingCycle": "<string>",
"taxable": true,
"active": true
},
"tags": [
"<string>"
],
"ipAddress": "<string>",
"ipv6Address": "<string>"
}
],
"nextCursor": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}Cloud
List your cloud servers
Every CLOUD service you own or that’s shared with you through a team, newest first. Power state comes from the poller
(powerState, powerCheckedAt) — the list never calls Proxmox. Without limit every server is returned and there’s no
nextCursor; with it, results are cursor-paged.
GET
/
v1
/
cloud
List your cloud servers
curl --request GET \
--url https://my.server.express/api/v1/cloud \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://my.server.express/api/v1/cloud', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://my.server.express/api/v1/cloud"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"teamId": "<string>",
"productId": "<string>",
"type": "CLOUD",
"status": "ACTIVE",
"label": "<string>",
"externalId": "<string>",
"metadata": {
"ipAddress": "<string>",
"ipv6Address": "<string>"
},
"price": 123,
"currency": "<string>",
"billingCycle": "<string>",
"nextDueDate": "2023-11-07T05:31:56Z",
"dunningProtection": "<string>",
"suspendReason": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"powerState": "on",
"powerCheckedAt": "2023-11-07T05:31:56Z",
"product": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"type": "<string>",
"price": 123,
"currency": "<string>",
"billingCycle": "<string>",
"taxable": true,
"active": true
},
"tags": [
"<string>"
],
"ipAddress": "<string>",
"ipv6Address": "<string>"
}
],
"nextCursor": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}{
"success": false,
"error": "<string>"
}Authorizations
bearerAuthapiToken
Session access token (JWT) from POST /v1/auth/login or /v1/auth/refresh. A session satisfies every API scope.
Query Parameters
Only servers carrying this tag name.
Page size. Omit for the full, unpaged list.
Required range:
1 <= x <= 200The nextCursor from the previous page.
Pattern:
^[A-Za-z0-9_-]{1,64}$