Download OpenAPI specification:
TelAPI issues SDK session tokens, exposes endpoint runtime capabilities, receives provider webhooks under /api/v1/webhooks, and hosts the /ws/session WebSocket channel. Authenticated REST endpoints require a team API key in the X-API-Key header with the documented scope for each operation.
Returns all endpoints belonging to the team associated with the API key. Requires a team API key with READ_TEAM_APPS scope.
| page | string^[1-9][0-9]*$ Default: "1" Example: page=1 Page number (1-based) |
| limit | string^[1-9][0-9]*$ Default: "20" Example: limit=20 Items per page (max 100) |
{- "endpoints": [
- {
- "id": "0f6c3d4e-8b8f-4c59-9d0e-7e5e3b1f7f0f",
- "name": "Website assistant"
}
], - "pagination": {
- "total": 1,
- "page": 1,
- "limit": 20,
- "totalPages": 1
}
}Returns the interaction modes, transport preferences, flow entry points, and browser actions the SDK can use for an endpoint. Requires a team API key with CREATE_CALL_TOKEN scope.
| endpointId required | string <uuid> Example: endpointId=0f6c3d4e-8b8f-4c59-9d0e-7e5e3b1f7f0f Endpoint to inspect. Must belong to the API key team. |
{- "endpointId": "0f6c3d4e-8b8f-4c59-9d0e-7e5e3b1f7f0f",
- "flowDefinitionId": "7e0dca65-b70b-461e-9d12-c18e0ab6e626",
- "runtime": {
- "sessionContinuity": "supported",
- "migration": [
- "text_to_voice",
- "api_to_media"
]
}, - "interactionModes": {
- "text": true,
- "audio_playback": true,
- "voice_conversation": true,
- "browser_actions": true,
- "listen": true
}, - "transports": {
- "preferred": [
- "rest",
- "websocket",
- "existing_media",
- "webrtc"
], - "available": [
- "rest",
- "websocket",
- "existing_media",
- "webrtc"
]
}, - "flows": {
- "entryPoints": [
- "web_chat",
- "web_voice"
], - "responseModes": [
- "json",
- "audio_stream"
], - "sideFlows": [ ],
- "browserActions": [
- {
- "id": "read-selection",
- "slug": "read-selection",
- "label": "Read aloud",
- "type": "readAloud",
- "messageType": "browser.action.readAloud",
- "voiceInvocable": true
}
]
}
}Issues a runtime session id and a short-lived WebSocket token for the requested SDK mode.
After this call, connect the browser SDK to: /ws/session?sessionId={sessionId}&token={wsToken}
WebSocket wire format:
WebSocket close codes:
Authentication: requires a team API key with CREATE_CALL_TOKEN scope.
voice_conversation responses also include WebRTC gateway metadata (telproDomain, webrtcGatewayUrl).
| endpointId required | string <uuid> Endpoint to open a session against. It must belong to the API key team. |
| mode required | string Enum: "text" "audio_playback" "voice_conversation" "browser_actions" "listen" Session mode to provision: text chat, browser TTS playback, WebRTC voice, browser action dispatch, or interpretation listening. |
{- "endpointId": "0f6c3d4e-8b8f-4c59-9d0e-7e5e3b1f7f0f",
- "mode": "text"
}{- "sessionId": "call-loc5q7g0-k7p3f9x2",
- "wsToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
- "wsTokenExpiresIn": 300,
- "expiresIn": 3600
}Serialises the active TelAPI text FlowEngine session to Redis, then re-issues a voice_conversation token for the same sessionId so TelPhi can resume conversation context when the WebRTC leg connects.
| sessionId required | string |
| endpointId required | string <uuid> |
{- "sessionId": "string",
- "endpointId": "c8d2c7e1-e4b1-4108-9e29-3429a36a1ef3"
}{- "sessionId": "string",
- "wsToken": "string",
- "wsTokenExpiresIn": 0,
- "expiresIn": 0,
- "telproDomain": "string",
- "webrtcGatewayUrl": "string",
- "traceId": "string",
- "spanId": "string"
}After the WebRTC leg ends, re-issues a text session token for the same sessionId so TelAPI can resume chat with persisted conversation history.
| sessionId required | string |
| endpointId required | string <uuid> |
{- "sessionId": "string",
- "endpointId": "c8d2c7e1-e4b1-4108-9e29-3429a36a1ef3"
}{- "sessionId": "string",
- "wsToken": "string",
- "wsTokenExpiresIn": 0,
- "expiresIn": 0,
- "traceId": "string",
- "spanId": "string"
}Receives message callbacks from a TOBi chatbot and forwards them to TelPhi. Call/trace correlation is loaded from the Redis callback session written by TelPhi. The callback URL only needs ?token=; legacy trace/call query params are ignored when a session exists. Each callback must include the per-conversation callback token in the token header.
| channelId required | string The channel ID this callback belongs to (TOBi conversation ID) |
| token | string Optional legacy auth token echo from Vodafone callback URLs. Prefer the token header. |
| token | string Example: <token> Per-conversation TOBi callback token. Vodafone submits this as the literal token header value. |
TOBi callback payload sent by Vodafone (SendMessageResponse). TelAPI requires conversation.identifier.id so the callback can be correlated to the TOBi channel.
object | |
object | |
object | |
object Legacy provider metadata. Vodafone recommends channelData instead, but TelAPI forwards metadata when present. | |
Array of objects Outgoing channel data returned by TOBi on callbacks (Vodafone OutgoingChannelData). This is bot-to-platform context such as scenario flags or routing hints. Do not confuse this with Delphi inbound channel-data forwarding configured in TelWeb (Flow Builder → channelDataRules), which maps SIP INVITE headers into channelData on create-conversation requests sent to TOBi. Callback channelData travels in the opposite direction and is forwarded opaquely on the TelPhi Redis stream for observability. | |
object |
Spoken or written bot content only. TelAPI extracts text from messages and forwards it to TelPhi.
{- "conversation": {
- "identifier": {
- "id": "tobi-conversation-123",
- "name": "Customer conversation"
}
}, - "messages": {
- "timestamp": "2026-05-06T10:15:30.000Z",
- "message": [
- {
- "messageId": 1,
- "sequence": 1,
- "content": {
- "textMessage": {
- "textPlain": "How can I help you today?"
}
}
}
]
}, - "channelData": [
- {
- "key": "scenarioTriggered",
- "value": "General inquiry"
}
], - "metadata": {
- "locale": "de-DE"
}
}{- "received": true,
- "streamId": "1778022191343-0"
}