What are Dispositions?
Dispositions are LLM-powered post-call classifiers. After every call, each disposition defined for your agent runs against the transcript and produces a structured result — either a Free Text response or a Pre-defined value selected from options you configure. Use dispositions to automatically tag call outcomes, score leads, detect escalation needs, verify compliance, and more — without manually reading every transcript.Dispositions are similar to Extractions but designed for classification rather than data capture. An extraction answers “what did the customer say?”; a disposition answers “what was the outcome?”.
Key Concepts
Categories
Dispositions are organized into categories (e.g., “Lead Quality”, “Compliance”, “Call Outcome”). Every disposition belongs to exactly one category. Categories are set per-disposition via thecategory field (default: "General").
Answer Types
Each disposition must declare one or both answer types:| Type | Field | Description |
|---|---|---|
| Free Text | is_subjective: true | LLM generates a free-text response based on the transcript and question prompt |
| Pre-defined | is_objective: true | LLM selects a value from objective_options based on each option’s condition |
Copy-on-Write Updates
When you update a disposition that is shared using a scopedagent_id, Bolna automatically creates a private copy for that agent instead of modifying the original. This ensures changes to one agent’s dispositions don’t affect others.
The API signals this with a 201 response (new resource created) rather than the usual 200 (updated in place). See the Update Disposition reference for full details.
Creating a Disposition
Single Disposition
Bulk Create (for multiple dispositions at once)
Answer Types in Detail
Free Text
The LLM generates an open-ended response based on thequestion prompt and the transcript.
Best for:
- Summarizing customer concerns or objections
- Explaining the reasoning behind an outcome
- Capturing qualitative context
Pre-defined Options
The LLM selects a value from yourobjective_options list. Each option has a value (returned in the result) and a condition (instructions for when to select it).
Best for:
- Yes/No classifications
- Status labels (hot/warm/cold)
- Compliance checks
Nested Options
objective_options support recursive nesting via sub_options for hierarchical classifications:
Managing Dispositions
List Dispositions for an Agent
Update a Disposition
agent_id in the request body to use scoped (copy-on-write) mode:
Delete a Disposition
Disposition Output Format
After each call, disposition results are stored in the execution record under thedispositions key, organized by category:
Field Reference
| Field | Type | Description |
|---|---|---|
subjective | string | null | Free Text LLM response. "" if no relevant information found; null if not configured (is_subjective: false) |
objective | string | null | Selected Pre-defined value. null if objective_options not configured or no condition matched |
Accessing Disposition Results
Via the Executions API
Via the Executions API
Fetch any execution by ID to see its disposition results:The
dispositions key is included in the execution response alongside transcript, extracted_data, and other post-call data.Via Webhooks
Via Webhooks
If you’ve configured a post-call webhook, disposition results are included in the same execution payload delivered to your endpoint after every call.See Webhooks for payload details.
Via the Dashboard
Via the Dashboard
Open any call record from the Call History tab to view disposition results alongside the transcript and call summary.
Common Use Cases
| Use Case | Disposition | Type |
|---|---|---|
| Lead scoring | Hot / warm / cold classification | Pre-defined |
| Escalation detection | Agent handover requested? | Pre-defined (Yes/No) |
| Appointment tracking | Call confirmed, rescheduled, or declined? | Pre-defined |
| Cancellation analysis | Why did the customer cancel? | Free Text |
| Compliance auditing | Was the required disclaimer read? | Pre-defined (Yes/No) |
| Sentiment summary | Describe the customer’s tone and satisfaction | Free Text |
| Objection capture | What objections did the customer raise? | Free Text |
Best Practices
- One concern per disposition — Keep each disposition focused on a single question. Split “was the customer satisfied AND did they agree to a follow-up?” into two separate dispositions.
- Write clear conditions — Objective option conditions should be mutually exclusive and cover all expected outcomes (including an “unknown” fallback if needed).
- Use both types together — Enabling both Free Text (
is_subjective) and Pre-defined (is_objective) gives you a structured label for automation plus a human-readable explanation for review. - Use categories to group related dispositions — Group escalation, compliance, and lead quality into their own categories to keep execution results readable.
- Scope updates with
agent_id— Always passagent_idwhen updating dispositions via the API to avoid unintentionally modifying a shared disposition.
Next Steps
Dispositions API
Manage dispositions programmatically
Using Extractions
Capture structured data fields from calls
Webhooks
Receive disposition results in real-time
Executions API
Fetch disposition results from past calls

