Manage contracts/addresses monitored by Sentinel. See schemas/watchlist.md for the object definition.
List all watchlist entries.
| Param | Type | Description |
|---|---|---|
page |
integer | Page number (default 1) |
limit |
integer | Items per page (default 20) |
network |
string | Filter by network |
enabled |
boolean | Filter by enabled status |
{
"data": [
{
"id": "8f14e45f-ceea-4b5e-9c3e-1a2b3c4d5e6f",
"name": "Treasury Vault",
"network": "ethereum",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"tags": ["treasury", "high-value"],
"enabled": true,
"createdAt": "2026-06-01T08:00:00Z",
"updatedAt": "2026-06-10T12:30:00Z"
}
],
"meta": { "total": 1, "page": 1, "limit": 20 }
}Add a new address to the watchlist.
{
"name": "Treasury Vault",
"network": "ethereum",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"tags": ["treasury", "high-value"]
}Returns the created watchlist object (see schemas/watchlist.md).
| Status | Cause |
|---|---|
| 400 | Invalid address format or missing fields |
| 409 | Address already exists on this network |
Retrieve a single watchlist entry.
Returns a watchlist object.
| Status | Cause |
|---|---|
| 404 | Watchlist entry not found |
Update a watchlist entry.
{
"name": "Primary Treasury Vault",
"enabled": false
}Returns the updated watchlist object.
Remove an entry from the watchlist. Associated rules are also disabled.
Manage threat detection rules. See schemas/rule.md for the object definition.
List all detection rules.
| Param | Type | Description |
|---|---|---|
page |
integer | Page number (default 1) |
limit |
integer | Items per page (default 20) |
watchlistId |
string | Filter by watchlist entry |
severity |
string | Filter by severity |
{
"data": [
{
"id": "3a7c1e2d-4f5b-4a8c-9d0e-1f2a3b4c5d6e",
"name": "Ownership Transfer Detection",
"watchlistId": "8f14e45f-ceea-4b5e-9c3e-1a2b3c4d5e6f",
"signature": "renounceOwnership",
"severity": "critical",
"channels": ["discord", "telegram"],
"enabled": true,
"createdAt": "2026-06-01T08:00:00Z",
"updatedAt": "2026-06-10T12:30:00Z"
}
],
"meta": { "total": 1, "page": 1, "limit": 20 }
}Create a new detection rule.
{
"name": "Ownership Transfer Detection",
"watchlistId": "8f14e45f-ceea-4b5e-9c3e-1a2b3c4d5e6f",
"signature": "renounceOwnership",
"severity": "critical",
"channels": ["discord", "telegram"]
}Returns the created rule object (see schemas/rule.md).
| Status | Cause |
|---|---|
| 400 | Invalid signature or missing fields |
| 404 | watchlistId does not exist |
Retrieve a single rule.
Returns a rule object.
Update a rule.
{
"severity": "high",
"enabled": false
}Returns the updated rule object.
Remove a rule.
Read alert history and detail. Alerts are created automatically by the bot when a rule matches a pending transaction. See schemas/alert.md for the object definition.
List alerts.
| Param | Type | Description |
|---|---|---|
page |
integer | Page number (default 1) |
limit |
integer | Items per page (default 20) |
watchlistId |
string | Filter by watchlist entry |
ruleId |
string | Filter by rule |
severity |
string | Filter by severity |
status |
string | Filter by status (pending, confirmed, dropped, acknowledged) |
from |
string | ISO date — only alerts detected after this time |
to |
string | ISO date — only alerts detected before this time |
{
"data": [
{
"id": "c9d8e7f6-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"ruleId": "3a7c1e2d-4f5b-4a8c-9d0e-1f2a3b4c5d6e",
"watchlistId": "8f14e45f-ceea-4b5e-9c3e-1a2b3c4d5e6f",
"network": "ethereum",
"severity": "critical",
"title": "Critical Alert: Ownership Transfer Detected",
"description": "Contract 0x1234...abcd is attempting to transfer ownership to 0x5678...efgh.",
"txHash": "0xabc123...",
"status": "pending",
"detectedAt": "2026-06-14T10:00:00Z",
"dispatchedChannels": ["discord"]
}
],
"meta": { "total": 1, "page": 1, "limit": 20 }
}Retrieve a single alert.
Returns an alert object.
| Status | Cause |
|---|---|
| 404 | Alert not found |
Mark an alert as acknowledged (reviewed by a team member).
Returns the updated alert object with status: "acknowledged".
Configure and manage notification channels used to dispatch alerts (Discord, Telegram, Webhooks, PagerDuty).
List configured notification channels.
{
"data": [
{
"id": "1b2c3d4e-5f6a-7b8c-9d0e-1f2a3b4c5d6e",
"type": "discord",
"name": "Security Team Discord",
"config": {
"webhookUrl": "https://discord.com/api/webhooks/***"
},
"enabled": true,
"createdAt": "2026-06-01T08:00:00Z"
}
]
}Note: Sensitive fields (e.g. webhook URLs, bot tokens) are masked in list/read responses.
Add a new notification channel.
{
"type": "discord",
"name": "Security Team Discord",
"config": {
"webhookUrl": "https://discord.com/api/webhooks/xxxx/yyyy"
}
}| Type | Required config fields |
|---|---|
discord |
webhookUrl |
telegram |
botToken, chatId |
webhook |
url, optional headers |
pagerduty |
integrationKey |
Returns the created channel object (with sensitive fields masked).
Update a channel's configuration or enabled status.
{
"enabled": false
}Remove a notification channel. Rules referencing this channel will no longer dispatch to it.
Send a test notification to verify channel configuration.
{
"success": true,
"message": "Test notification sent"
}Read-only access to the system audit trail (rule changes, watchlist changes, acknowledgements, auth events).
List audit log entries.
| Param | Type | Description |
|---|---|---|
page |
integer | Page number (default 1) |
limit |
integer | Items per page (default 20) |
actorId |
string | Filter by user who performed the action |
action |
string | Filter by action type (e.g. rule.created, watchlist.updated, alert.acknowledged) |
from |
string | ISO date — entries after this time |
to |
string | ISO date — entries before this time |
{
"data": [
{
"id": "e1f2a3b4-c5d6-7e8f-9a0b-1c2d3e4f5a6b",
"actorId": "0d1e2f3a-4b5c-6d7e-8f9a-0b1c2d3e4f5a",
"action": "rule.created",
"resourceType": "rule",
"resourceId": "3a7c1e2d-4f5b-4a8c-9d0e-1f2a3b4c5d6e",
"metadata": {
"name": "Ownership Transfer Detection"
},
"createdAt": "2026-06-01T08:00:00Z"
}
],
"meta": { "total": 1, "page": 1, "limit": 20 }
}| Field | Type | Description |
|---|---|---|
id |
string (UUID) | Unique identifier |
actorId |
string (UUID) | User who performed the action |
action |
string | Dot-notation action name, e.g. resource.verb |
resourceType |
string | Type of resource affected (watchlist, rule, alert, notification-channel) |
resourceId |
string (UUID) | ID of the affected resource |
metadata |
object | Action-specific additional context |
createdAt |
string | Timestamp of the action |