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
0 = Sunday, 1 = Monday, …, 6 = Saturday.
Greeting variants
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
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
agents:read
Returns the full configuration of a single agent.
Get agent status (lightweight)
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
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
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
Related resources
- Workflow — Multi-state conversation flow
- Tools — Functions the agent can invoke during calls
- Employees — Human staff linked to the agent
- Forwarding Slots — Call routing rules
- Knowledge Base — Documents the agent can reference
- Calls — Call records for this agent