API Reference

The server exposes both MCP (SSE) and REST endpoints.


Health & Status

GET /health

Liveness probe. Always returns 200 if the server is running.

{

"status": "ok",

"uptime": 123.45,

"version": "0.1.0",

"environment": "development",

"demoMode": false

}

GET /health/ready

Readiness probe. Checks all provider connections. Returns 503 if any provider is down.

{

"status": "ready",

"checks": {

"database": "ok",

"telephony": "ok",

"email": "ok",

"tts": "ok"

}

}

GET /metrics

Prometheus-compatible metrics in text format. See Monitoring for details.


MCP Transport

GET /sse

Server-Sent Events endpoint for MCP client connections.

GET /sse?token=<agent-security-token>
ParameterDescription
tokenRequired. Agent or org token for authentication
agentIdAgent ID to register for voice routing and message delivery

POST /messages

MCP message endpoint. Receives tool calls from connected agents.

Include Authorization: Bearer header if a security token is configured.


Webhooks

All webhooks are POST endpoints that receive provider callbacks. Signatures are validated on every request.

EndpointDescription
POST /webhooks/:agentId/smsInbound SMS (validates X-Twilio-Signature)
POST /webhooks/:agentId/emailInbound email (validates Svix signature)
POST /webhooks/:agentId/whatsappInbound WhatsApp (validates X-Twilio-Signature)
POST /webhooks/:agentId/lineInbound LINE (validates X-Line-Signature)
POST /webhooks/:agentId/voiceInbound voice call — returns ConversationRelay TwiML
POST /webhooks/:agentId/outbound-voiceOutbound call webhook
POST /webhooks/:agentId/call-statusCall status updates
WSS /webhooks/:agentId/voice-wsLive AI voice WebSocket

Blocked channels silently return 200 with no processing.


REST API v1

All endpoints at /api/v1/. Require Authorization: Bearer .

EndpointMethodDescription
/api/v1/send-messagePOSTSend SMS, email, WhatsApp, or LINE
/api/v1/make-callPOSTStart an AI voice call
/api/v1/call-on-behalfPOSTSecretary call — bridge if available
/api/v1/send-voice-messagePOSTSend TTS voice message
/api/v1/transfer-callPOSTTransfer a live call
/api/v1/waiting-messagesGETFetch dead letters (auto-acknowledges)
/api/v1/channel-statusGETAgent channel status
/api/v1/usageGETUsage stats and limits
/api/v1/billingGETBilling summary
/api/v1/provisionPOSTProvision agent channels
/api/v1/deprovisionPOSTDeprovision agent
/api/v1/healthGETHealth check
/api/v1/openapi.jsonGETOpenAPI 3.1 spec
/api/v1/integration-guideGETIntegration guide (markdown)

Admin Endpoints

UI Routes

EndpointDescription
GET /admin/setupWeb-based setup wizard
GET /admin/dashboardAdmin dashboard (agents, costs, alerts)
GET /admin/api-docsSwagger UI with interactive API explorer

API Routes

Most routes require Authorization: Bearer . Public endpoints (/health, /openapi.json, /integration-guide) do not require auth.

EndpointDescription
GET /admin/api/statusProvider configuration status
GET /admin/api/dashboardDashboard data (agents, usage, alerts)
POST /admin/api/test/twilioTest Twilio credentials
POST /admin/api/test/elevenlabsTest ElevenLabs credentials
POST /admin/api/test/resendTest Resend credentials
POST /admin/api/saveSave credentials to .env
POST /admin/api/deployRestart server with new settings
GET /admin/api/agentsList all provisioned agents
POST /admin/api/agents/:agentId/blocked-channelsSet blocked channels
GET /admin/api/my-tokenGet current org token
POST /admin/api/regenerate-tokenRegenerate org token

Example

curl -X POST http://localhost:3100/admin/api/test/twilio \

-H "Content-Type: application/json" \

-H "Authorization: Bearer YOUR_ORCHESTRATOR_TOKEN" \

-d '{"accountSid":"AC...","authToken":"..."}'

← Home