curl --request GET \
--url https://api.ornn.com/v1/organizations/{organization_id}/ssh-keys \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/ssh-keys")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/organizations/{organization_id}/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{
"ssh_keys": [
{
"id": "77777777-7777-4777-8777-777777777777",
"organization_id": "22222222-2222-4222-8222-222222222222",
"tenant_id": "22222222-2222-4222-8222-222222222222",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleKeyMaterialForDocsOnly0000000000 dev@example.com",
"fingerprint": "SHA256:ExampleFingerprintForDocumentationOnly000000",
"label": "laptop",
"status": "active",
"created_at": "2026-10-14T12:00:00Z",
"revoked_at": null
}
],
"next_cursor": null,
"has_revoked": false
}{
"detail": {
"code": "invalid_ssh_key_query",
"message": "SSH key page size must be between 1 and 500."
}
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"error": "rate_limited",
"retry_after": 42,
"detail": "Too many requests. Try again in 42 seconds."
}{
"code": "<string>",
"detail": "<string>"
}List organization SSH keys
Lists SSH public keys registered to your organization, newest first. Use the organization ID returned by GET /v1/auth/session; an API key can read only its own organization. Pass status, limit, or cursor to page through keys (default page size 25, at most 500). Without any of these parameters the response contains every active and revoked key in one page. Requires an approved organization.
curl --request GET \
--url https://api.ornn.com/v1/organizations/{organization_id}/ssh-keys \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/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://api.ornn.com/v1/organizations/{organization_id}/ssh-keys")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ornn.com/v1/organizations/{organization_id}/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{
"ssh_keys": [
{
"id": "77777777-7777-4777-8777-777777777777",
"organization_id": "22222222-2222-4222-8222-222222222222",
"tenant_id": "22222222-2222-4222-8222-222222222222",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleKeyMaterialForDocsOnly0000000000 dev@example.com",
"fingerprint": "SHA256:ExampleFingerprintForDocumentationOnly000000",
"label": "laptop",
"status": "active",
"created_at": "2026-10-14T12:00:00Z",
"revoked_at": null
}
],
"next_cursor": null,
"has_revoked": false
}{
"detail": {
"code": "invalid_ssh_key_query",
"message": "SSH key page size must be between 1 and 500."
}
}{
"code": "<string>",
"detail": "<string>"
}{
"code": "<string>",
"detail": "<string>"
}{
"error": "rate_limited",
"retry_after": 42,
"detail": "Too many requests. Try again in 42 seconds."
}{
"code": "<string>",
"detail": "<string>"
}organization_id from Check API authentication. Pass status=active&limit=100 to page through active keys, then follow next_cursor until it is null.
CLI equivalent: ornn ssh-keys list --format json.Authorizations
Create an organization API key in Account Settings > Developer. Do not send this key to the Kubernetes API server.
Path Parameters
Your organization ID, from the organizations array of GET /v1/auth/session.
Query Parameters
Which keys to return. Passing this parameter turns on paging.
active, revoked, all Page size. Passing this parameter turns on paging.
1 <= x <= 500Opaque next_cursor from the previous page. Keep the same status value; a cursor from a different status or organization is rejected.
1024Was this page helpful?