curl --request GET \
--url https://console.advinservers.com/api/v1/client/ssh-keys \
--header 'Authorization: Bearer <token>'import requests
url = "https://console.advinservers.com/api/v1/client/ssh-keys"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://console.advinservers.com/api/v1/client/ssh-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://console.advinservers.com/api/v1/client/ssh-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/ssh-keys"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://console.advinservers.com/api/v1/client/ssh-keys")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/ssh-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "97721fd4-746a-40cc-8da0-4c9f623c112e",
"name": "gordon-workstation",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNr9XsCkWrb0LklstkNHufnF8gAVKsPIFsZeFdoZEO gordon@bmrf-workstation",
"fingerprint": "SHA256:0wwKzu+9eBzR6xq9nUxZ18417RQ5GKXSzi7ScY39ing",
"algorithm": "ssh-ed25519",
"is_default": true,
"owner": {
"name": "Gordon Freeman",
"email": "gordon.freeman@blackmesa.example.com"
},
"belongs_to_server_owner": true,
"created_at": "2025-11-18T21:31:02+00:00"
}
]{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Too Many Attempts."
}List SSH keys
Overview
Lists SSH public keys in the current team. Default keys appear first, followed by other keys in name order. Keys in other teams are not included.
Permissions
Requires the sshkey.read (View SSH keys) permission for the selected team. Resources outside that team return 404.
curl --request GET \
--url https://console.advinservers.com/api/v1/client/ssh-keys \
--header 'Authorization: Bearer <token>'import requests
url = "https://console.advinservers.com/api/v1/client/ssh-keys"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://console.advinservers.com/api/v1/client/ssh-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://console.advinservers.com/api/v1/client/ssh-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/ssh-keys"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://console.advinservers.com/api/v1/client/ssh-keys")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/ssh-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "97721fd4-746a-40cc-8da0-4c9f623c112e",
"name": "gordon-workstation",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNr9XsCkWrb0LklstkNHufnF8gAVKsPIFsZeFdoZEO gordon@bmrf-workstation",
"fingerprint": "SHA256:0wwKzu+9eBzR6xq9nUxZ18417RQ5GKXSzi7ScY39ing",
"algorithm": "ssh-ed25519",
"is_default": true,
"owner": {
"name": "Gordon Freeman",
"email": "gordon.freeman@blackmesa.example.com"
},
"belongs_to_server_owner": true,
"created_at": "2025-11-18T21:31:02+00:00"
}
]{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Too Many Attempts."
}Authorizations
Your API key, sent as a bearer token. Create one in the control panel under API Keys, give it only the permissions the integration needs, and copy it when it is created. It cannot be shown again. Each key is restricted to one owned team. The key determines the team for every request.
Response
The whole set, as a JSON array. There is no envelope and no paging.
The uuid. A key's autoincrement id never leaves the server.
"97721fd4-746a-40cc-8da0-4c9f623c112e"
The name shown to customers.
"gordon-workstation"
The SSH public key in OpenSSH format.
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNr9XsCkWrb0LklstkNHufnF8gAVKsPIFsZeFdoZEO gordon@bmrf-workstation"
The value of fingerprint.
"SHA256:0wwKzu+9eBzR6xq9nUxZ18417RQ5GKXSzi7ScY39ing"
The algorithm as OpenSSH names it, read off the key material rather than stored beside it, so it cannot disagree with the key it labels.
"ssh-ed25519"
Ticked for the customer when a reinstall form opens; several keys can carry it, since a rebuild installs any number of them.
true
The key owner, when requested for a specific server.
Show child attributes
Show child attributes
{
"name": "Gordon Freeman",
"email": "gordon.freeman@blackmesa.example.com"
}
Which account's key this is, as a flag the reinstall form can act on: only the server owner's keys open ticked, never an administrator's own on somebody else's rebuild.
true
The date and time for created at, in UTC.
"2025-11-18T21:31:02+00:00"
[
{
"id": "97721fd4-746a-40cc-8da0-4c9f623c112e",
"name": "gordon-workstation",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDNr9XsCkWrb0LklstkNHufnF8gAVKsPIFsZeFdoZEO gordon@bmrf-workstation",
"fingerprint": "SHA256:0wwKzu+9eBzR6xq9nUxZ18417RQ5GKXSzi7ScY39ing",
"algorithm": "ssh-ed25519",
"is_default": true,
"owner": {
"name": "Gordon Freeman",
"email": "gordon.freeman@blackmesa.example.com"
},
"belongs_to_server_owner": true,
"created_at": "2025-11-18T21:31:02+00:00"
}
]