For the complete documentation index, see llms.txt. This page is also available as Markdown.

Services

List services

get

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.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Query parameters
sort_bystring[]OptionalDefault: []
limitinteger · max: 200OptionalDefault: 50
continuation_tokenanyOptional
searchstring · min: 1 · max: 200 · nullableOptional
is_activeboolean · nullableOptional
agent_idstring · uuid · nullableOptional

Only services on this agent. Each version set pins a version of its service's agent.

context_graph_idstring · uuid · nullableOptional

Only services on this context graph. Each version set pins a version of its service's context graph.

Responses
200

Successful Response

application/json
has_morebooleanRequired
continuation_tokenanyOptional
get/v1/{workspace_id}/services
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 service

post

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.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Body
namestring · min: 1 · max: 256Required
descriptionstring · max: 2000OptionalDefault: ""
agent_idstring · uuidRequired
context_graph_idstring · uuidRequired
keytermsstring[] · max: 500Optional
is_activebooleanOptionalDefault: true
tool_capacityinteger · min: 1 · max: 10OptionalDefault: 3
channel_typestring · enumOptionalDefault: voicePossible values:
environmentstring · enumOptionalDefault: productionPossible values:
Responses
201

Successful Response

application/json
idstring · uuidRequired
workspace_idstring · uuidRequired
namestringRequired
descriptionstringRequired
agent_idstring · uuidRequired
context_graph_idstring · uuidRequired
agent_namestring · nullableOptional
context_graph_namestring · nullableOptional
keytermsstring[]Required
is_activebooleanRequired
tool_capacityintegerRequired
channel_typestring · enumOptionalDefault: voicePossible values:
environmentstring · enumOptionalDefault: productionPossible values:
is_systembooleanOptionalDefault: false
created_atstring · date-timeRequired
updated_atstring · date-timeRequired
post/v1/{workspace_id}/services
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"
}

Get a service

get

Retrieve a service by ID. Requires Service.view permission.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
service_idstring · uuidRequired
Responses
200

Successful Response

application/json
idstring · uuidRequired
workspace_idstring · uuidRequired
namestringRequired
descriptionstringRequired
agent_idstring · uuidRequired
context_graph_idstring · uuidRequired
agent_namestring · nullableOptional
context_graph_namestring · nullableOptional
keytermsstring[]Required
is_activebooleanRequired
tool_capacityintegerRequired
channel_typestring · enumOptionalDefault: voicePossible values:
environmentstring · enumOptionalDefault: productionPossible values:
is_systembooleanOptionalDefault: false
created_atstring · date-timeRequired
updated_atstring · date-timeRequired
get/v1/{workspace_id}/services/{service_id}
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

put

Update a service's configuration. Requires Service.update permission.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
service_idstring · uuidRequired
Body
namestring · min: 1 · max: 256 · nullableOptional
descriptionstring · max: 2000 · nullableOptional
agent_idstring · uuid · nullableOptional
context_graph_idstring · uuid · nullableOptional
keytermsstring[] · max: 500 · nullableOptional
is_activeboolean · nullableOptional
tool_capacityinteger · min: 1 · max: 10 · nullableOptional
channel_typestring · enum · nullableOptionalPossible values:
environmentstring · enum · nullableOptionalPossible values:
Responses
200

Successful Response

application/json
idstring · uuidRequired
workspace_idstring · uuidRequired
namestringRequired
descriptionstringRequired
agent_idstring · uuidRequired
context_graph_idstring · uuidRequired
agent_namestring · nullableOptional
context_graph_namestring · nullableOptional
keytermsstring[]Required
is_activebooleanRequired
tool_capacityintegerRequired
channel_typestring · enumOptionalDefault: voicePossible values:
environmentstring · enumOptionalDefault: productionPossible values:
is_systembooleanOptionalDefault: false
created_atstring · date-timeRequired
updated_atstring · date-timeRequired
put/v1/{workspace_id}/services/{service_id}
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

delete

Delete a service. Requires Service.delete permission.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
service_idstring · uuidRequired
Responses
204

Successful Response

No content

delete/v1/{workspace_id}/services/{service_id}
DELETE /v1/{workspace_id}/services/{service_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Upsert a service version set

put

Replace or create a named version set on a service. The name and pinned agent and context graph versions are validated.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
service_idstring · uuidRequired
namestring · max: 40Required

Version set name (e.g. 'release')

Body
Responses
204

Successful Response

No content

put/v1/{workspace_id}/services/{service_id}/version-sets/{name}
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

Voice Turn

post

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.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
service_idstring · uuidRequired
Header parameters
acceptstring · nullableOptional
Body
audiostringRequired
phone_numberstring · max: 16RequiredPattern: ^\+[1-9]\d{1,14}$
Responses
200

Agent spoken reply — OGG Opus by default, WAV PCM16 (16 kHz mono) when the request's Accept header prefers audio/wav

anyOptional
post/v1/{workspace_id}/services/{service_id}/voice-turn
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?