Skip to main content

Documentation Index

Fetch the complete documentation index at: https://noradocs.solomontsao.com/llms.txt

Use this file to discover all available pages before exploring further.

Channels define how an agent sends and receives messages with the outside world — email, Slack, webhooks, and other transport types. Each channel belongs to a specific agent and carries a type, a name, and a config object whose structure depends on the channel type. You can create multiple channels per agent, test them to verify connectivity, and retrieve their message history.
All channel endpoints require that you own the agent. Requests for agents belonging to other users return 403 Forbidden.

List channels

Return all channels configured for an agent.
GET /agents/:id/channels

Path parameters

id
string
required
Agent UUID.

Response

id
string
Channel UUID.
agent_id
string
Parent agent UUID.
type
string
Channel type, e.g. slack, webhook, email.
name
string
Human-readable channel name.
config
object
Channel-specific configuration object.
enabled
boolean
Whether the channel is active.
created_at
string
ISO 8601 creation timestamp.
curl http://localhost:8080/api/agents/a1b2c3d4-e5f6-7890-abcd-ef1234567890/channels \
  -H "Authorization: Bearer $TOKEN"
[
  {
    "id": "e6f7a8b9-c0d1-2345-efab-234567890123",
    "agent_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "type": "slack",
    "name": "Alerts",
    "config": { "webhook_url": "https://hooks.slack.com/services/..." },
    "enabled": true,
    "created_at": "2025-03-01T08:00:00.000Z"
  }
]

Create a channel

Add a new communication channel to an agent.
POST /agents/:id/channels

Path parameters

id
string
required
Agent UUID.

Request body

type
string
required
Channel type. Examples: slack, webhook, email, discord.
name
string
required
Human-readable name for this channel, maximum 100 characters.
config
object
Channel-specific configuration. The required fields depend on the type. For example, a webhook channel needs a url; a slack channel needs a webhook_url.

Response

Returns the created channel record.
id
string
New channel UUID.
agent_id
string
Parent agent UUID.
type
string
Channel type.
name
string
Channel name.
config
object
Channel configuration.
enabled
boolean
true by default.
created_at
string
ISO 8601 creation timestamp.
curl -X POST \
  http://localhost:8080/api/agents/a1b2c3d4-e5f6-7890-abcd-ef1234567890/channels \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"slack","name":"Alerts","config":{"webhook_url":"https://hooks.slack.com/services/..."}}'
{
  "id": "e6f7a8b9-c0d1-2345-efab-234567890123",
  "agent_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "slack",
  "name": "Alerts",
  "config": { "webhook_url": "https://hooks.slack.com/services/..." },
  "enabled": true,
  "created_at": "2025-03-10T09:00:00.000Z"
}
StatusCondition
400Missing type or name

Update a channel

Modify the name, config, or enabled state of an existing channel.
PATCH /agents/:id/channels/:cid

Path parameters

id
string
required
Agent UUID.
cid
string
required
Channel UUID.

Request body

name
string
Updated channel name.
config
object
Updated configuration object. Merged with existing config.
enabled
boolean
Enable or disable the channel.

Response

Returns the updated channel record.
curl -X PATCH \
  http://localhost:8080/api/agents/a1b2c3d4-e5f6-7890-abcd-ef1234567890/channels/e6f7a8b9-c0d1-2345-efab-234567890123 \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'

Delete a channel

Permanently remove a channel from an agent.
DELETE /agents/:id/channels/:cid

Path parameters

id
string
required
Agent UUID.
cid
string
required
Channel UUID.

Response

success
boolean
true when the channel was deleted.
curl -X DELETE \
  http://localhost:8080/api/agents/a1b2c3d4-e5f6-7890-abcd-ef1234567890/channels/e6f7a8b9-c0d1-2345-efab-234567890123 \
  -H "Authorization: Bearer $TOKEN"
{ "success": true }

Test a channel

Send a test message through a channel to verify the configuration is correct. No data is persisted.
POST /agents/:id/channels/:cid/test

Path parameters

id
string
required
Agent UUID.
cid
string
required
Channel UUID.

Response

success
boolean
true when the test message was delivered.
message
string
Human-readable result.
curl -X POST \
  http://localhost:8080/api/agents/a1b2c3d4-e5f6-7890-abcd-ef1234567890/channels/e6f7a8b9-c0d1-2345-efab-234567890123/test \
  -H "Authorization: Bearer $TOKEN"
{
  "success": true,
  "message": "Test message delivered"
}

Get messages

Retrieve the message history for a channel. Messages are ordered newest first.
GET /agents/:id/channels/:cid/messages

Path parameters

id
string
required
Agent UUID.
cid
string
required
Channel UUID.

Query parameters

limit
number
default:"50"
Maximum number of messages to return.

Response

id
string
Message UUID.
channel_id
string
Parent channel UUID.
direction
string
inbound or outbound.
content
string
Message text content.
metadata
object
Additional message metadata (headers, event type, etc.).
created_at
string
ISO 8601 timestamp.
curl "http://localhost:8080/api/agents/a1b2c3d4-e5f6-7890-abcd-ef1234567890/channels/e6f7a8b9-c0d1-2345-efab-234567890123/messages?limit=20" \
  -H "Authorization: Bearer $TOKEN"
[
  {
    "id": "f7a8b9c0-d1e2-3456-fabc-345678901234",
    "channel_id": "e6f7a8b9-c0d1-2345-efab-234567890123",
    "direction": "outbound",
    "content": "Agent started successfully.",
    "metadata": {},
    "created_at": "2025-03-10T09:05:00.000Z"
  }
]