List API Keys
curl --request GET \
--url https://api.signa.so/v1/organization/api-keys \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/organization/api-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.signa.so/v1/organization/api-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.signa.so/v1/organization/api-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.signa.so/v1/organization/api-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.signa.so/v1/organization/api-keys")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/organization/api-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{
"object": "list",
"data": [
{
"id": "key_Mc2eF6gH",
"object": "api_key",
"name": "Aurora Digital production",
"prefix": "sig_7kMn2pQr",
"scopes": ["trademarks:read", "billing:read"],
"rate_limit_tier": "standard",
"status": "active",
"expires_at": null,
"last_used_at": "2026-06-11T14:30:00.000Z",
"metadata": {},
"revoked_at": null,
"created_by": "key_Lb1dE5fG",
"created_at": "2026-01-05T12:00:00.000Z",
"updated_at": "2026-06-11T14:30:00.000Z"
},
{
"id": "key_Nd3fG7hI",
"object": "api_key",
"name": "Aurora Digital CI",
"prefix": "sig_9pQr4sTu",
"scopes": ["trademarks:read"],
"rate_limit_tier": "standard",
"status": "active",
"expires_at": "2026-12-31T23:59:59.000Z",
"last_used_at": "2026-06-10T09:15:00.000Z",
"metadata": { "environment": "ci" },
"revoked_at": null,
"created_by": "key_Mc2eF6gH",
"created_at": "2026-02-01T12:00:00.000Z",
"updated_at": "2026-06-10T09:15:00.000Z"
}
],
"has_more": false,
"pagination": {
"cursor": null
},
"request_id": "req_vO1fG7hI"
}
API Keys
List API Keys
List all API keys for the authenticated organization
GET
/
v1
/
organization
/
api-keys
List API Keys
curl --request GET \
--url https://api.signa.so/v1/organization/api-keys \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/organization/api-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.signa.so/v1/organization/api-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.signa.so/v1/organization/api-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.signa.so/v1/organization/api-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.signa.so/v1/organization/api-keys")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/organization/api-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{
"object": "list",
"data": [
{
"id": "key_Mc2eF6gH",
"object": "api_key",
"name": "Aurora Digital production",
"prefix": "sig_7kMn2pQr",
"scopes": ["trademarks:read", "billing:read"],
"rate_limit_tier": "standard",
"status": "active",
"expires_at": null,
"last_used_at": "2026-06-11T14:30:00.000Z",
"metadata": {},
"revoked_at": null,
"created_by": "key_Lb1dE5fG",
"created_at": "2026-01-05T12:00:00.000Z",
"updated_at": "2026-06-11T14:30:00.000Z"
},
{
"id": "key_Nd3fG7hI",
"object": "api_key",
"name": "Aurora Digital CI",
"prefix": "sig_9pQr4sTu",
"scopes": ["trademarks:read"],
"rate_limit_tier": "standard",
"status": "active",
"expires_at": "2026-12-31T23:59:59.000Z",
"last_used_at": "2026-06-10T09:15:00.000Z",
"metadata": { "environment": "ci" },
"revoked_at": null,
"created_by": "key_Mc2eF6gH",
"created_at": "2026-02-01T12:00:00.000Z",
"updated_at": "2026-06-10T09:15:00.000Z"
}
],
"has_more": false,
"pagination": {
"cursor": null
},
"request_id": "req_vO1fG7hI"
}
Overview
Returns the API keys for your organization, including creation date, last used timestamp, and scopes. The raw key secret is never returned; only theprefix (the first 12 characters of the key) is included, for identification. Use this to audit active keys, identify unused credentials, and manage key lifecycle.
Defaults to active keys only. Pass status=revoked, status=expired, or status=all to see revoked or expired keys for audit purposes.
Requires the api-keys:manage scope.
Query Parameters
string
default:"active"
Lifecycle filter:
active (non-revoked, non-expired), revoked, expired, or all.integer
default:"20"
Items per page (max 100).
string
Pagination cursor from a previous response.
Response
string
Always
list.object[]
Show API key object
Show API key object
string
Key ID (
key_*).string
Always
api_key.string
Key name.
string
First 12 characters of the raw key, for identification. The full secret is never returned.
string[]
Authorized scopes.
string
Rate limit tier label for the key.
string
Lifecycle state:
active, expired, or revoked.string | null
Expiry timestamp, or
null for a non-expiring key.string | null
Timestamp of the last API call with this key, or
null if never used.object
Key-value metadata.
string | null
Revocation timestamp, or
null.string
ID of the API key that created this key.
string
Creation timestamp.
string
Last update timestamp.
boolean
Whether more pages are available.
string
Unique request identifier for support and debugging.
{
"object": "list",
"data": [
{
"id": "key_Mc2eF6gH",
"object": "api_key",
"name": "Aurora Digital production",
"prefix": "sig_7kMn2pQr",
"scopes": ["trademarks:read", "billing:read"],
"rate_limit_tier": "standard",
"status": "active",
"expires_at": null,
"last_used_at": "2026-06-11T14:30:00.000Z",
"metadata": {},
"revoked_at": null,
"created_by": "key_Lb1dE5fG",
"created_at": "2026-01-05T12:00:00.000Z",
"updated_at": "2026-06-11T14:30:00.000Z"
},
{
"id": "key_Nd3fG7hI",
"object": "api_key",
"name": "Aurora Digital CI",
"prefix": "sig_9pQr4sTu",
"scopes": ["trademarks:read"],
"rate_limit_tier": "standard",
"status": "active",
"expires_at": "2026-12-31T23:59:59.000Z",
"last_used_at": "2026-06-10T09:15:00.000Z",
"metadata": { "environment": "ci" },
"revoked_at": null,
"created_by": "key_Mc2eF6gH",
"created_at": "2026-02-01T12:00:00.000Z",
"updated_at": "2026-06-10T09:15:00.000Z"
}
],
"has_more": false,
"pagination": {
"cursor": null
},
"request_id": "req_vO1fG7hI"
}
Code Examples
curl "https://api.signa.so/v1/organization/api-keys" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const keys = await signa.organization.apiKeys.list();
for (const key of keys.data) {
console.log(key.name, key.status, key.last_used_at);
}
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Invalid status, limit, or cursor value |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks api-keys:manage |
| 429 | rate_limited | Too many requests |
Related Endpoints
- Create API Key, generate a new key
- Get API Key, single key detail
- Rotate API Key, rotate an existing key
⌘I