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
Lifecycle filter:
active (non-revoked, non-expired), revoked, expired, or all.Items per page (max 100).
Pagination cursor from a previous response.
Response
Always
list.Show API key object
Show API key object
Key ID (
key_*).Always
api_key.Key name.
First 12 characters of the raw key, for identification. The full secret is never returned.
Authorized scopes.
Rate limit tier label for the key.
Lifecycle state:
active, expired, or revoked.Expiry timestamp, or
null for a non-expiring key.Timestamp of the last API call with this key, or
null if never used.Key-value metadata.
Revocation timestamp, or
null.ID of the API key that created this key.
Creation timestamp.
Last update timestamp.
Whether more pages are available.
Show Pagination
Show Pagination
Cursor for the next page, or
null on the last page.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