Skip to main content

POST /dispositions/bulk

Creates multiple dispositions and links them all to the specified agent in a single atomic transaction. Either all dispositions are created and linked, or none are — partial results are not possible.
Use bulk create when setting up a new agent with a complete set of dispositions, or when importing a disposition configuration from another source.

Request Body

FieldTypeRequiredDescription
agent_idstringYesThe agent all dispositions will be linked to
dispositionsarrayYesNon-empty array of disposition objects to create
Each item in dispositions accepts:
FieldTypeRequiredDescription
namestringYesDisplay name
questionstringYesLLM evaluation prompt
categorystringNoGrouping label (default: "General")
system_promptstringNoOptional LLM system context
modelstringNoLLM model (default: "gpt-4.1-mini")
is_subjectiveboolNoEnable free-text response (default: false)
is_objectiveboolNoEnable pre-defined value selection (default: false)
objective_optionsarrayConditionalRequired when is_objective is true

Response

201 Created
{
  "message": "Dispositions created successfully",
  "ids": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "7cb91a23-1234-4321-b2fc-1c963f11bde4"
  ]
}
The ids array preserves the same order as the input dispositions array.

Example

Bulk create
curl --request POST \
  --url 'https://api.bolna.dev/dispositions/bulk' \
  --header 'Authorization: Bearer {api_key}' \
  --header 'Content-Type: application/json' \
  --data '{
    "agent_id": "{agent_id}",
    "dispositions": [
      {
        "name": "Agent Handover Needed",
        "question": "Did the customer explicitly ask to speak with a human agent?",
        "category": "Escalation",
        "is_objective": true,
        "objective_options": [
          { "value": "Yes", "condition": "Customer asked to speak with a human or live agent" },
          { "value": "No", "condition": "Customer did not request a human handover" }
        ]
      },
      {
        "name": "Customer Sentiment",
        "question": "Describe the customer'\''s overall tone and satisfaction level during the call.",
        "category": "Quality",
        "is_subjective": true
      },
      {
        "name": "Disclaimer Acknowledged",
        "question": "Did the agent read the required disclaimer and did the customer acknowledge it?",
        "category": "Compliance",
        "is_objective": true,
        "objective_options": [
          { "value": "Yes", "condition": "Disclaimer was read and customer confirmed or did not object" },
          { "value": "No", "condition": "Disclaimer was not read or customer explicitly refused" }
        ]
      }
    ]
  }'

Error Responses

StatusDescription
403Access denied — agent_id does not belong to your account
422Validation error — empty dispositions array or is_objective without objective_options
500Failed to create dispositions — transaction rolled back, no dispositions were created