MonoDuty MonoDuty

Monoduty Documentation

Welcome to Monoduty! This documentation will help you get started with our alerting platform and make the most of its features.

Quick Start

Get your first alert working in under 5 minutes. Follow these simple steps:

Create an Account

Sign up at monoduty.com/signup. No credit card required for the free tier.

Create Your First Webhook

Go to the Dashboard and click "Create Webhook". Give it a name like "My First Webhook" and select your notification channels (SMS, Email, Voice).

Copy Your Webhook URL

After creating the webhook, you'll get a unique URL like:

POST https://api.monoduty.com/webhook/YOUR_WEBHOOK_ID

Send Your First Alert

Test it with a simple curl command:

bash
curl -X POST https://api.monoduty.com/webhook/YOUR_WEBHOOK_ID \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Test Alert",
    "message": "This is my first Monoduty alert!",
    "severity": "info"
  }'
That's it! You should receive an alert via your configured channels within seconds.

Core Concepts

Webhooks

A webhook is a unique URL endpoint that accepts HTTP POST requests. When a request is received, Monoduty processes the payload and sends alerts to your configured notification channels.

Notification Channels

Monoduty supports multiple notification channels:

  • SMS - Text messages with global delivery
  • Email - Rich HTML emails with full context
  • Voice Calls - Automated phone calls for critical alerts
  • Push Notifications - Mobile app notifications (iOS & Android)

Severity Levels

Level Description Default Channels
critical System down, immediate action required SMS, Voice Call, Email
warning Potential issue, should investigate SMS, Email
info Informational, no action needed Email only

Webhooks Overview

Monoduty's universal webhook system is designed to work with any tool or service that can make HTTP requests. This means you can integrate with Grafana, Prometheus, custom scripts, CI/CD pipelines, and literally anything else.

Universal Compatibility If your tool can send an HTTP POST request, it can send alerts through Monoduty.

Creating Webhooks

You can create webhooks through the Dashboard UI or via the API.

Via Dashboard

  1. Navigate to Dashboard → Webhooks
  2. Click "Create Webhook"
  3. Enter a name and description
  4. Select notification channels
  5. Configure optional settings (payload template, filters)
  6. Click "Create"

Via API

bash
curl -X POST https://api.monoduty.com/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Alerts",
    "channels": ["sms", "email"],
    "description": "Alerts from production servers"
  }'

Webhook Payload Format

Monoduty accepts JSON payloads with the following fields:

Field Type Required Description
title string Yes Alert title/subject
message string No Detailed alert message
severity string No critical, warning, or info (default: info)
source string No Source system (e.g., "grafana", "prometheus")
tags object No Key-value metadata
url string No Link to related dashboard/page

Example Payload

json
{
  "title": "High CPU Usage on web-server-01",
  "message": "CPU usage exceeded 90% for 5 minutes",
  "severity": "warning",
  "source": "prometheus",
  "tags": {
    "host": "web-server-01",
    "environment": "production"
  },
  "url": "https://grafana.example.com/d/abc123"
}
Flexible Parsing Monoduty also accepts payloads from common tools (Grafana, Prometheus, etc.) in their native format. We automatically parse and extract the relevant information.

Webhook Security

Secure your webhooks with these best practices:

Webhook Secrets

Each webhook can have a secret key for signature verification:

bash
# Include HMAC signature in header
curl -X POST https://api.monoduty.com/webhook/YOUR_WEBHOOK_ID \
  -H "Content-Type: application/json" \
  -H "X-Monoduty-Signature: sha256=COMPUTED_SIGNATURE" \
  -d '{"title": "Alert"}'

IP Allowlisting

Restrict webhook access to specific IP addresses in your webhook settings.

Grafana Integration

Connect Grafana alerting to Monoduty in under 2 minutes.

Get Your Webhook URL

Create a webhook in Monoduty Dashboard and copy the URL.

Open Grafana Alerting

In Grafana, go to Alerting → Contact Points.

Add New Contact Point

Click "Add contact point" and select "Webhook" as the type.

Configure Webhook

Paste your Monoduty webhook URL and save.

Grafana Contact Point Settings
Name: Monoduty Alerts
Type: Webhook
URL: https://api.monoduty.com/webhook/YOUR_WEBHOOK_ID
HTTP Method: POST
Auto-Parsing Monoduty automatically parses Grafana's native alert format. No additional configuration needed!

Prometheus / Alertmanager

Route Prometheus Alertmanager notifications to Monoduty.

Alertmanager Configuration

Add Monoduty as a webhook receiver in your alertmanager.yml:

