GET /api/v1/runtime/capabilities
Discover endpoint runtime capabilities
{
"summary": "Discover endpoint runtime capabilities",
"tags": [
"Runtime"
],
"description": "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.",
"parameters": [
{
"schema": {
"type": "string",
"format": "uuid"
},
"example": "0f6c3d4e-8b8f-4c59-9d0e-7e5e3b1f7f0f",
"in": "query",
"name": "endpointId",
"required": true,
"description": "Endpoint to inspect. Must belong to the API key team."
}
],
"security": [
{
"apiKey": []
}
],
"responses": {
"200": {
"description": "Default Response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"endpointId",
"flowDefinitionId",
"runtime",
"interactionModes",
"transports",
"flows"
],
"properties": {
"endpointId": {
"type": "string",
"format": "uuid"
},
"flowDefinitionId": {
"type": [
"null",
"string"
],
"format": "uuid",
"description": "Active flow definition id, or null when the endpoint has no linked flow."
},
"runtime": {
"type": "object",
"required": [
"sessionContinuity",
"migration"
],
"properties": {
"sessionContinuity": {
"type": "string",
"enum": [
"supported"
]
},
"migration": {
"type": "array",
"items": {
"type": "string",
"enum": [
"text_to_voice",
"api_to_media"
]
}
}
}
},
"interactionModes": {
"type": "object",
"required": [
"text",
"audio_playback",
"voice_conversation",
"browser_actions",
"listen"
],
"properties": {
"text": {
"type": "boolean"
},
"audio_playback": {
"type": "boolean"
},
"voice_conversation": {
"type": "boolean"
},
"browser_actions": {
"type": "boolean"
},
"listen": {
"type": "boolean"
}
}
},
"transports": {
"type": "object",
"required": [
"preferred",
"available"
],
"properties": {
"preferred": {
"type": "array",
"description": "Transports ordered by SDK preference.",
"items": {
"type": "string",
"enum": [
"rest",
"websocket",
"existing_media",
"webrtc"
]
}
},
"available": {
"type": "array",
"description": "Every transport this endpoint can support.",
"items": {
"type": "string",
"enum": [
"rest",
"websocket",
"existing_media",
"webrtc"
]
}
}
}
},
"flows": {
"type": "object",
"required": [
"entryPoints",
"responseModes",
"sideFlows",
"browserActions"
],
"properties": {
"entryPoints": {
"type": "array",
"items": {
"type": "string",
"enum": [
"phone",
"web_voice",
"web_chat"
]
}
},
"responseModes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"audio_stream",
"text_stream",
"json",
"none"
]
}
},
"sideFlows": {
"type": "array",
"description": "Advanced side flows that are not generated Browser-Originated Action capabilities.",
"items": {
"type": "object",
"required": [
"id",
"triggerType"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"triggerType": {
"type": "string"
},
"messageType": {
"type": "string",
"description": "WebSocket message type when triggerType is ws_message."
}
}
}
},
"browserActions": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"slug",
"label",
"type",
"messageType",
"voiceInvocable"
],
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"label": {
"type": "string"
},
"type": {
"type": "string"
},
"messageType": {
"type": "string"
},
"voiceInvocable": {
"type": "boolean"
}
}
}
}
}
}
}
},
"example": {
"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
}
]
}
}
}
}
},
"400": {
"description": "Request validation failed",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Request validation failed",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable error code.",
"example": "VALIDATION_ERROR"
},
"message": {
"type": "string",
"description": "Human-readable error summary.",
"example": "Request validation failed"
},
"details": {
"description": "Optional structured details, usually validation issues."
},
"requestId": {
"type": "string",
"description": "Fastify request id for log correlation when available."
}
}
}
}
},
"example": {
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed"
}
}
}
}
},
"401": {
"description": "API key is missing or invalid",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "API key is missing or invalid",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable error code.",
"example": "VALIDATION_ERROR"
},
"message": {
"type": "string",
"description": "Human-readable error summary.",
"example": "Request validation failed"
},
"details": {
"description": "Optional structured details, usually validation issues."
},
"requestId": {
"type": "string",
"description": "Fastify request id for log correlation when available."
}
}
}
}
},
"example": {
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "API key is missing or invalid"
}
}
}
}
},
"403": {
"description": "API key lacks the required scope or resource access",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "API key lacks the required scope or resource access",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable error code.",
"example": "VALIDATION_ERROR"
},
"message": {
"type": "string",
"description": "Human-readable error summary.",
"example": "Request validation failed"
},
"details": {
"description": "Optional structured details, usually validation issues."
},
"requestId": {
"type": "string",
"description": "Fastify request id for log correlation when available."
}
}
}
}
},
"example": {
"error": {
"code": "AUTHORIZATION_ERROR",
"message": "API key lacks the required scope or resource access"
}
}
}
}
},
"404": {
"description": "Endpoint not found for this team",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Endpoint not found for this team",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable error code.",
"example": "VALIDATION_ERROR"
},
"message": {
"type": "string",
"description": "Human-readable error summary.",
"example": "Request validation failed"
},
"details": {
"description": "Optional structured details, usually validation issues."
},
"requestId": {
"type": "string",
"description": "Fastify request id for log correlation when available."
}
}
}
}
},
"example": {
"error": {
"code": "ENDPOINT_NOT_FOUND",
"message": "Endpoint not found for this team"
}
}
}
}
},
"429": {
"description": "Too many requests",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Too many requests",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable error code.",
"example": "VALIDATION_ERROR"
},
"message": {
"type": "string",
"description": "Human-readable error summary.",
"example": "Request validation failed"
},
"details": {
"description": "Optional structured details, usually validation issues."
},
"requestId": {
"type": "string",
"description": "Fastify request id for log correlation when available."
}
}
}
}
},
"example": {
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests"
}
}
}
}
},
"500": {
"description": "Unexpected server error",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Unexpected server error",
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable error code.",
"example": "VALIDATION_ERROR"
},
"message": {
"type": "string",
"description": "Human-readable error summary.",
"example": "Request validation failed"
},
"details": {
"description": "Optional structured details, usually validation issues."
},
"requestId": {
"type": "string",
"description": "Fastify request id for log correlation when available."
}
}
}
}
},
"example": {
"error": {
"code": "INTERNAL_ERROR",
"message": "Unexpected server error"
}
}
}
}
}
}
}