Agent Management API
Agent discovery
List and inspect agents across your tenant. Base path:/api/agents
GET /api/agents
List all agents accessible to the authenticated tenant. Auth is required. Response body| Field | Type | Description |
|---|---|---|
success | boolean | Whether the operation succeeded |
total | number | Total number of agents |
agents | array | List of agent metadata objects |
| Field | Type | Description |
|---|---|---|
id | string | Agent ID |
name | string | Agent name |
GET /api/agents/:name
Get full details for a specific agent by name, including the compiled specification. Auth is required. Path parameters| Parameter | Type | Description |
|---|---|---|
name | string | Agent name |
| Field | Type | Description |
|---|---|---|
success | boolean | Whether the operation succeeded |
agent | object | Agent detail object |
| Field | Type | Description |
|---|---|---|
id | string | Agent ID |
name | string | Agent name |
dslContent | string | Agent DSL source code |
Cache-Control: private, max-age=300 since agent specifications change infrequently.
Project agents
Manage agents within a specific project. Project agents are tenant-scoped and include version tracking. Base path:/api/projects/:projectId/agents
GET /api/projects/:projectId/agents
List all agents in a project. Auth is required. Permission:agent:read
Response body
| Field | Type | Description |
|---|---|---|
success | boolean | Always true on success |
agents | array | List of agent detail objects |
| Field | Type | Description |
|---|---|---|
id | string | Agent ID |
name | string | Agent name |
agentPath | string | Full agent path (e.g., domain/agent-name) |
description | string or null | Agent description |
versionCount | number | Number of saved versions |
activeVersions | object | Map of environment to active version |
createdAt | string | ISO 8601 creation timestamp |
updatedAt | string | ISO 8601 last update timestamp |
GET /api/projects/:projectId/agents/:agentName
Get a single agent with version count and DSL content. Auth is required. Permission:agent:read
Path parameters
| Parameter | Type | Description |
|---|---|---|
projectId | string (CUID) | Project ID |
agentName | string | Agent name |
PUT /api/projects/:projectId/agents/:agentName/dsl
Save a working copy of the agent’s DSL content. This updates the mutable draft without triggering compilation or creating a version. Auth is required. Permission:agent:write
Request body
| Field | Type | Required | Description |
|---|---|---|---|
dslContent | string | Yes | ABL DSL source content (cannot be empty) |
Deployments
Manage the deployment lifecycle for agent projects. Deployments bundle specific agent versions for a target environment. Base path:/api/projects/:projectId/deployments
POST /api/projects/:projectId/deployments
Create a new deployment with specified agent versions and configuration. Auth is required. Permission:deployment:create
Request body
| Field | Type | Required | Description |
|---|---|---|---|
environment | string | Yes | Target environment: dev, staging, or production |
agentVersionManifest | object | Yes | Map of agent names to version strings (or "auto") |
entryAgentName | string | Yes | Name of the entry-point agent |
label | string | No | Human-readable deployment label |
description | string | No | Deployment description |
modelOverrides | object | No | Model configuration overrides per agent |
settingsVersionId | string | No | Pin a specific project settings version |
workflowVersionManifest | object | No | Map of workflow names to versions |
GET /api/projects/:projectId/deployments
List all deployments for a project. Auth is required. Response bodyGET /api/projects/:projectId/deployments/:deploymentId
Get deployment details including channel count. Auth is required. Response bodyPOST /api/projects/:projectId/deployments/:deploymentId/retire
Retire a deployment. Active sessions are drained before full retirement. Auth is required. Permission:deployment:create
Response body
POST /api/projects/:projectId/deployments/:deploymentId/rollback
Rollback a retired deployment to its previous active state. Auth is required. Permission:deployment:create
POST /api/projects/:projectId/deployments/:deploymentId/promote
Promote a deployment from one environment to another (e.g., staging to production). Auth is required. Permission:deployment:create
Multi-Agent API
The multi-agent API enables coordination between agents through handoffs, delegation, and asynchronous callbacks. These patterns allow you to build complex agent workflows where specialized agents collaborate to handle user requests.Handoff
Handoffs transfer conversation control from one agent to another within the same session. The originating agent transfers full context to the target agent.How handoffs work
- Agent A determines a handoff is needed (via ABL
HANDOFF:directive or runtime decision). - The platform transfers the session to Agent B with context from Agent A.
- Agent B takes over the conversation and responds to subsequent messages.
- Handoff events are recorded in the session trace.
HANDOFF: directive. You do not call a separate handoff endpoint — the handoff occurs within the normal agent-backed chat flow.
Observing handoffs
Handoff events appear in thetraceEvents array of the chat response:
Handoff count in session metrics
ThehandoffCount field on session objects tracks how many handoffs occurred:
Delegation
Delegation allows one agent to request work from another agent and receive the result, without transferring conversation control. The delegating agent remains in charge of the conversation.How delegation works
- Agent A encounters a task suited for Agent B.
- Agent A delegates the task to Agent B (via ABL
DELEGATE:directive). - Agent B processes the task and returns a result.
- Agent A incorporates the result and continues the conversation.
Asynchronous callbacks
The callback API enables external systems to deliver results back to a suspended agent session. When an agent invokes an async tool or delegates to an external system, the platform generates a callback URL that the external system calls when the work is complete. Base path:/api/v1/callbacks
POST /api/v1/callbacks/:callbackId
Deliver a callback result to resume a suspended agent session. Auth required: HMAC signature verification viax-callback-signature header (no JWT required)
Path parameters
| Parameter | Type | Description |
|---|---|---|
callbackId | string | Unique callback identifier provided when the suspension was created |
| Header | Required | Description |
|---|---|---|
x-callback-signature | Recommended | HMAC-SHA256 signature of the request body: sha256=<hex_digest> |
Content-Type | Yes | application/json |
x-callback-signature header against the request body:
| Property | Guarantee |
|---|---|
| Delivery | At-most-once (callback ID is atomically claimed) |
| Idempotency | Duplicate callbacks return 200 with already_processed |
| Timeout | Callbacks expire after the suspension TTL (configurable) |
| Processing | Callbacks are enqueued for reliable processing via a job queue |
| Status | Error | Cause |
|---|---|---|
200 | already_processed | Callback was already delivered |
401 | Invalid signature | HMAC verification failed |
503 | Service temporarily unavailable | Failed to enqueue the resume job (retry safe) |
Multi-agent patterns in ABL
The ABL DSL supports several multi-agent patterns natively:| Pattern | ABL directive | Description |
|---|---|---|
| Handoff | HANDOFF: | Transfer conversation to another agent |
| Delegation | DELEGATE: | Request work from another agent, retain control |
| Fan-out | Multiple DELEGATE: | Delegate to several agents in parallel |
| Escalation | HANDOFF: with conditions | Transfer based on confidence or intent signals |
Security considerations
- Encryption at rest: All secret values are encrypted using AES-256-GCM with tenant-scoped keys before storage.
- No plaintext retrieval: The API never returns secret values in responses. Only metadata (tool name, key name, environment, version) is exposed.
- Audit logging: All create, rotate, and delete operations are recorded in the audit log.
- Version tracking: Each secret rotation increments the version counter, providing a rotation history.
- Expiration: Secrets can include an optional
expiresAttimestamp. Expired secrets are no longer resolved at runtime.
Next steps
- Conversation API — Send messages through deployed agents
- Knowledge, Analytics & Export APIs — Analytics and project export
- SDKs — Parse agent definitions programmatically