Services
List services in a workspace with pagination. Filter by agent_id or context_graph_id to list the services on an agent or context graph. Requires Service.view permission.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
[]50Only services on this agent. Each version set pins a version of its service's agent.
Only services on this context graph. Each version set pins a version of its service's context graph.
Successful Response
Missing or invalid API key.
Insufficient permissions.
Not found.
Validation Error
GET /v1/{workspace_id}/services HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "text",
"agent_id": "123e4567-e89b-12d3-a456-426614174000",
"context_graph_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "text",
"context_graph_name": "text",
"keyterms": [
"text"
],
"is_active": true,
"version_sets": {
"ANY_ADDITIONAL_PROPERTY": {
"agent_version_number": 1,
"context_graph_version_number": 1,
"llm_model_preferences": {
"ANY_ADDITIONAL_PROPERTY": {
"llm_name": "text",
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"experience_controls": {
"reasoning_effort": "none",
"temperature": 1,
"top_p": 1
}
}
}
}
},
"tags": [
{
"key": "text",
"value": "text"
}
],
"tool_capacity": 1,
"channel_type": "voice",
"environment": "production",
"voice_config": {
"max_buffer_delay_ms": 1,
"eager_eot_threshold": 1,
"eot_timeout_ms": 1,
"filler_style": "backchannel",
"filler_vocabulary": [
"text"
],
"backchannel_delay_ms": 400,
"max_response_sentences": 1,
"max_response_words": 1,
"barge_in_min_speech_s": 1,
"barge_in_cooldown_s": 1,
"min_tts_speed": 1,
"post_eot_pause_ms": 1,
"transition_deadline_ms": 1,
"progress_interval_ms": 1,
"empathy_hold_ms": 1,
"filler_cooldown_ms": 1,
"progress_vocabulary": [
"text"
],
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
},
"session_provider": "amigo",
"realtime": {
"model": "gpt-realtime-2.1",
"voice": "alloy",
"speed": 1,
"noise_reduction": "near_field",
"transcription": {
"model": "gpt-transcribe",
"language": "text",
"prompt": "text"
},
"turn_detection": {
"type": "server_vad",
"threshold": 1,
"prefix_padding_ms": 1,
"silence_duration_ms": 1,
"idle_timeout_ms": 1
},
"reasoning_effort": "low",
"max_output_tokens": 1,
"truncation": {
"type": "auto",
"retention_ratio": 1,
"post_instructions_tokens": 1
},
"required_tool_on_first_caller_turn": "text"
},
"forwarding": {
"forward_to": "text",
"warm_transfer": true,
"approved_destinations": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"accepted_context": [
{
"key": "text",
"type": "string",
"description": "text",
"required": true
}
],
"is_system": false,
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"has_more": true,
"continuation_token": null
}Create a new service linking an agent and a context graph. Validates that agent_id and context_graph_id exist in the workspace and that every version set name and pinned version is valid. Requires Service.create permission.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
""true3voicePossible values: productionPossible values: Successful Response
voicePossible values: productionPossible values: falseMissing or invalid API key.
Insufficient permissions.
Not found.
Name already taken.
Invalid request body.
POST /v1/{workspace_id}/services HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1910
{
"name": "text",
"description": "",
"agent_id": "123e4567-e89b-12d3-a456-426614174000",
"context_graph_id": "123e4567-e89b-12d3-a456-426614174000",
"keyterms": [
"text"
],
"is_active": true,
"version_sets": {
"ANY_ADDITIONAL_PROPERTY": {
"agent_version_number": 1,
"context_graph_version_number": 1,
"llm_model_preferences": {
"ANY_ADDITIONAL_PROPERTY": {
"llm_name": "text",
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"experience_controls": {
"reasoning_effort": "none",
"temperature": 1,
"top_p": 1
}
}
}
}
},
"tags": [
{
"key": "text",
"value": "text"
}
],
"tool_capacity": 3,
"channel_type": "voice",
"environment": "production",
"voice_config": {
"max_buffer_delay_ms": 1,
"eager_eot_threshold": 1,
"eot_timeout_ms": 1,
"filler_style": "backchannel",
"filler_vocabulary": [
"text"
],
"backchannel_delay_ms": 400,
"max_response_sentences": 1,
"max_response_words": 1,
"barge_in_min_speech_s": 1,
"barge_in_cooldown_s": 1,
"min_tts_speed": 1,
"post_eot_pause_ms": 1,
"transition_deadline_ms": 1,
"progress_interval_ms": 1,
"empathy_hold_ms": 1,
"filler_cooldown_ms": 1,
"progress_vocabulary": [
"text"
],
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
},
"session_provider": "amigo",
"realtime": {
"model": "gpt-realtime-2.1",
"voice": "alloy",
"speed": 1,
"noise_reduction": "near_field",
"transcription": {
"model": "gpt-transcribe",
"language": "text",
"prompt": "text"
},
"turn_detection": {
"type": "server_vad",
"threshold": 1,
"prefix_padding_ms": 1,
"silence_duration_ms": 1,
"idle_timeout_ms": 1
},
"reasoning_effort": "low",
"max_output_tokens": 1,
"truncation": {
"type": "auto",
"retention_ratio": 1,
"post_instructions_tokens": 1
},
"required_tool_on_first_caller_turn": "text"
},
"forwarding": {
"forward_to": "text",
"warm_transfer": true,
"approved_destinations": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"accepted_context": [
{
"key": "text",
"type": "string",
"description": "text",
"required": true
}
]
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "text",
"agent_id": "123e4567-e89b-12d3-a456-426614174000",
"context_graph_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "text",
"context_graph_name": "text",
"keyterms": [
"text"
],
"is_active": true,
"version_sets": {
"ANY_ADDITIONAL_PROPERTY": {
"agent_version_number": 1,
"context_graph_version_number": 1,
"llm_model_preferences": {
"ANY_ADDITIONAL_PROPERTY": {
"llm_name": "text",
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"experience_controls": {
"reasoning_effort": "none",
"temperature": 1,
"top_p": 1
}
}
}
}
},
"tags": [
{
"key": "text",
"value": "text"
}
],
"tool_capacity": 1,
"channel_type": "voice",
"environment": "production",
"voice_config": {
"max_buffer_delay_ms": 1,
"eager_eot_threshold": 1,
"eot_timeout_ms": 1,
"filler_style": "backchannel",
"filler_vocabulary": [
"text"
],
"backchannel_delay_ms": 400,
"max_response_sentences": 1,
"max_response_words": 1,
"barge_in_min_speech_s": 1,
"barge_in_cooldown_s": 1,
"min_tts_speed": 1,
"post_eot_pause_ms": 1,
"transition_deadline_ms": 1,
"progress_interval_ms": 1,
"empathy_hold_ms": 1,
"filler_cooldown_ms": 1,
"progress_vocabulary": [
"text"
],
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
},
"session_provider": "amigo",
"realtime": {
"model": "gpt-realtime-2.1",
"voice": "alloy",
"speed": 1,
"noise_reduction": "near_field",
"transcription": {
"model": "gpt-transcribe",
"language": "text",
"prompt": "text"
},
"turn_detection": {
"type": "server_vad",
"threshold": 1,
"prefix_padding_ms": 1,
"silence_duration_ms": 1,
"idle_timeout_ms": 1
},
"reasoning_effort": "low",
"max_output_tokens": 1,
"truncation": {
"type": "auto",
"retention_ratio": 1,
"post_instructions_tokens": 1
},
"required_tool_on_first_caller_turn": "text"
},
"forwarding": {
"forward_to": "text",
"warm_transfer": true,
"approved_destinations": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"accepted_context": [
{
"key": "text",
"type": "string",
"description": "text",
"required": true
}
],
"is_system": false,
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}Retrieve a service by ID. Requires Service.view permission.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
voicePossible values: productionPossible values: falseMissing or invalid API key.
Insufficient permissions.
Not found.
Validation Error
GET /v1/{workspace_id}/services/{service_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "text",
"agent_id": "123e4567-e89b-12d3-a456-426614174000",
"context_graph_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "text",
"context_graph_name": "text",
"keyterms": [
"text"
],
"is_active": true,
"version_sets": {
"ANY_ADDITIONAL_PROPERTY": {
"agent_version_number": 1,
"context_graph_version_number": 1,
"llm_model_preferences": {
"ANY_ADDITIONAL_PROPERTY": {
"llm_name": "text",
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"experience_controls": {
"reasoning_effort": "none",
"temperature": 1,
"top_p": 1
}
}
}
}
},
"tags": [
{
"key": "text",
"value": "text"
}
],
"tool_capacity": 1,
"channel_type": "voice",
"environment": "production",
"voice_config": {
"max_buffer_delay_ms": 1,
"eager_eot_threshold": 1,
"eot_timeout_ms": 1,
"filler_style": "backchannel",
"filler_vocabulary": [
"text"
],
"backchannel_delay_ms": 400,
"max_response_sentences": 1,
"max_response_words": 1,
"barge_in_min_speech_s": 1,
"barge_in_cooldown_s": 1,
"min_tts_speed": 1,
"post_eot_pause_ms": 1,
"transition_deadline_ms": 1,
"progress_interval_ms": 1,
"empathy_hold_ms": 1,
"filler_cooldown_ms": 1,
"progress_vocabulary": [
"text"
],
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
},
"session_provider": "amigo",
"realtime": {
"model": "gpt-realtime-2.1",
"voice": "alloy",
"speed": 1,
"noise_reduction": "near_field",
"transcription": {
"model": "gpt-transcribe",
"language": "text",
"prompt": "text"
},
"turn_detection": {
"type": "server_vad",
"threshold": 1,
"prefix_padding_ms": 1,
"silence_duration_ms": 1,
"idle_timeout_ms": 1
},
"reasoning_effort": "low",
"max_output_tokens": 1,
"truncation": {
"type": "auto",
"retention_ratio": 1,
"post_instructions_tokens": 1
},
"required_tool_on_first_caller_turn": "text"
},
"forwarding": {
"forward_to": "text",
"warm_transfer": true,
"approved_destinations": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"accepted_context": [
{
"key": "text",
"type": "string",
"description": "text",
"required": true
}
],
"is_system": false,
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}Update a service's configuration. Requires Service.update permission.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
voicePossible values: productionPossible values: falseMissing or invalid API key.
Insufficient permissions.
Not found.
Name already taken.
Invalid request body.
PUT /v1/{workspace_id}/services/{service_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1911
{
"name": "text",
"description": "text",
"agent_id": "123e4567-e89b-12d3-a456-426614174000",
"context_graph_id": "123e4567-e89b-12d3-a456-426614174000",
"keyterms": [
"text"
],
"is_active": true,
"version_sets": {
"ANY_ADDITIONAL_PROPERTY": {
"agent_version_number": 1,
"context_graph_version_number": 1,
"llm_model_preferences": {
"ANY_ADDITIONAL_PROPERTY": {
"llm_name": "text",
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"experience_controls": {
"reasoning_effort": "none",
"temperature": 1,
"top_p": 1
}
}
}
}
},
"tags": [
{
"key": "text",
"value": "text"
}
],
"tool_capacity": 1,
"channel_type": "voice",
"environment": "sandbox",
"voice_config": {
"max_buffer_delay_ms": 1,
"eager_eot_threshold": 1,
"eot_timeout_ms": 1,
"filler_style": "backchannel",
"filler_vocabulary": [
"text"
],
"backchannel_delay_ms": 400,
"max_response_sentences": 1,
"max_response_words": 1,
"barge_in_min_speech_s": 1,
"barge_in_cooldown_s": 1,
"min_tts_speed": 1,
"post_eot_pause_ms": 1,
"transition_deadline_ms": 1,
"progress_interval_ms": 1,
"empathy_hold_ms": 1,
"filler_cooldown_ms": 1,
"progress_vocabulary": [
"text"
],
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
},
"session_provider": "amigo",
"realtime": {
"model": "gpt-realtime-2.1",
"voice": "alloy",
"speed": 1,
"noise_reduction": "near_field",
"transcription": {
"model": "gpt-transcribe",
"language": "text",
"prompt": "text"
},
"turn_detection": {
"type": "server_vad",
"threshold": 1,
"prefix_padding_ms": 1,
"silence_duration_ms": 1,
"idle_timeout_ms": 1
},
"reasoning_effort": "low",
"max_output_tokens": 1,
"truncation": {
"type": "auto",
"retention_ratio": 1,
"post_instructions_tokens": 1
},
"required_tool_on_first_caller_turn": "text"
},
"forwarding": {
"forward_to": "text",
"warm_transfer": true,
"approved_destinations": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"accepted_context": [
{
"key": "text",
"type": "string",
"description": "text",
"required": true
}
]
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "text",
"agent_id": "123e4567-e89b-12d3-a456-426614174000",
"context_graph_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_name": "text",
"context_graph_name": "text",
"keyterms": [
"text"
],
"is_active": true,
"version_sets": {
"ANY_ADDITIONAL_PROPERTY": {
"agent_version_number": 1,
"context_graph_version_number": 1,
"llm_model_preferences": {
"ANY_ADDITIONAL_PROPERTY": {
"llm_name": "text",
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"experience_controls": {
"reasoning_effort": "none",
"temperature": 1,
"top_p": 1
}
}
}
}
},
"tags": [
{
"key": "text",
"value": "text"
}
],
"tool_capacity": 1,
"channel_type": "voice",
"environment": "production",
"voice_config": {
"max_buffer_delay_ms": 1,
"eager_eot_threshold": 1,
"eot_timeout_ms": 1,
"filler_style": "backchannel",
"filler_vocabulary": [
"text"
],
"backchannel_delay_ms": 400,
"max_response_sentences": 1,
"max_response_words": 1,
"barge_in_min_speech_s": 1,
"barge_in_cooldown_s": 1,
"min_tts_speed": 1,
"post_eot_pause_ms": 1,
"transition_deadline_ms": 1,
"progress_interval_ms": 1,
"empathy_hold_ms": 1,
"filler_cooldown_ms": 1,
"progress_vocabulary": [
"text"
],
"tts_provider": "cartesia",
"tts_config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"language_providers": {
"ANY_ADDITIONAL_PROPERTY": {
"provider": "cartesia",
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
},
"session_provider": "amigo",
"realtime": {
"model": "gpt-realtime-2.1",
"voice": "alloy",
"speed": 1,
"noise_reduction": "near_field",
"transcription": {
"model": "gpt-transcribe",
"language": "text",
"prompt": "text"
},
"turn_detection": {
"type": "server_vad",
"threshold": 1,
"prefix_padding_ms": 1,
"silence_duration_ms": 1,
"idle_timeout_ms": 1
},
"reasoning_effort": "low",
"max_output_tokens": 1,
"truncation": {
"type": "auto",
"retention_ratio": 1,
"post_instructions_tokens": 1
},
"required_tool_on_first_caller_turn": "text"
},
"forwarding": {
"forward_to": "text",
"warm_transfer": true,
"approved_destinations": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}
},
"accepted_context": [
{
"key": "text",
"type": "string",
"description": "text",
"required": true
}
],
"is_system": false,
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}Delete a service. Requires Service.delete permission.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
No content
Missing or invalid API key.
Insufficient permissions.
Not found.
Validation Error
DELETE /v1/{workspace_id}/services/{service_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Replace or create a named version set on a service. The name and pinned agent and context graph versions are validated.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Version set name (e.g. 'release')
Successful Response
No content
Missing or invalid API key.
Insufficient permissions.
Not found.
Name already taken.
Invalid request body.
PUT /v1/{workspace_id}/services/{service_id}/version-sets/{name} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 271
{
"version_set": {
"agent_version_number": 1,
"context_graph_version_number": 1,
"llm_model_preferences": {
"ANY_ADDITIONAL_PROPERTY": {
"llm_name": "text",
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"experience_controls": {
"reasoning_effort": "none",
"temperature": 1,
"top_p": 1
}
}
}
}
}No content
Run one WhatsApp-style voice-note turn against the service's agent.
Accepts OGG Opus audio (or any format Deepgram's prerecorded endpoint accepts). Server keys the conversation on (workspace, service, phone_number) and returns the agent's spoken reply as OGG Opus — or WAV PCM16 when the Accept header prefers audio/wav.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
^\+[1-9]\d{1,14}$Agent spoken reply — OGG Opus by default, WAV PCM16 (16 kHz mono) when the request's Accept header prefers audio/wav
Agent elected silence
Concurrent voice turn in progress for this speaker
Validation Error
POST /v1/{workspace_id}/services/{service_id}/voice-turn HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 38
{
"audio": "text",
"phone_number": "text"
}No content
Last updated
Was this helpful?

