Control Keys and Scopes

The enterprise owner's signed-in JWT issues and revokes control keys. A control key cannot issue another management key.

POST /enterprise/control-keysCreate a MANAGEMENT / PROVISIONING key
GET /enterprise/control-keysList the owner's control-key metadata without secrets
DELETE /enterprise/control-keys/{hash}Revoke a control key
GET /enterprise/control-keys/{hash}/mcp-statusRead its latest authenticated MCP read status

Create a read-only balance-monitoring key

Authenticate with the enterprise owner's Authorization: Bearer <USER_JWT>. Request fields use camelCase:

JSON
1{
2  "name": "billing-monitor",
3  "keyType": "MANAGEMENT",
4  "scopes": ["tenant:billing:read"]
5}

name and keyType are required. Optional fields: allowedIps (IP/CIDR list) and expiresAt (future ISO-8601 timestamp). Expiry defaults to 90 days and cannot exceed 365 days. Run credential creation only when you intentionally need a new key.

Success returns HTTP 201 with code: 200. data.apiKey is the full one-time secret and data.credential is metadata. Later lists do not reveal the secret. Use its returned hash, not the secret, for revocation and status paths.

Scope availability

tenant:members:read / tenant:members:writeYesYes
tenant:keys:read / tenant:keys:writeYesYes
tenant:policies:read / tenant:policies:writeYesNo
tenant:billing:readYesNo
tenant:audit:readConfigurableNo

Omitted/empty scopes select the type's default set, including writes. Explicitly request billing read only for a monitoring key. A configurable scope does not imply that a matching REST endpoint exists; this page does not advertise an unpublished audit or charge-detail management API.

Control keys are accepted only under /enterprise/v1/** and /enterprise/mcp/**. They cannot be used for inference, /v1/key, /v1/billing/**, or signed-in management endpoints.

Was this page helpful?
Control Keys and Scopes · Token360