API Key Endpoints

Manage tenant API keys for server-to-server authentication.


Create API Key

POST /api/v1/api-keys

Headers

  • Authorization: Bearer <adminToken>
  • X-Bulwark-Tenant: <tenant-id>

Body

{
  "name": "production-server",
  "scopes": ["agents:read", "agents:write", "sessions:create"],
  "expiresAt": "2027-01-01T00:00:00Z"
}

Response 201

{
  "data": {
    "keyId": "key_01j...",
    "name": "production-server",
    "key": "bwk_live_...",
    "scopes": ["agents:read", "agents:write", "sessions:create"],
    "expiresAt": "2027-01-01T00:00:00Z",
    "createdAt": "2026-03-18T00:00:00Z"
  }
}

Important: The key value is only returned once. Store it immediately.


List API Keys

GET /api/v1/api-keys

Response 200

{
  "data": [
    {
      "keyId": "key_01j...",
      "name": "production-server",
      "scopes": ["agents:read", "agents:write", "sessions:create"],
      "lastUsedAt": "2026-03-18T12:00:00Z",
      "expiresAt": "2027-01-01T00:00:00Z",
      "status": "active"
    }
  ]
}

Key values are never returned after creation.


Revoke API Key

DELETE /api/v1/api-keys/{keyId}

Immediately invalidates the key.

Response 200

{
  "data": {
    "keyId": "key_01j...",
    "status": "revoked",
    "revokedAt": "2026-03-18T13:00:00Z"
  }
}

Available Scopes

| Scope | Description | |-------|-------------| | agents:read | List and get agents | | agents:write | Create and update agents | | agents:revoke | Revoke agents | | sessions:create | Create agent sessions | | sessions:read | Read session details | | vault:read | Read from token vault | | vault:write | Write to token vault | | audit:read | Read audit logs | | fga:read | Check FGA policies | | fga:write | Update FGA tuples | | admin:* | Full admin access |