Skip to main content
GET
List secrets
Returns both scopes, told apart by the scope field. LLM keys carry a lastError health marker so you can spot a broken key. See How it works for how secrets are injected. Returns the workspace’s secrets plus the organization secrets shared into it (scope tells them apart), newest first. Secret values are never returned. LLM keys carry a lastError health marker.
Availability: Cloud · Community (self-hosted) · Enterprise (self-hosted)

Authorizations

Authorization
string
header
required

A workspace API key (oc_…) or organization API key (oc_org_…). Workspace-scoped endpoints called with an organization key also need X-Workspace-Id.

Response

200 - application/json

List of secrets

id
string
name
string
type
enum<string>
Available options:
anthropic,
openai,
generic
valueSource
enum<string>

Where the secret value lives — stored encrypted (inline) or resolved from 1Password at request time (onepassword).

Available options:
inline,
onepassword
opRef
string | null

1Password secret reference (op://vault/item/field). Only set when valueSource is onepassword.

hostPattern
string
pathPattern
string | null
injectionConfig
Header injection · object

How the gateway injects this secret into matching outbound requests (generic secrets only). Exactly one variant:

  • Header — { "headerName": "Authorization", "valueFormat": "Bearer {value}" }
  • Query parameter — { "paramName": "key", "paramFormat": "{value}" }
  • URL path template — { "pathTemplate": "/bot{value}" } (must start with / and contain {value} exactly once)
  • URL path regex — { "pathRegex": "^/bot([^/]+)", "pathReplacement": "/bot{value}" } (replacement must contain {value})

Unknown or mixed keys are rejected.

metadata
object | null

Type-specific metadata (for example authMode for anthropic/openai secrets, 1Password display labels).

scope
enum<string>

Workspace lists include inherited organization secrets; use this to tell them apart.

Available options:
workspace,
organization
typeLabel
string
lastError
object | null

LLM keys only. The most recent upstream response that indicts the key itself (401, 402, 403, 429) inside the recent window, or null when the last injected call succeeded.

createdAt
string<date-time>