Newest first. The secret key itself is never returned again after creation.
Requires api_keys:read and a key with access to all profiles.
Authorization
bearerAuth API key starting with fh_
In: header
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://feedhorizon.com/api/v1/api-keys"{
"data": [
{
"id": "key_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"keyPrefix": "fh_aee6d4",
"name": "Production server",
"permission": "readwrite",
"scopes": [
"profiles:read"
],
"fullAccess": true,
"profileIds": [
"prof_0195f0a27b3c7d4e8f5a1b2c3d4e5f60"
],
"lastUsedAt": "2026-11-10T08:00:00.000Z",
"expiresAt": "2026-11-10T08:00:00.000Z",
"createdAt": "2026-11-10T08:00:00.000Z"
}
],
"nextCursor": "string"
}{
"error": {
"type": "invalid_request_error",
"code": "invalid_cursor",
"message": "cursor is not a value the API returned as nextCursor",
"docUrl": "https://feedhorizon.com/docs/api/errors#invalid_request_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "authentication_error",
"code": "missing_api_key",
"message": "No Authorization: Bearer header",
"docUrl": "https://feedhorizon.com/docs/api/errors#authentication_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "permission_error",
"code": "insufficient_scope",
"message": "The key lacks the scope for this endpoint",
"docUrl": "https://feedhorizon.com/docs/api/errors#permission_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Wait the seconds in Retry-After",
"docUrl": "https://feedhorizon.com/docs/api/errors#rate_limit_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "Something failed on our side. Retry with backoff, using the same Idempotency-Key for writes",
"docUrl": "https://feedhorizon.com/docs/api/errors#api_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}Send a test event POST
Sends one `webhook.test` event right away and reports how your endpoint answered. Never retried. Requires `webhooks:write` and a key with access to all profiles.
Create an API key POST
The full key is in the `key` field of this response and is never shown again. Grant rights with `scopes` (an allow list), or with the `permission` shorthand: readwrite = every current scope, readonly = every read scope. A write scope includes reading the same resource. Requires `api_keys:write` and a key with access to all profiles.