Platform
ScaiWave ScaiGrid ScaiCore ScaiBot ScaiDrive ScaiKey Models Tools & Services
Solutions
Organisations Developers Internet Service Providers Managed Service Providers AI-in-a-Box
Resources
Support Documentation Blog Downloads
Company
About Research Careers Investment Opportunities Contact
Log in

Bridges API

13 endpoints (9 room bridges + 4 workspace bridges).

Room bridges (admin)#

Method Path Purpose
GET /v1/admin/bridges List bridges in this tenant.
POST /v1/admin/bridges Create.
GET /v1/admin/bridges/{bridge_id} Detail.
DELETE /v1/admin/bridges/{bridge_id} Remove.
POST /v1/admin/bridges/{bridge_id}/pause Pause without removing.
POST /v1/admin/bridges/{bridge_id}/resume Resume.
POST /v1/admin/bridges/{bridge_id}/rotate-secret Rotate the HMAC secret. Old still valid 5 min.

POST /v1/admin/bridges body#

jsonc
{
  "transport": "slack",          // or discord / teams / scaiwave / custom
  "direction": "both",            // in / out / both
  "room_id": "<scaiwave-room-id>",
  "name": "Engineering Slack",
  "slack_team_id": "T0123",
  "slack_channel_id": "C0123",
  "slack_signing_secret": "...",
  "slack_bot_token": "xoxb-..."
}

For transport: "custom", supply an outbound_webhook URL. The response includes a generated shared_secret.

Inbound webhooks#

Called by the foreign system, not by your own clients.

Method Path Purpose
POST /v1/bridges/{bridge_id}/inbound Generic inbound (HMAC-signed).
POST /v1/bridges/{bridge_id}/slack/events Slack-specific Events API webhook.

Generic inbound shape#

Body:

jsonc
{
  "event_id": "<foreign-side-unique>",
  "sender": {
    "external_id": "U12345",
    "display_name": "Alice Anderson",
    "avatar_url": "https://..."
  },
  "content": {
    "msgtype": "swp.text",
    "body": "Hello from the other side"
  },
  "reply_to_external_id": null
}

Signature header:

http
1
X-ScaiWave-Bridge-Signature: t=<unix-ts>,v1=<hex-hmac-sha256>

Where the HMAC is HMAC-SHA256(shared_secret, f"{ts}.{body}").

See Build an integration bridge.

Workspace bridges (admin)#

Different concept: connects a workspace to an external data source (Notion DB, SharePoint, etc.) so the AI can read/write it via the scaiwave.workspace_bridge plugin.

Method Path Purpose
GET /v1/workspaces/{ws}/bridges List.
POST /v1/workspaces/{ws}/bridges Create.
PATCH /v1/workspaces/{ws}/bridges/{id} Update.
DELETE /v1/workspaces/{ws}/bridges/{id} Delete.

(These don't relay chat — that's room bridges. They're more like "plug an external system into the workspace's tool surface".)

Updated 2026-05-18 12:07:13 View source (.md) rev 4