Skip to main content
POST
Create an agent

Authorizations

Authorization
string
header
required

An API key from Settings → API keys, sent as Authorization: Bearer kb_live_…. A workspace key starts kb_; a personal key starts kbp_ and acts as its owner.

Headers

Idempotency-Key
string
required

A unique key (a UUID works) for this request. Retrying with the same key returns the first answer instead of running twice.

Maximum string length: 255
Kallabot-Version
enum<string>

The API version to answer as, a date (YYYY-MM-DD). Leave it out for the current version (2026-11-07). An unknown version is refused with 400 unsupported_api_version.

Available options:
2026-11-07
Example:

"2026-11-07"

Body

application/json
config
AgentSpec · object
required

The agent's whole configuration: name, voice, language, instructions, tools and knowledge.

team_id
string | null

The team that owns it. Defaults to none (the whole workspace).

owner_user_id
string | null

The person who owns it. Defaults to none.

Response

Successful Response

id
string
required

The agent's id.

name
string
required

The agent's display name.

slug
string
required

A stable, URL-safe name, unique in the workspace; survives renames.

status
enum<string>
required

draft (never published), active (live), suspended (paused by Kallabot) or archived.

Available options:
draft,
active,
suspended,
archived
direction
enum<string>
required

Whether it answers calls, makes them, or both.

Available options:
inbound,
outbound,
both
revision
integer
required

Bumped on every change. Send it back as If-Match on a write.

has_unpublished_changes
boolean
required

True when a draft differs from what callers hear.

total_calls
integer
required

Calls this agent has handled.

created_at
string
required

When it was created (ISO 8601).

updated_at
string
required

When it last changed (ISO 8601).

capabilities
AgentCapabilities · object
required

What this key may do to this agent.

config
Config · object
required

The agent's configuration (the draft when one exists, else the live one). Secrets are redacted.

config_hash
string
required

A fingerprint of config.

schema_version
integer
required

The configuration schema version.

published_version
integer | null

The version callers hear; null before the first publish.

draft_version
integer | null

The unpublished version being edited, if any.

owner_user_id
string | null

The person who owns it, if any.

team_id
string | null

The team it belongs to, if any.

tags
string[]

Free-form labels.

last_call_at
string | null

When it last handled a call (ISO 8601).

findings
ValidationFinding · object[]

Validation findings for config.