yaml
receivers:
  - name: 'monoduty'
    webhook_configs:
      - url: 'https://api.monoduty.com/webhook/YOUR_WEBHOOK_ID'
        send_resolved: true

route:
  receiver: 'monoduty'
  group_by: ['alertname', 'severity']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
Resolved Alerts Set send_resolved: true to receive notifications when alerts are resolved.

Slack Integration

Get real-time alerts in your Slack channels with interactive buttons.

Install Monoduty App

Go to Settings → Integrations → Slack and click "Add to Slack".

Authorize Access

Select the workspace and channels where you want to receive alerts.

Configure Channel Mapping

Map your webhooks to specific Slack channels.

Slack Alert Features

  • Rich message formatting with alert details
  • Acknowledge button to claim incidents
  • Resolve button to close alerts
  • Escalate to notify additional team members
  • Thread support for incident updates

Discord Integration

Bring incident response into your Discord server.

Create Discord Webhook

In Discord, go to Server Settings → Integrations → Webhooks → New Webhook.

Copy Webhook URL

Copy the Discord webhook URL.

Add to Monoduty

In Monoduty, go to Settings → Integrations → Discord and paste the URL.

Telegram Integration

Receive alerts directly in Telegram chats and groups.

Start Bot Conversation

Message @MonodutyBot on Telegram.

Link Your Account

Use the /connect command and follow the instructions to link your Monoduty account.

Configure Notifications

Use /settings to configure which alerts you want to receive.

AWS CloudWatch

Connect AWS CloudWatch alarms to Monoduty via SNS.

Create SNS Topic

In AWS Console, create a new SNS topic for Monoduty alerts.

Add HTTPS Subscription

Add an HTTPS subscription with your Monoduty webhook URL.

Confirm Subscription

Monoduty will automatically confirm the SNS subscription.

Configure CloudWatch Alarm

Set your CloudWatch alarm to publish to the SNS topic.

AWS CLI
# Create SNS topic
aws sns create-topic --name monoduty-alerts

# Subscribe Monoduty webhook
aws sns subscribe \
  --topic-arn arn:aws:sns:us-east-1:123456789:monoduty-alerts \
  --protocol https \
  --notification-endpoint https://api.monoduty.com/webhook/YOUR_WEBHOOK_ID

Datadog Integration

Forward Datadog monitors and alerts to Monoduty.

Go to Datadog Integrations

In Datadog, navigate to Integrations → Webhooks.

Add New Webhook

Click "New Webhook" and configure:

Datadog Webhook Config
Name: Monoduty
URL: https://api.monoduty.com/webhook/YOUR_WEBHOOK_ID

Payload:
{
  "title": "$EVENT_TITLE",
  "message": "$EVENT_MSG",
  "severity": "$ALERT_TYPE",
  "source": "datadog",
  "tags": {
    "host": "$HOSTNAME",
    "alert_id": "$ALERT_ID"
  },
  "url": "$LINK"
}

API Reference

The Monoduty REST API allows you to programmatically manage webhooks, send alerts, and access your data.

Base URL

https://api.monoduty.com/v1

Response Format

All responses are returned in JSON format:

json
{
  "success": true,
  "data": { ... },
  "message": "Operation successful"
}

Authentication

All API requests require authentication via API key:

bash
curl https://api.monoduty.com/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY"
Keep Your API Key Secret Never expose your API key in client-side code or public repositories.

Generate API keys in Settings → API Keys.

Webhooks API

List Webhooks

GET /v1/webhooks

Create Webhook

POST /v1/webhooks
bash
curl -X POST https://api.monoduty.com/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Alerts",
    "channels": ["sms", "email"],
    "description": "Critical production alerts"
  }'

Get Webhook

GET /v1/webhooks/:id

Update Webhook

PUT /v1/webhooks/:id

Delete Webhook

DELETE /v1/webhooks/:id

Alerts API

Send Alert (via Webhook)

POST /webhook/:webhook_id

List Alerts

GET /v1/alerts

Query parameters:

Parameter Type Description
status string Filter by status (active, acknowledged, resolved)
severity string Filter by severity level
limit integer Number of results (default: 50, max: 100)
offset integer Pagination offset

Get Alert Details

GET /v1/alerts/:id

Acknowledge Alert

POST /v1/alerts/:id/acknowledge

Resolve Alert

POST /v1/alerts/:id/resolve

Users API

Get Current User

GET /v1/users/me

Update User Settings

PUT /v1/users/me

List Team Members

GET /v1/users

Need Help?

Can't find what you're looking for? We're here to help!