Skip to main content
GET
/
v1
/
voice
/
configs
List voice pipeline configs for the org
curl --request GET \
  --url https://api-sandbox.featherhq.com/v1/voice/configs \
  --header 'x-api-key: <api-key>'
[
  {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "voice_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "voice": {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "provider": "<string>",
      "external_id": "<string>",
      "name": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "description": "<string>",
      "preview_url": "<string>",
      "language": "<string>",
      "accent": "<string>",
      "category": "<string>",
      "labels": {},
      "supported_models": [
        "<string>"
      ],
      "is_active": true
    },
    "stt_provider": "<string>",
    "stt_language": "<string>",
    "vad_provider": "<string>",
    "interruptions_enabled": true,
    "interruption_min_words": 123,
    "interruption_min_duration_ms": 123,
    "interruption_backoff_ms": 123,
    "interruption_sensitivity": 123,
    "interruption_final_transcript_grace_ms": 123,
    "min_endpoint_delay_ms": 123,
    "max_endpoint_delay_ms": 123,
    "preemptive_generation_enabled": true,
    "voicemail_detection_mode": "<string>",
    "voicemail_detection_timeout_ms": 123,
    "max_call_duration_ms": 123,
    "silence_timeout_ms": 123,
    "silence_reminder_count": 123,
    "silence_reminder_mode": "<string>",
    "silence_end_action": "<string>",
    "dtmf_enabled": true,
    "dtmf_termination_digit": "<string>",
    "dtmf_inter_digit_timeout_ms": 123,
    "dtmf_max_digits": 123,
    "dtmf_prefix": "<string>",
    "backchannel_enabled": true,
    "background_audio_volume": 123,
    "background_audio_loop": true,
    "background_audio_enabled": true,
    "noise_cancellation_enabled": true,
    "recording_enabled": true,
    "transcription_storage_enabled": true,
    "normalize_for_speech": true,
    "audio_in_sample_rate": 123,
    "audio_out_sample_rate": 123,
    "metrics_enabled": true,
    "usage_metrics_enabled": true,
    "language": "<string>",
    "multilingual_enabled": true,
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z",
    "organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "persona_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "voice_tuning": {},
    "stt_model": "<string>",
    "stt_provider_data": {},
    "tts_speed": 123,
    "tts_provider_data": {},
    "vad_provider_data": {},
    "local_vad_params": {},
    "turn_analyzer_params": {},
    "interruption_trigger_phrases": [
      "<string>"
    ],
    "interruption_hard_phrases": [
      "<string>"
    ],
    "hard_turn_timeout_ms": 123,
    "voicemail_detection_model": "<string>",
    "voicemail_message": "<string>",
    "end_call_phrases": [
      "<string>"
    ],
    "silence_reminder_message": "<string>",
    "silence_end_message": "<string>",
    "backchannel_frequency": 123,
    "pronunciation_overrides": {},
    "background_audio_preset": "<string>",
    "heartbeats_period_secs": 123,
    "idle_pipeline_timeout_ms": 123,
    "locale": "<string>",
    "multilingual_languages": [
      "<string>"
    ],
    "metadata_": {},
    "first_speaking_config": {
      "first_speaker": "agent",
      "mode": "static",
      "text": "<string>",
      "instructions": "<string>",
      "interruptible": true,
      "ai_disclosure_text": "<string>"
    },
    "warnings": [
      "<string>"
    ]
  }
]

Authorizations

x-api-key
string
header
required

Query Parameters

agent_id
string<uuid> | null
team_id
string<uuid> | null
persona_id
string<uuid> | null

Response

Successful Response

id
string<uuid>
required
voice_id
string<uuid>
required
voice
VoiceOut · object
required
stt_provider
string
required
stt_language
string
required
vad_provider
string
required
interruptions_enabled
boolean
required
interruption_min_words
integer
required
interruption_min_duration_ms
integer
required
interruption_backoff_ms
integer
required
interruption_sensitivity
number
required
interruption_final_transcript_grace_ms
integer
required
min_endpoint_delay_ms
integer
required
max_endpoint_delay_ms
integer
required
preemptive_generation_enabled
boolean
required
voicemail_detection_mode
string
required
voicemail_detection_timeout_ms
integer
required
max_call_duration_ms
integer
required
silence_timeout_ms
integer
required
silence_reminder_count
integer
required
silence_reminder_mode
string
required
silence_end_action
string
required
dtmf_enabled
boolean
required
dtmf_termination_digit
string
required
dtmf_inter_digit_timeout_ms
integer
required
dtmf_max_digits
integer
required
dtmf_prefix
string
required
backchannel_enabled
boolean
required
background_audio_volume
number
required
background_audio_loop
boolean
required
background_audio_enabled
boolean
required
noise_cancellation_enabled
boolean
required
recording_enabled
boolean
required
transcription_storage_enabled
boolean
required
normalize_for_speech
boolean
required
audio_in_sample_rate
integer
required
audio_out_sample_rate
integer
required
metrics_enabled
boolean
required
usage_metrics_enabled
boolean
required
language
string
required
multilingual_enabled
boolean
required
created_at
string<date-time>
required
updated_at
string<date-time>
required
organization_id
string<uuid> | null
agent_id
string<uuid> | null
team_id
string<uuid> | null
persona_id
string<uuid> | null
voice_tuning
Voice Tuning · object
stt_model
string | null
stt_provider_data
Stt Provider Data · object
tts_speed
number | null
tts_provider_data
Tts Provider Data · object
vad_provider_data
Vad Provider Data · object
local_vad_params
Local Vad Params · object
turn_analyzer_params
Turn Analyzer Params · object
interruption_trigger_phrases
string[]
interruption_hard_phrases
string[]
hard_turn_timeout_ms
integer | null
voicemail_detection_model
string | null
voicemail_message
string | null
end_call_phrases
string[]
silence_reminder_message
string | null
silence_end_message
string | null
backchannel_frequency
integer | null
pronunciation_overrides
Pronunciation Overrides · object
background_audio_preset
string | null
heartbeats_period_secs
integer | null
idle_pipeline_timeout_ms
integer | null
locale
string | null
multilingual_languages
string[]
metadata_
Metadata · object
first_speaking_config
FirstSpeakingConfig · object

Config for the AI's opening turn (no user input yet).

Lives inside ChannelConfig — first-speaking is per-channel.

Mode-agnostic fields:

  • first_speaker: "agent" opens the call with the rendered message; "user" skips the greeting (caller speaks first). Non-voice channels treat the inbound user message as the "user" opener and ignore this field at runtime.

Greeting source (only applies when first_speaker="agent"):

  • static mode: text is required and emitted verbatim (templated via the shared {{var}} engine, src.shared.templating.render).
  • dynamic mode: instructions are sent to the model router with the agent persona to render an opening line (instructions are templated). When omitted/empty, instructions falls back to DEFAULT_DYNAMIC_FIRST_SPEAKING_INSTRUCTIONS so operators who just want a generic friendly opener don't have to author copy.

Voice-only fields (ignored on non-audio channels):

  • interruptible: whether the caller can barge in mid-greeting.
  • ai_disclosure_text: regulatory disclosure (e.g. CA SB 1001), played as an uninterruptible TTS frame BEFORE the greeting. Disclosure plays even when first_speaker="user" because the regulation requires the disclosure regardless of who speaks first.
warnings
string[]