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
}Receives message callbacks from Vodafone TOBi chatbot and forwards to TelPhi. Trace context (traceId, parentSpanId, callId) can be passed via query parameters for distributed tracing correlation. 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) |
| traceId | string^[a-fA-F0-9]{32}$ Trace ID for distributed tracing (32-char hex) |
| parentSpanId | string^[a-fA-F0-9]{16}$ Parent span ID for distributed tracing (16-char hex) |
| callId | string Call ID from voiceai:calls: for correlation |
| token | string Example: <token> Per-conversation TOBi callback token. Vodafone submits this as the literal token header value. |
Vodafone TOBi callback payload. TelAPI requires conversation.identifier.id so the response can be correlated to the TOBi channel.
object | |
object | |
object | |
object Provider metadata forwarded to TelPhi as JSON. | |
Array of objects | |
object |
{- "conversation": {
- "identifier": {
- "id": "tobi-conversation-123",
- "name": "Customer conversation"
}
}, - "messages": {
- "timestamp": "2026-05-06T00:00:00.000Z",
- "message": [
- {
- "messageId": 1,
- "sequence": 1,
- "content": {
- "textMessage": {
- "textPlain": "How can I help you?"
}
}
}
]
}, - "metadata": {
- "locale": "de-DE"
}
}{- "received": true,
- "streamId": "1778022191343-0"
}