Skip to main content
Agents are the central entity in TalkPilot — AI voice bots that handle phone calls. Every other resource (tools, employees, forwarding slots, knowledge base, calls) is scoped to an agent.

Key concepts

  • Each agent has a phone number and belongs to one organization
  • Agents are configured with an LLM (language model), voice, and system prompt
  • Agents can have a schedule (business hours)
  • A backup agent handles calls when the primary agent is unavailable

Data model

Schedule object

Days: 0 = Sunday, 1 = Monday, …, 6 = Saturday.

Greeting variants

The first variant whose conditions all match wins; otherwise the plain greeting is spoken. With several tags one of them is enough; if a contact carries tags of several variants, the topmost variant wins. Each variant needs greeting and at least one condition: Placeholders {{vorname}}, {{nachname}}, {{anrede}} come from the contact; pre-call webhook variables work too. A variant is only spoken when every placeholder has a value. Unknown keys are rejected with 400.

Endpoints

List agents

Permission: agents:read | Pagination: yes Returns all agents accessible to the API key. If the key has allowed_agent_ids set, only those agents are returned.

Get agent details

Permission: agents:read Returns the full configuration of a single agent.

Get agent status (lightweight)

Permission: agents:read Returns only the agent’s active status and schedule. Includes a computed is_within_schedule field. Use this for monitoring dashboards where you don’t need the full config.

Update agent

Permission: agents:write Partial update — only include fields you want to change. Omitted fields remain unchanged. Read-only fields (cannot be changed via API): phone_number, organization_id, created_by, retention_days, metadata Unknown fields are rejected. Sending any field that is not in the data model above (or a read-only one) returns 400 VALIDATION_ERROR with one details entry per field — this endpoint is strict, unlike the other PATCH endpoints, which ignore unknown fields. Not part of this endpoint: workflow. Multi-state agents keep their conversation flow in a separate, validated resource — see Workflow. Sending workflow here returns 400 VALIDATION_ERROR.

Phone number

Permission: agents:write | Dashboard login only (JWT of a super_admin or dev_admin; API keys get 403) POST with { "source": "pool" } assigns a free number from the TalkPilot number pool; the agent answers on it from the next call on. DELETE releases a pool number again — the number goes into a 90-day quarantine before it returns to the pool. Numbers that were provisioned individually for an agent cannot be released this way (409 NOT_POOL_NUMBER). Both calls keep the agent’s employees and forwarding slots in sync: their agent_phone_number is set on assignment and cleared on release, which is how call routing finds them at runtime.

Common patterns

Pause an agent temporarily

Set business hours with backup