API reference

Voice pipelines

List the pipelines an agent can run on, and register, change or remove external voice engines.

A voice pipeline is what runs an agent's calls; an agent names its pipeline in agent_config.engine. See the voice pipelines guide.

OperationMethod and pathMinimum role
List pipelinesGET /pipelinesviewer
Register an external pipelinePOST /pipelines/externaladmin
Get an external pipelineGET /pipelines/external/{pipeline_id}viewer
Change an external pipelinePATCH /pipelines/external/{pipeline_id}admin
Remove an external pipelineDELETE /pipelines/external/{pipeline_id}admin

pipeline_id is ext:<uuid> or the bare uuid.

List pipelines

GET /pipelines

The built-in pipelines and this account's external ones, the platform default, the capability vocabulary and the wire protocols.

bash
curl https://api.sevennadi.si/pipelines -H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"

Response 200 OK

json
{
  "default": "mock",
  "pipelines": [
    {"id": "own", "name": "7Nadi voice engine", "kind": "built_in", "status": "ready", "status_detail": "",
     "protocol": "sonic", "telephony": ["twilio", "plivo", "exotel", "web"], "capabilities": ["prompt", "llm_choice"], "notes": ""},
    {"id": "ext:5f696fc3-a579-41e8-9a69-4b01fba8c45c", "name": "Complaint desk engine", "kind": "external",
     "status": "ready", "protocol": "exotel_voicebot", "telephony": ["exotel"], "capabilities": ["recording"],
     "enabled": true, "stream_url": "wss://engine.example.com/stream", "shared_secret": "xxxxxxxet", "agents_using": 2}
  ],
  "capability_catalog": [{"id": "prompt", "label": "Agent prompt and welcome message", "settings": "Agent tab: welcome message, prompt"}],
  "protocols": [{"id": "sonic", "name": "7Nadi engine protocol", "telephony": ["twilio", "plivo", "exotel"], "description": "..."}]
}

status is ready, not_configured (a built-in the operator has not set up) or disabled.

Register an external pipeline

POST /pipelines/external

FieldTypeRequiredDescription
namestringyesUp to 120 characters
descriptionstringnoOne line, shown under the dashboard's dropdown
stream_urlstringyeswss:// address the provider streams calls to
protocolstringyessonic, twilio_media_stream or exotel_voicebot
shared_secretstringyesAt least 16 characters; write-only
capabilitiesarraynoCapability ids from capability_catalog
enabledbooleannoDefault true

Response 201 Created: the pipeline, with the secret masked.

Get an external pipeline

GET /pipelines/external/{pipeline_id}

The pipeline, with agents_using (how many agents name it).

Change an external pipeline

PATCH /pipelines/external/{pipeline_id}

Any of the fields above. Leaving out shared_secret, or sending it empty, keeps the stored one. enabled: false makes its agents' calls fail until it is enabled again.

Remove an external pipeline

DELETE /pipelines/external/{pipeline_id}

json
{"message": "success", "state": "deleted", "id": "ext:5f696fc3-a579-41e8-9a69-4b01fba8c45c", "agents_using": 2}

Agents that still name it keep the value; their calls fail with a clear error until another pipeline is chosen.

Errors

StatusMessage
400stream_url must be a wss:// URL, stream_url resolves to a private address, protocol must be one of: ..., shared_secret must be at least 16 characters, without surrounding spaces, unknown capability '...'
403Your role (member) can't change voice pipelines. It needs admin access; ask an owner or admin of the workspace.
404Voice pipeline not found