const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.factify.com/v1/api-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.factify.com/v1/api-keys"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.factify.com/v1/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.factify.com/v1/api-keys")
.header("Authorization", "Bearer <token>")
.asString();curl --request GET \
--url https://api.factify.com/v1/api-keys \
--header 'Authorization: Bearer <token>'{
"api_keys": [
{
"id": "key_01h2xcejqtf2nbrexx3vqjhp41",
"org_id": "org_01h2xcejqtf2nbrexx3vqjhp41",
"name": "Production Key",
"prefix": "ffy_prod_01kdx2z2...",
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:35:00Z",
"is_active": true,
"expires_at": "2026-01-15T10:30:00Z",
"revoked_at": "2023-11-07T05:31:56Z",
"revoked_by": "usr_01h2xcejqtf2nbrexx3vqjhp41",
"revoked_comment": "rotated"
}
]
}{
"type": "about:blank",
"title": "Unauthorized",
"status": 401,
"detail": "Missing or invalid authentication credentials."
}{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "You do not have permission to perform this action on this resource."
}{
"type": "about:blank",
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after the period indicated by the Retry-After header."
}{
"type": "about:blank",
"title": "Internal Server Error",
"status": 500,
"detail": "An unexpected error occurred. Retry, and contact support if the issue persists."
}List API keys
Lists API keys for the caller’s organization. Secrets are
never returned — use the prefix field to identify a key in
the UI.
Authorization: requires organization admin role.
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.factify.com/v1/api-keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.factify.com/v1/api-keys"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.factify.com/v1/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.factify.com/v1/api-keys")
.header("Authorization", "Bearer <token>")
.asString();curl --request GET \
--url https://api.factify.com/v1/api-keys \
--header 'Authorization: Bearer <token>'{
"api_keys": [
{
"id": "key_01h2xcejqtf2nbrexx3vqjhp41",
"org_id": "org_01h2xcejqtf2nbrexx3vqjhp41",
"name": "Production Key",
"prefix": "ffy_prod_01kdx2z2...",
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T10:35:00Z",
"is_active": true,
"expires_at": "2026-01-15T10:30:00Z",
"revoked_at": "2023-11-07T05:31:56Z",
"revoked_by": "usr_01h2xcejqtf2nbrexx3vqjhp41",
"revoked_comment": "rotated"
}
]
}{
"type": "about:blank",
"title": "Unauthorized",
"status": 401,
"detail": "Missing or invalid authentication credentials."
}{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "You do not have permission to perform this action on this resource."
}{
"type": "about:blank",
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after the period indicated by the Retry-After header."
}{
"type": "about:blank",
"title": "Internal Server Error",
"status": 500,
"detail": "An unexpected error occurred. Retry, and contact support if the issue persists."
}Authorizations
Bearer authentication using a factapi-issued API key
(ffy_<env>_<base32_uuid><base62_random>). Cookie-based
sessions are accepted automatically by user-facing endpoints
but are not surfaced as an OpenAPI auth scheme.
Headers
Optional. Factify-staff acting-as override: when set, factapi
resolves the request against this organization instead of the
session-bound one. Honored only for callers with @factify.com
emails; non-staff requests carrying this header are rejected
with 403. The value is a typed org id (e.g.
org_01h2xcejqtf2nbrexx3vqjhp41).
^org_[0-9a-hjkmnp-tv-z]{26}$"org_01h2xcejqtf2nbrexx3vqjhp41"
Query Parameters
Whether to include revoked keys. Defaults to false.
Expired-but-not-revoked keys are always returned; use the
is_active field to filter currently usable keys.
false
Response
A list of API keys for the organization.
A page of API keys for the caller's organization. Secrets are never included.
API keys for the organization.
Show child attributes
Show child attributes