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.
| Operation | Method and path | Minimum role |
|---|---|---|
| List pipelines | GET /pipelines | viewer |
| Register an external pipeline | POST /pipelines/external | admin |
| Get an external pipeline | GET /pipelines/external/{pipeline_id} | viewer |
| Change an external pipeline | PATCH /pipelines/external/{pipeline_id} | admin |
| Remove an external pipeline | DELETE /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.
curl https://api.sevennadi.si/pipelines -H "Authorization: Bearer vk-0123456789abcdef0123456789abcdef"Response 200 OK
{
"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
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Up to 120 characters |
description | string | no | One line, shown under the dashboard's dropdown |
stream_url | string | yes | wss:// address the provider streams calls to |
protocol | string | yes | sonic, twilio_media_stream or exotel_voicebot |
shared_secret | string | yes | At least 16 characters; write-only |
capabilities | array | no | Capability ids from capability_catalog |
enabled | boolean | no | Default 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}
{"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
| Status | Message |
|---|---|
| 400 | stream_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 '...' |
| 403 | Your role (member) can't change voice pipelines. It needs admin access; ask an owner or admin of the workspace. |
| 404 | Voice pipeline not found |