Skip to content

API Endpoints

All API requests go to api.switchboard.fpdigital.ai and require authentication.

Include your token in the Authorization header:

Terminal window
Authorization: Bearer fps_unified_your_token_here

Access all connected services through a single endpoint.

URLPOST /mcp/unified
Tokenfps_unified_*

Access a single service.

URLPOST /mcp/{service}
Tokenfps_{service}_*
Servicesgoogle, slack, hubspot, notion, quickbooks, github, cloudflare, apollo, teamwork, pandadoc, n8n, figma

Access a custom bundle.

URLPOST /mcp/bundle/{bundle_id}
Tokenfps_bundle_*
Terminal window
curl -X POST https://api.switchboard.fpdigital.ai/mcp/unified \
-H "Authorization: Bearer fps_unified_xxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Terminal window
curl -X POST https://api.switchboard.fpdigital.ai/mcp/unified \
-H "Authorization: Bearer fps_unified_xxx" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "gmail_search",
"arguments": {
"query": "is:unread",
"max_results": 10
}
}
}'

These endpoints are used by the dashboard UI and protected by Cloudflare Access.

EndpointMethodDescription
/dashboardGETMain dashboard
/dashboard/services/:serviceGETService detail page
/dashboard/bundlesGETBundle management
/adminGETAdmin panel (org admins)
/admin/usersGETUser management
/admin/policiesGETPolicy rules
/admin/dlpGETDLP settings

Used during service connection flow.

EndpointDescription
/oauth/{service}/authorizeInitiate OAuth flow
/oauth/{service}/callbackOAuth callback handler
/oauth/{service}/connectAPI key connection (non-OAuth services)
Terminal window
curl https://api.switchboard.fpdigital.ai/health

Response:

{
"status": "healthy",
"version": "4.6.2",
"timestamp": "2024-01-15T10:30:00Z"
}

Check individual service health:

Terminal window
curl https://api.switchboard.fpdigital.ai/status/google

Response:

{
"service": "google",
"status": "operational",
"latency_ms": 45,
"last_check": "2024-01-15T10:29:00Z"
}

All endpoints are rate limited:

Endpoint TypeLimit
MCP endpoints100 req/min
Dashboard60 req/min
OAuth flows10 req/min

Rate limit information is returned in headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1705312800

The API supports CORS for browser-based requests:

  • Access-Control-Allow-Origin: * (for MCP endpoints)
  • Access-Control-Allow-Methods: POST, OPTIONS
  • Access-Control-Allow-Headers: Authorization, Content-Type

All errors follow this format:

{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32000,
"message": "Human-readable error message",
"data": {
"errorCode": "MACHINE_READABLE_CODE",
"details": "Additional context"
}
}
}

See MCP Protocol for the complete error code reference.