Settings
Get the workspace retention policy.
Returns HIPAA-compliant defaults (2190 days / 6 years) for any field not explicitly configured. Advisory in v1 — no automated deletion.
Permissions: authenticated (any role).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Rate limited
GET /v1/{workspace_id}/settings/retention HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"call_recordings_days": 1,
"call_transcripts_days": 1,
"audit_log_days": 1,
"world_events_days": 1,
"phi_data_days": 1,
"legal_hold": true,
"legal_hold_reason": "text"
}Update the workspace retention policy.
Partial updates supported — only provided fields are changed. Advisory in v1: policy is stored and displayed but no automated deletion is performed. Legal hold overrides all retention.
Permissions: admin, owner (Workspace.update).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Workspace not found
Validation error
Rate limited
PUT /v1/{workspace_id}/settings/retention HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 156
{
"call_recordings_days": 1,
"call_transcripts_days": 1,
"audit_log_days": 1,
"world_events_days": 1,
"phi_data_days": 1,
"legal_hold": true,
"legal_hold_reason": "text"
}{
"call_recordings_days": 1,
"call_transcripts_days": 1,
"audit_log_days": 1,
"world_events_days": 1,
"phi_data_days": 1,
"legal_hold": true,
"legal_hold_reason": "text"
}Get the workspace metric definitions.
Returns built-in defaults when not configured.
Permissions: authenticated (any role).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Rate limited
GET /v1/{workspace_id}/settings/metrics HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"definitions": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"key": "text",
"name": "text",
"description": "text",
"metric_type": "numerical",
"latency_tier": "batch",
"period_granularity": "daily",
"source": "call_intelligence",
"custom_source_key": "text",
"event_types": [
"text"
],
"source_filter": "text",
"extraction_mode": "static",
"extract_path": "text",
"ai_labels": [
"text"
],
"ai_schema": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"ai_query_endpoint": "text",
"ai_query_prompt": "text",
"sql_expression": "text",
"aggregation": "count",
"ratio_numerator_event": "text",
"ratio_denominator_event": "text",
"valid_range_min": 1,
"valid_range_max": 1,
"freshness_sla_minutes": 60,
"unit": "text",
"categories": [
"text"
],
"model_tier": "free",
"channel_scope": "all",
"applies_to_product_types": [
"text"
],
"prompt": "text",
"granularity": "aggregate",
"active": true,
"builtin": false
}
]
}Update the workspace metric definitions.
Partial updates supported — only provided fields are changed. The definitions list is replaced entirely when provided.
A custom ai_query metric needs an output set whenever the save adds it or changes its type, prompt, labels or range: categorical requires a non-empty ai_labels list, numerical requires valid_range_min < valid_range_max. A missing or inverted bound returns 422 naming the field.
Permissions: admin, owner.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Partial update — only provided fields are changed.
The definitions list is replaced entirely when provided. Built-in metrics can be deactivated (active=false) or have their freshness_sla_minutes changed, but their key cannot be reused for custom metrics.
Successful Response
Workspace not found
Validation error
Rate limited
PUT /v1/{workspace_id}/settings/metrics HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 827
{
"definitions": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"key": "text",
"name": "text",
"description": "text",
"metric_type": "numerical",
"latency_tier": "batch",
"period_granularity": "daily",
"source": "call_intelligence",
"custom_source_key": "text",
"event_types": [
"text"
],
"source_filter": "text",
"extraction_mode": "static",
"extract_path": "text",
"ai_labels": [
"text"
],
"ai_schema": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"ai_query_endpoint": "text",
"ai_query_prompt": "text",
"sql_expression": "text",
"aggregation": "count",
"ratio_numerator_event": "text",
"ratio_denominator_event": "text",
"valid_range_min": 1,
"valid_range_max": 1,
"freshness_sla_minutes": 60,
"unit": "text",
"categories": [
"text"
],
"model_tier": "free",
"channel_scope": "all",
"applies_to_product_types": [
"text"
],
"prompt": "text",
"granularity": "aggregate",
"active": true,
"builtin": false
}
]
}{
"definitions": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"key": "text",
"name": "text",
"description": "text",
"metric_type": "numerical",
"latency_tier": "batch",
"period_granularity": "daily",
"source": "call_intelligence",
"custom_source_key": "text",
"event_types": [
"text"
],
"source_filter": "text",
"extraction_mode": "static",
"extract_path": "text",
"ai_labels": [
"text"
],
"ai_schema": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"ai_query_endpoint": "text",
"ai_query_prompt": "text",
"sql_expression": "text",
"aggregation": "count",
"ratio_numerator_event": "text",
"ratio_denominator_event": "text",
"valid_range_min": 1,
"valid_range_max": 1,
"freshness_sla_minutes": 60,
"unit": "text",
"categories": [
"text"
],
"model_tier": "free",
"channel_scope": "all",
"applies_to_product_types": [
"text"
],
"prompt": "text",
"granularity": "aggregate",
"active": true,
"builtin": false
}
]
}Get the workspace outreach settings.
Returns empty rules and templates when not configured.
Permissions: authenticated (any role).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Rate limited
GET /v1/{workspace_id}/settings/outreach HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"rules": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"trigger": "appointment_window",
"trigger_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"channel": "email",
"consent_required": true,
"quiet_hours": {
"enabled": false,
"start_hour": 21,
"end_hour": 8,
"timezone": "America/New_York"
},
"review_required": false,
"message_template": "Hi {first_name}, please complete your form: {surface_url}",
"data_template_id": "123e4567-e89b-12d3-a456-426614174000",
"form_template_id": "123e4567-e89b-12d3-a456-426614174000",
"active": true
}
],
"data_templates": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"fields": [
{
"key": "text",
"label": "text",
"field_type": "text",
"required": true,
"sensitive": false,
"path": "text"
}
]
}
]
}Update the workspace outreach settings.
Partial updates supported — only provided fields are changed. Rules and data_templates lists are replaced entirely when provided.
Validates that data_template_id references in rules point to templates that exist in the same payload or current settings.
Permissions: admin, owner.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Partial update — only provided fields are changed.
Rules and data_templates lists are replaced entirely when provided.
Successful Response
Workspace not found
Validation error
Rate limited
PUT /v1/{workspace_id}/settings/outreach HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 712
{
"rules": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"trigger": "appointment_window",
"trigger_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"channel": "email",
"consent_required": true,
"quiet_hours": {
"enabled": false,
"start_hour": 21,
"end_hour": 8,
"timezone": "America/New_York"
},
"review_required": false,
"message_template": "Hi {first_name}, please complete your form: {surface_url}",
"data_template_id": "123e4567-e89b-12d3-a456-426614174000",
"form_template_id": "123e4567-e89b-12d3-a456-426614174000",
"active": true
}
],
"data_templates": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"fields": [
{
"key": "text",
"label": "text",
"field_type": "text",
"required": true,
"sensitive": false,
"path": "text"
}
]
}
]
}{
"rules": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"trigger": "appointment_window",
"trigger_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"channel": "email",
"consent_required": true,
"quiet_hours": {
"enabled": false,
"start_hour": 21,
"end_hour": 8,
"timezone": "America/New_York"
},
"review_required": false,
"message_template": "Hi {first_name}, please complete your form: {surface_url}",
"data_template_id": "123e4567-e89b-12d3-a456-426614174000",
"form_template_id": "123e4567-e89b-12d3-a456-426614174000",
"active": true
}
],
"data_templates": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"fields": [
{
"key": "text",
"label": "text",
"field_type": "text",
"required": true,
"sensitive": false,
"path": "text"
}
]
}
]
}Get the workspace default branding for surfaces.
Returns empty branding when not configured.
Permissions: authenticated (any role).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Rate limited
GET /v1/{workspace_id}/settings/branding HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"branding": {
"logo_url": "text",
"primary_color": "text",
"background_color": "text",
"font_family": "text"
}
}Update the workspace default branding for surfaces.
Surface-level branding takes precedence over workspace-level branding.
Permissions: admin, owner.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Update workspace branding. All fields are optional — only provided fields are changed.
Successful Response
Workspace not found
Validation error
Rate limited
PUT /v1/{workspace_id}/settings/branding HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 102
{
"branding": {
"logo_url": "text",
"primary_color": "text",
"background_color": "text",
"font_family": "text"
}
}{
"branding": {
"logo_url": "text",
"primary_color": "text",
"background_color": "text",
"font_family": "text"
}
}Get the voice experience settings for a workspace.
Returns voice identity, domain vocabulary, and post-call intelligence configuration. These settings shape how the AI agent sounds and what domain-specific terms it recognizes accurately.
Permissions
Requires authenticated API key (any role).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Voice experience state — what the PM configured.
Rate limited
GET /v1/{workspace_id}/settings/voice HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"voice_id": "text",
"tone": "text",
"speed": 1,
"volume": 1,
"language": "text",
"keyterms": [
"text"
],
"pronunciation_dict_id": "text",
"sensitive_topics": [
"text"
],
"post_call_analysis_enabled": true,
"stt_provider": "deepgram",
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
}
}Update the voice experience settings for a workspace.
Only provided fields are updated; omitted fields retain their current values. Set a field to null to reset it to default.
Voice Identity & Style
voice_id: Voice identity UUID — determines the agent's voice persona
tone: Emotional baseline (
calm,sympathetic,enthusiastic,content,curious,cheerful,serious,friendly). The system also adapts tone dynamically based on real-time caller emotion analysis; this setting provides the baseline when no strong emotional signal is detected.speed: Speech rate multiplier (0.5-2.0)
volume: Volume multiplier (0.0-1.0)
language: BCP-47 language tag (default
en)
Speech Recognition Boost
keyterms: Exact words the speech recognition engine should prioritize. Use for specific names, drug names, and org jargon. Example:
["Dr. Ramirez", "metformin", "HIPAA"]
Post-Call Intelligence
post_call_analysis_enabled: Run automated quality scoring after each call ends (default
true)
Permissions
Requires admin or owner role.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Voice experience control plane — PM-facing, high-level controls.
Controls the caller experience without exposing engineering internals. Emotion detection, filler speech, model selection, and buffer tuning are always-on internals managed by engineering.
Successful Response
Voice experience state — what the PM configured.
Workspace not found
Validation error
Rate limited
PUT /v1/{workspace_id}/settings/voice HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 410
{
"voice_id": "text",
"tone": "text",
"speed": 1,
"volume": 1,
"language": "text",
"keyterms": [
"text"
],
"pronunciation_dict_id": "text",
"sensitive_topics": [
"text"
],
"post_call_analysis_enabled": true,
"stt_provider": "deepgram",
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
}
}{
"voice_id": "text",
"tone": "text",
"speed": 1,
"volume": 1,
"language": "text",
"keyterms": [
"text"
],
"pronunciation_dict_id": "text",
"sensitive_topics": [
"text"
],
"post_call_analysis_enabled": true,
"stt_provider": "deepgram",
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
}
}Last updated
Was this helpful?

