---
title: "List Customer Facing Agents"
method: GET
path: "/v1/smb/customer-facing-agents"
tags: ["smb", "SMB"]
---

# List Customer Facing Agents

`GET /v1/smb/customer-facing-agents`

## Request

- Base URL: `https://api.elevenlabs.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.elevenlabs.io/v1/smb/customer-facing-agents`
- Auth: none declared

List every customer-facing receptionist for the workspace.

## Headers

- `xi-api-key` string, nullable: Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.
- `xi-workspace-id` string, nullable: The customer workspace a reseller's API key acts on.

## Response `200`

Successful Response

- SMBCustomerFacingAgentResponse[]
  - `agent_id` string: ConvAI agent id. Empty string is the placeholder seeded by the legacy API validator when migrating a single-agent payload; the agent-owning service resolves it from the workspace assignment.
  - `config` CustomerFacingConfigOutput
    - `additional_instructions` string
    - `tone_traits` StrippedStr[]: Personality/tone trait keys that drive the Personality prompt section (e.g. ['professional', 'concise']).
    - `details_to_collect` StrippedStr[]: Details the agent should always try to collect from callers (presets + custom labels, e.g. ['full name', 'phone number']).
    - `llm` 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4' | 'gpt-4-turbo' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-5' | 'gpt-5.1' | 'gpt-5.2' | 'gpt-5.2-chat-latest' | 'gpt-5.4' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5.5' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-6-astra' | 'gpt-6-sol' | 'gpt-6-luna' | 'gpt-6.1-sol' | 'gpt-6.1-terra' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-3.5-turbo' | 'gemini-1.5-pro' | 'gemini-1.5-flash' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.5-flash-lite' | 'gemini-2.5-flash' | 'gemini-3-pro-preview' | 'gemini-3-flash-preview' | 'gemini-3.1-pro-preview' | 'gemini-3.1-flash-lite-preview' | 'gemini-3.1-flash-lite' | 'gemini-3.5-flash' | 'gemini-3.5-flash-lite' | 'gemini-3.6-flash' | 'gemini-3.7-flash' | 'gemini-3.8-flash' | 'gemini-4-argon' | 'claude-sonnet-4-5' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-sonnet-4-6' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | 'claude-sonnet-4' | 'claude-haiku-4-5' | 'claude-haiku-5-5' | 'claude-3-7-sonnet' | 'claude-3-5-sonnet' | 'claude-3-5-sonnet-v1' | 'claude-3-haiku' | 'grok-beta' | 'custom-llm' | 'qwen3-4b' | 'qwen3-30b-a3b' | 'qwen36-35b-a3b' | 'qwen35-397b-a17b' | 'gpt-oss-20b' | 'gpt-oss-120b' | 'glm-45-air-fp8' | 'glm-52' | 'deepseek-v41-flash' | 'nemotron-35-super-vl-nvfp4' | 'gemini-2.5-flash-preview-09-2025' | 'gemini-2.5-flash-lite-preview-09-2025' | 'gemini-2.5-flash-preview-05-20' | 'gemini-2.5-flash-preview-04-17' | 'gemini-2.5-flash-lite-preview-06-17' | 'gemini-2.0-flash-lite-001' | 'gemini-2.0-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-flash-001' | 'gemini-1.5-pro-002' | 'gemini-1.5-pro-001' | 'claude-sonnet-4@20250514' | 'claude-sonnet-4-5@20250929' | 'claude-haiku-4-5@20251001' | 'claude-3-7-sonnet@20250219' | 'claude-3-5-sonnet@20240620' | 'claude-3-5-sonnet-v2@20241022' | 'claude-3-haiku@20240307' | 'gpt-5-2025-08-07' | 'gpt-5.1-2025-11-13' | 'gpt-5.2-2025-12-11' | 'gpt-5.4-2026-03-05' | 'gpt-5.4-mini-2026-03-17' | 'gpt-5.4-nano-2026-03-17' | 'gpt-5.5-2026-04-23' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano-2025-08-07' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-05-13' | 'gpt-4-0613' | 'gpt-4-0314' | 'gpt-4-turbo-2024-04-09' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'watt-tool-8b' | 'watt-tool-70b'
    - `reasoning_effort` 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'
    - `disable_rag` boolean: When true, the receptionist's knowledge base is injected in full into the system prompt instead of being retrieved via vector RAG on every turn. This removes the per-turn embedding + vector-search latency, but is only viable for small knowledge bases that fit within the prompt budget (KNOWLEDGE_BASE_IN_PROMPT_MAX_LEN). Knowledge bases too large to inline fall back to RAG at build time.
    - `background_voice_detection` boolean: Filter out far-field human speech before transcription.
    - `turn_eagerness` 'patient' | 'normal' | 'eager': How quickly the receptionist decides the caller has finished speaking.
    - `voice_id` string: ElevenLabs voice ID
    - `language` string
    - `additional_languages` SupportedLang[]: Additional language codes the agent can communicate in
    - `first_message` string: The first message the agent says when starting a conversation
    - `disable_first_message_interruptions` boolean: When true, callers cannot interrupt the receptionist while the first message is being delivered. Use when the greeting carries a recording or legal notice callers must hear in full.
    - `enable_end_call_tool` boolean: Allow the end_call system tool during conversations.
    - `enable_skip_turn_tool` boolean: Allow the skip_turn system tool during conversations.
    - `enable_play_keypad_touch_tone_tool` boolean: Allow the play_keypad_touch_tone (DTMF) system tool during conversations. When enabled, the receptionist can play touch-tone digits on a live call to navigate automated phone menus or answer carrier prompts such as a 'press 1 to accept' call-screening step.
    - `agent_rules` AgentRule[]: Behavioral rules this agent must follow.
      - `title` string, required
      - `description` string, required
      - `priority` 'strict' | 'suggestion'
      - `id` string
      - `created_at_unix` integer: Unix timestamp (seconds since epoch)
    - `transfer_rules` SMBTransferRule[]: Phone numbers this agent can transfer calls to.
      - `label` string, required
      - `phone_number` string, required
      - `condition` string, required
      - `post_dial_digits` string, nullable: DTMF digits automatically played after the transfer destination picks up (e.g. '1' to answer a 'press 1 to accept' screen, or 'www1234' to key an extension after a pause). Valid characters are 0-9, *, #, w (0.5s pause) and W (1s pause). Twilio transfers only.
      - `id` string
      - `created_at_unix` integer: Unix timestamp (seconds since epoch)
    - `hide_caller_number_on_transfers` boolean: Show the business's own number, rather than the caller's, as the caller ID on transferred calls.
    - `record_after_transfers` boolean: Keep recording after a call is transferred and add that audio to the call recording.
    - `procedures` SMBProcedure[]: Standard operating procedures (SOPs) this agent can run on calls.
      - `name` string, required
      - `trigger` string, required
      - `body` string: Step-by-step instructions, as markdown.
      - `id` string
      - `created_at_unix` integer: Unix timestamp (seconds since epoch)
      - `source_key` string, nullable
    - `enable_secure_mode` boolean: When enabled, the receptionist may only look up or modify appointments and client records tied to the caller's verified phone number.
    - `enable_spam_protection` boolean: When enabled, inbound calls to US numbers are screened before the receptionist answers: calls whose caller ID failed carrier (STIR/SHAKEN) verification are rejected, and unknown callers whose caller ID the carrier could not vouch for must press a key to be connected.
  - `deactivated_at_unix` integer, nullable: Unix timestamp when this receptionist was deactivated. None when active.
  - `deactivation_reason` 'tier_downgrade' | 'user': Why a receptionist is currently inactive (live calls disabled).
  - `name` string: Display name read from the ConvAI agent document (the single source of truth).
  - `agent_exists` boolean: Whether the underlying ConvAI agent document still exists. False when the receptionist references a deleted agent and needs repair.
  - `is_transfer_allowed` boolean: Whether this receptionist can configure and use transfer rules.
  - `widget` SMBWidgetAppearance: How the website widget looks -- the only part of its config SMB exposes. Unlike the rest of a receptionist's settings this is not SMB data: it is written straight onto the ConvAI agent's ``platform_settings.widget``. The value types mirror ConvAI's ``WidgetConfig`` by hand because ``xi_reception`` must not depend on ``xi_agents``; they are the widget's public API, so they are stable. A ``None`` label means "no override", which keeps the widget following the agent's language instead of freezing today's translation into the config.
    - `orb_color_1` string, required
    - `orb_color_2` string, required
    - `variant` 'tiny' | 'compact' | 'full', required
    - `placement` 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right', required
    - `dismissible` boolean, required
    - `main_label` string, nullable
    - `start_call` string, nullable
  - `is_active` boolean, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-30** `b77988199a2e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/smb/customer-facing-agents/get.md)

---

[API](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation.md) - [All operations](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/revisions/b402c33b07b4?raw)
