What is an assistant?
An assistant combines identity with capability. At its core, an assistant carries:- A persona — a name, description, and
personastring that shape how the assistant presents itself. - A system prompt — instructions that shape the assistant’s tone, role, and behavior.
- Knowledge bases — indexed document collections the assistant retrieves from at runtime (
knowledge_base_refs). - Tools — API, integration, utility, or knowledge-base tools the assistant can invoke (
tool_refs). - Policies — guardrails that run at defined enforcement points to control what the assistant says and does (
policy_refs). - A workflow — an optional graph that drives multi-step, structured conversations. Creating an assistant provisions a bound workflow automatically; you enable it per revision with
workflow_enabled.
The API resource is
/v1/assistants. For historical reasons the path
variable is spelled {agent_id} — for example GET /v1/assistants/{agent_id}.
The two refer to the same thing.The revision model
Every assistant has two layers of identity:
When you create an assistant, Feather provisions an initial revision automatically — but the assistant starts inactive (
active_revision_id is null). You configure a revision, then activate it to make the assistant serve traffic.
A revision has no separate status field — a revision is “active” if and only if the assistant’s active_revision_id points to it. All other revisions are editable configuration you can iterate on and activate later.
Revision lifecycle
1
Create a revision
Call
POST /v1/assistants/{agent_id}/revisions. Pass based_on_revision_id to branch from an existing revision, or omit it to start fresh.2
Configure the revision
Call
PATCH /v1/assistants/{agent_id}/revisions/{revision_id} to set system_prompt, attach knowledge_base_refs and tool_refs, and set model_settings, channel_specific_config, and platform_tools. Attach policies with PUT /v1/assistants/revisions/{revision_id}/policies.3
Activate the revision
Call
POST /v1/assistants/{agent_id}/revisions/{revision_id}/activate. Feather updates the assistant’s active_revision_id. New conversations now use this revision.4
Iterate safely
To change behavior, create another revision, configure it, and activate it. Previous revisions remain available for rollback or audit — activate any of them to roll back.
Conversations pin the revision that was active when they were created (see
How assistants map to conversations),
so activating a new revision never disrupts in-flight sessions.
Key fields
Assistant-level fields
Assistant-level fields
Revision-level fields
Revision-level fields
channel_specific_config
Some behaviors need to differ by channel. The channel_specific_config field accepts a map keyed by channel — chat, sms, voice, or email — letting you override the prompt, first-speaking behavior, and warm-transfer settings per channel without creating a separate assistant.
Platform tools
Beyond the custom tools you attach viatool_refs, Feather provides built-in platform tools that any assistant can enable with no extra configuration. Fetch the catalog with GET /v1/assistants/platform-tools/catalog and enable tools per revision via the platform_tools field. The assistant-scoped catalog contains three tools:
transfer_call
Transfers the current call to another destination. Terminal — it ends the assistant’s turn.
request_human_handoff
Hands the conversation off to a human. Sets the conversation to
waiting_for_human.end_session
Gracefully closes the conversation and ends the session.
Platform tools are terminal — they conclude the current turn. Additional
flow-control tools (such as advancing a workflow step) exist inside workflow
graphs but are not assistant-enableable and do not appear in the catalog.
How assistants map to conversations
When you create a conversation (POST /v1/conversations), you set assistant_id. Feather resolves the assistant’s active revision at that moment and pins it to the conversation as assistant_revision_id. This means:
- Subsequent changes to the assistant or its revisions do not affect the in-flight conversation.
- Every turn in the conversation runs against the same pinned revision.
- You can pin a specific revision explicitly by passing
assistant_revision_idon create.
Bind a conversation to either a single assistant (
assistant_id) or a
team (team_id + team_revision_id), never both.Teams
Group multiple assistants into a team to enable multi-agent routing. A team revision defines a routing mode, a set of member assistants, and a required fallback member. Feather supports two routing modes:supervisor
A supervisor evaluates each incoming turn and delegates to the most appropriate member assistant. Ideal when you have specialized assistants (billing, technical, general) and want intelligent routing.
swarm
Members hand off directly to one another as the conversation evolves, up to
swarm_max_hops. Useful for collaborative flows where control passes between peers.assistant_id (and optionally pins an assistant_revision_id). Teams version through revisions too, but you make a team revision live with POST /v1/teams/{team_id}/set-active-revision. A conversation can bind to a team instead of a single assistant — Feather handles routing internally.
Next steps
Build your first assistant
A step-by-step guide to creating an assistant, configuring a revision, and running your first conversation.
Assistants API reference
Full reference for assistant and revision endpoints, including request schemas and response examples.