---
title: "List Text Agents"
method: GET
path: "/api/v1/text-ai/text-agents"
tags: ["text-ai", "text_agents"]
---

# List Text Agents

`GET /api/v1/text-ai/text-agents`

List all Text Agents for the authenticated tenant.

## Response `200`

Successful Response

- TextAgentRead[]
  - `id` string, uuid, required
  - `name` string, required
  - `system_prompt` string, nullable
  - `model` string
  - `timezone` string, nullable
  - `greeting_message` string, nullable
  - `branding` object, nullable
  - `collect_fields` string[]
  - `session_timeout_minutes` integer, nullable — Inactivity timeout in minutes. null = no timeout.
  - `tenant_id` string, uuid, required
  - `enabled` boolean, required
  - `publishable_key` string, required
  - `text_widget_group_id` string, uuid, nullable
  - `environment` string
  - `active_version_id` string, uuid, nullable
  - `scenarios` ScenarioBaseAnnotatedUnionTransferActionSMSStaticActionSMSStaticLinkActionEmailStaticLinkActionIntegrationToolActionKBToolActionBuiltinToolActionFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput[]
    - `id` string, uuid, required
    - `name` string, required
    - `condition` string, nullable
    - `action` union, required
      - TransferAction
        - `type` 'transfer_action'
        - `params_schema` unknown
        - `target_number` string, required
      - SMSStaticAction
        - `type` 'sms_static_action'
        - `params_schema` unknown
        - `message` string, required
      - SMSStaticLinkAction
        - `type` 'sms_static_link_action'
        - `params_schema` unknown
        - `message` string, required
        - `link` string, required
      - EmailStaticLinkAction
        - `type` 'email_static_link_action'
        - `message` string, required
        - `link` string, required
      - IntegrationToolActionOutput — Action type for integration tools (Composio, future providers). This is provider-agnostic: the tool_name maps to an AgentIntegrationTool record which contains the executor_type and provider details. Unlike other actions which have fixed params, integration tools have dynamic params based on the specific tool (e.g., HubSpot create contact vs. Gmail send email have different params).
        - `type` 'integration_tool_action'
        - `params_schema` unknown
        - `agent_integration_tool_id` string, uuid, required
        - `tool_name` string, required
        - `display_name` string, required
        - `params_schema_dict` object, nullable
        - `parameter_configs` ToolParameterConfig[]
          - `param_name` string, required
          - `fill_mode` 'ask_caller' | 'fixed_value' | 'use_default', required — Determines how a tool parameter gets its value during execution.
          - `fixed_value` string, nullable
          - `prompt_hint` string, nullable
          - `default_fallback` string, nullable
          - `required` boolean
          - `allowed_values` string[], nullable
      - KBToolAction — Action type for knowledge base search tools. This unifies KB tools with other tool types under the scenarios model. The agent_knowledge_base_id references the AgentKnowledgeBase record which defines the KB link and default parameters. Presets can override default_result_limit and default_min_relevance_score at the scenario level.
        - `type` 'kb_tool_action'
        - `params_schema` unknown
        - `agent_knowledge_base_id` string, uuid, required
        - `knowledge_base_id` string, uuid, required
        - `tool_name` string, required
        - `description` string, required
        - `default_result_limit` integer
        - `default_min_relevance_score` number
      - BuiltinToolAction — Action type for built-in platform tools (lookup_customer, call context, investigation tools, etc.). These tools are not backed by AgentIntegrationTool DB records. They are resolved at execution time by matching tool_name to the canonical definitions in builtin_tool_definitions.py. No parameter_configs — built-in tool params are handled by the executor. Configuration is done via scenario-level fields (condition, pre_execution_instruction, tool_messages).
        - `type` 'builtin_tool_action'
        - `params_schema` unknown
        - `tool_name` string, required
        - `display_name` string, required
    - `preset` ParameterPreset — Consolidated parameter policy for a scenario. This replaces the per-parameter ToolParameterConfig list with a cleaner, scenario-level interface for specifying parameter behavior: - defaults: Fallback values if LLM doesn't provide them - fixed: Always used, overrides any LLM-provided values - required: Must be satisfied (by LLM, fixed, or default) before execution - allowed: Enum constraints restricting valid values per parameter - guidance: Per-parameter LLM guidance text. Surfaced in the system prompt so the LLM knows what to ask the caller for or how to source the value. Only meaningful for params in dynamic/default-fallback mode. Example: ParameterPreset( defaults={"priority": "normal"}, fixed={"source": "voice_call"}, required=["contact_email"], allowed={"priority": ["low", "normal", "high"]}, guidance={"contact_email": "Ask the caller for their email address"} )
      - `defaults` object
      - `fixed` object
      - `required` string[]
      - `allowed` object
      - `guidance` object
    - `destination_ref` DestinationRef — Typed annotation of a transfer scenario's primary destination. Links the free-text destination (``preset.fixed["to"]``) to the entity it targets — a HumanAgent or a routing-environment node — so the routing-map projection resolves edges without string-matching phone numbers. Purely additive: the phone string remains the executable truth and the runtime ignores this field entirely.
      - `kind` 'human_agent' | 'routing_node', required
      - `id` string, uuid, required
    - `priority` integer
    - `enabled` boolean
    - `business_hours_only` boolean
    - `business_hours_schedule` BusinessHoursScheduleOverride — Per-destination schedule override. Same day-buckets as the tenant default; ``None`` for a day-group means closed all day. Consumed by the shared ``business_hours`` normalizer after ``.model_dump()``.
      - `weekdays` BusinessHoursWindow — One open window for a day-group, minutes since midnight (end exclusive).
        - `start_minute` integer, required
        - `end_minute` integer, required
      - `saturday` BusinessHoursWindow — One open window for a day-group, minutes since midnight (end exclusive).
        - `start_minute` integer, required
        - `end_minute` integer, required
      - `sunday` BusinessHoursWindow — One open window for a day-group, minutes since midnight (end exclusive).
        - `start_minute` integer, required
        - `end_minute` integer, required
    - `after_hours_action` AfterHoursAction — What the agent does when a gated destination is closed and no eligible transfer remains. Validation guarantees the type-specific field is present so the worker never hits an undefined terminal state.
      - `type` 'voicemail' | 'transfer' | 'end_call' | 'callback_request' | 'agent_message', required
      - `transfer_to` string, nullable
      - `fallback_numbers` string[]
      - `message` string, nullable
    - `fallback_numbers` string[]
    - `randomize_hunt_order` boolean
    - `hunt_group_name` string, nullable
    - `trigger` TriggerSpec — Structured trigger specification for scenario matching. This enables more sophisticated matching than raw string conditions: - keyword: Match specific phrases ("I want to book", "transfer me") - intent: Semantic intent matching ("booking_intent", "complaint") - entity: Entity presence ("email_address", "phone_number") - tool_request: LLM explicitly requests a tool by name - always: Default fallback, always matches The `condition` field in ScenarioBase remains for backward compatibility and is used as the LLM-facing description. TriggerSpec is for routing. Example: TriggerSpec( type=TriggerType.INTENT, value="schedule_appointment", confidence_threshold=0.8 )
      - `type` 'keyword' | 'intent' | 'entity' | 'tool_request' | 'always' | 'subject_contains' | 'body_contains' | 'hubspot_category' | 'hubspot_priority' | 'customer_tier' — Types of triggers that can activate a scenario.
      - `value` string
      - `confidence_threshold` number
      - `phases` string[], nullable
    - `tool_messages` ToolMessageConfig — Configuration for what the agent says during tool execution. The platform supports 4 message types during tool calls: - start: When tool execution begins - delayed: If execution takes longer than expected or user speaks - complete: When tool succeeds - failed: When tool fails For each message: - None = use platform default behavior - "" (empty string) = silence (say nothing) - "custom text" = say this specific message - ["variant A", "variant B"] = random selection per call Platform defaults: - start: Random filler like "Hold on a sec", "One moment", "Just a sec" - delayed: "Sorry, a few more seconds" - complete: (none) - failed: (none)
      - `start_message` union — Message before tool execution. None=default, empty=silence
        - string
        - string[]
      - `delayed_message` union — Message if tool execution is delayed
        - string
        - string[]
      - `delayed_timing_ms` integer — How long to wait before saying delayed message
      - `complete_message` union — Message after successful tool execution
        - string
        - string[]
      - `failed_message` union — Message after failed tool execution
        - string
        - string[]
      - `start_blocking` boolean — If true, wait for start message before calling tool
    - `pre_execution_instruction` string, nullable — Instruction for the LLM before executing this tool
    - `post_execution_instruction` string, nullable — Instruction for the LLM after receiving the tool result
    - `transfer_ring_timeout_seconds` integer, nullable
    - `warm_transfer_hold_message_mode` 'default' | 'silent' | 'custom', nullable
    - `warm_transfer_hold_message` string, nullable
    - `warm_transfer_briefing_mode` 'default' | 'custom', nullable
    - `warm_transfer_briefing_instructions` string, nullable
    - `warm_transfer_farewell_mode` 'default' | 'silent' | 'custom', nullable
    - `warm_transfer_farewell_message` string, nullable
  - `handoff_enabled` boolean, required
  - `handoff_provider` string, nullable, required
  - `handoff_config` object, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getanana/cleon-api/revisions/c0f54348e251/schema)
