Documentation Index
Fetch the complete documentation index at: https://docs.shannon.run/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Channels API lets you integrate Shannon with external messaging platforms. Create channels to connect Slack workspaces or LINE accounts, and Shannon will automatically process incoming messages through its agent system.Features
- Slack integration with event subscription and bot messaging
- LINE integration with webhook-based messaging
- HMAC signature verification for secure inbound webhooks
- Agent routing via
agent_nameconfig to direct messages to specific agents - Per-user isolation with unique constraint on type + name per user
- Credential security — credentials are never exposed in API responses
Create Channel
Create a new messaging channel.Request Body
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Channel type: "slack" or "line" |
name | string | Yes | Channel display name |
credentials | object | Yes | Platform-specific credentials (see below) |
config | object | No | Optional configuration (e.g., agent_name) |
Response
The
credentials field is never returned in API responses for security. Store your credentials securely on your side.List Channels
List all channels for the authenticated user.Response
Get Channel
Get details of a specific channel.Response
Update Channel
Update an existing channel. All fields are optional — only provided fields will be updated.Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | No | New channel name |
credentials | object | No | New platform credentials |
config | object | No | New configuration |
enabled | boolean | No | Enable or disable the channel |
Response
Returns the updated channel object (same schema as Get Channel).Delete Channel
Delete a channel permanently.Response
Response
Inbound Webhook
Receive messages from external platforms. This endpoint is called by Slack or LINE when a user sends a message.Response
Credential Formats
Slack Credentials
| Field | Description |
|---|---|
signing_secret | Found in your Slack app’s Basic Information page |
bot_token | Bot user OAuth token (starts with xoxb-) |
app_id | Your Slack app ID |
LINE Credentials
| Field | Description |
|---|---|
channel_secret | Found in your LINE Developer Console channel settings |
channel_access_token | Long-lived channel access token from LINE Developer Console |
Webhook Behavior
Slack
- Signature verification: Validates
X-Slack-Request-TimestampandX-Slack-Signatureheaders using HMAC-SHA256 with the channel’ssigning_secret - Clock skew: Requests older than 5 minutes are rejected
- URL verification: Automatically responds to Slack’s
url_verificationchallenge during app setup - Bot filtering: Messages from bots are ignored to prevent loops
- Supported events:
messageandapp_mention
LINE
- Signature verification: Validates
X-Line-Signatureheader using HMAC-SHA256 (base64-encoded) with the channel’schannel_secret - Reply behavior: Sends a “Thinking…” reply immediately using the reply token
- Message handling: Processes the first text message from the event payload
Agent Routing
Set theagent_name field in the channel’s config to route incoming messages to a specific agent:
agent_name is not set, messages are handled by Shannon’s default agent routing.
Channel Response Object
| Field | Type | Description |
|---|---|---|
id | string (UUID) | Unique channel identifier |
user_id | string (UUID) | Owner user ID (optional) |
type | string | Channel type: "slack" or "line" |
name | string | Channel display name |
config | object | Channel configuration |
enabled | boolean | Whether the channel is active |
created_at | string (ISO 8601) | Creation timestamp |
updated_at | string (ISO 8601) | Last update timestamp |
Error Responses
| Status | Error | Description |
|---|---|---|
| 400 | Invalid request | Missing required fields or invalid channel type |
| 401 | Unauthorized | Missing or invalid authentication |
| 403 | Forbidden | Cannot access another user’s channel |
| 404 | Channel not found | Invalid channel ID |
| 409 | Conflict | Duplicate channel (same user + type + name) |
| 500 | Internal server error | Server-side failure |
Next Steps
Submit Tasks
Submit tasks directly via API
Agents
Configure agents for channel routing