Skip to content

HTTP API / Agents

Agents API ​

8 operations. Paths are relative to the API host (http://localhost:5080 in local development). Every operation accepts an OIDC bearer token (Authorization: Bearer …) or a workspace API key (X-Api-Key: keel_live_…); errors are RFC 9457 Problem Details with a code (error codes). Permissions: matrix.

MethodPathSummary
GET/api/v1/workspaces/{workspaceId}/agentsPrivate agents of the workspace with their status (online from heartbeats).
POST/api/v1/workspaces/{workspaceId}/agentsCreate a private agent in a pool and its one-time enrollment token (shown once, single use, expires in 15 minutes).
GET/api/v1/workspaces/{workspaceId}/agents/{agentId}One private agent.
PATCH/api/v1/workspaces/{workspaceId}/agents/{agentId}Rename a private agent, move it to another pool or change its location (audited).
POST/api/v1/workspaces/{workspaceId}/agents/{agentId}:revokeRevoke a private agent: its certificate stops working at once and its pool work is re-queued for other members (audited).
PUT/api/v1/workspaces/{workspaceId}/agents/{agentId}/release-channelSet the release channel of an agent: stable, beta or pinned to a version; null follows its pool (audited).
GET/api/v1/workspaces/{workspaceId}/agents/fleetThe agent version the control plane ships, the workspace's pools and the update commands (F22).
PUT/api/v1/workspaces/{workspaceId}/agents/pools/{pool}/release-channelSet the release channel every agent of a pool follows unless it has its own; null puts the pool on stable (audited).

ListAgents ​

http
GET /api/v1/workspaces/{workspaceId}/agents

Private agents of the workspace with their status (online from heartbeats).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
StatusDescriptionBody
200OKAgentSummary[]

CreateAgent ​

http
POST /api/v1/workspaces/{workspaceId}/agents

Create a private agent in a pool and its one-time enrollment token (shown once, single use, expires in 15 minutes).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes

Request body (application/json): CreateAgentRequest

FieldTypeNotes
locationstring?F22 FR3: a location label, e.g. "Frankfurt DC".
namestring
poolstring?F22 FR6: the pool the agent joins (default when empty).
StatusDescriptionBody
201CreatedAgentEnrollmentResponse

Response 201: AgentEnrollmentResponse

FieldTypeNotes
agentIduuid
dockerCommandstring
expiresAtdate-time
helmCommandstring?F22 packaging: the Helm install of the keel-agent chart.
namestring
poolstring?
serverUrlstring
tokenstring
versionstring?
windowsCommandstring?F22 packaging: the Windows service installer (PowerShell, as Administrator).

GetAgent ​

http
GET /api/v1/workspaces/{workspaceId}/agents/{agentId}

One private agent.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
agentIdpathuuidyes
StatusDescriptionBody
200OKAgentSummary

Response 200: AgentSummary

FieldTypeNotes
capabilitiesAgentCapabilities?
certificateExpiresAtdate-time?
certificateRotatedAtdate-time?
certificateThumbprintstring?
connectionstring
createdAtdate-time
enrolledAtdate-time?
enrollmentExpiresAtdate-time?
hostnamestring?
iduuid
jobsRunningint32
lastSeenAtdate-time?
locationstring?
namestring
poolstring
revokedAtdate-time?
sourceCountint32
statusAgentStatusOne of Pending, Active, Revoked
updateAgentUpdateSummary?
versionstring?
versionStatusAgentVersionSkew?

UpdateAgent ​

http
PATCH /api/v1/workspaces/{workspaceId}/agents/{agentId}

Rename a private agent, move it to another pool or change its location (audited).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
agentIdpathuuidyes

Request body (application/json): UpdateAgentRequest

FieldTypeNotes
locationstring?
namestring
poolstring?
StatusDescriptionBody
204No Content—

RevokeAgent ​

http
POST /api/v1/workspaces/{workspaceId}/agents/{agentId}:revoke

Revoke a private agent: its certificate stops working at once and its pool work is re-queued for other members (audited).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
agentIdpathuuidyes
StatusDescriptionBody
204No Content—

SetAgentReleaseChannel ​

http
PUT /api/v1/workspaces/{workspaceId}/agents/{agentId}/release-channel

Set the release channel of an agent: stable, beta or pinned to a version; null follows its pool (audited).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
agentIdpathuuidyes

Request body (application/json): SetReleaseChannelRequest

FieldTypeNotes
channelstring?
pinnedVersionstring?
StatusDescriptionBody
204No Content—

GetAgentFleet ​

http
GET /api/v1/workspaces/{workspaceId}/agents/fleet

The agent version the control plane ships, the workspace's pools and the update commands (F22).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
StatusDescriptionBody
200OKAgentFleetResponse

Response 200: AgentFleetResponse

FieldTypeNotes
betaVersionstring?M12.2: the version behind the beta channel.
dockerUpdateCommandstring
helmUpdateCommandstring
imagestring
latestVersionstring
poolChannelsAgentPoolChannelInfo[]?M12.2: pools with a release channel set.
poolsstring[]
releasesAgentReleaseInfo[]?M12.2: versions with packages (what can be pinned).
selfUpdatebooleanM12.2: releases are signed, so Windows service and binary installs update themselves.
stableVersionstring?M12.2: the version behind the stable channel.
windowsUpdateCommandstring

SetAgentPoolChannel ​

http
PUT /api/v1/workspaces/{workspaceId}/agents/pools/{pool}/release-channel

Set the release channel every agent of a pool follows unless it has its own; null puts the pool on stable (audited).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
poolpathstringyes

Request body (application/json): SetReleaseChannelRequest

FieldTypeNotes
channelstring?
pinnedVersionstring?
StatusDescriptionBody
204No Content—

Anchor Keel is a working product name: one platform, a shared core and licensed modules (Keel Semantic, Keel Migrate). Documentation built from the repository — facts are derived from code, ADRs and the decisions log.