Complete guide to monitoring your streams and using the API
Dead Air Monitor provides real-time monitoring for your audio streams with instant alerts when dead air is detected.
Quick Checks: Fast HTTP connection tests (2-3 seconds)
Deep Checks: Full audio analysis to detect silence and dead air (20 seconds)
| Plan | Connectivity Checks | Silence Detection Checks |
|---|---|---|
| Free | Every 30 minutes | Every 60 minutes |
| Basic | Every 10 minutes | Every 20 minutes |
| Professional | Every 2 minutes | Every 4 minutes |
| Enterprise | Every 1 minute | Every 2 minutes |
| Custom | Every 1 minute | Every 2 minutes |
⚡ Smart Detection: If a connectivity check fails, an immediate silence detection check is performed for instant verification!
To prevent false alarms, when a stream is detected as down:
Dead Air Monitor adapts its silence detection based on your stream type to minimize false alarms. Choose the type that best matches your content:
| Stream Type | Best For | Why This Matters |
|---|---|---|
| 🎵 Music Station | Music-only streams, radio stations playing songs | Music has consistent audio levels. Short pauses between songs are normal, but 5+ seconds of silence indicates dead air. |
| 🗣️ Talk Radio / Talk Show | Talk shows, podcasts, news, sports commentary | Talk shows have natural pauses between speakers, questions, and responses. Higher threshold prevents false alarms from normal conversation gaps. |
| 🎤 Hybrid (Music + Talk) | Stations mixing music with DJ commentary, interviews, or ads | Combines the best of both: sensitive enough to catch dead air during music, but tolerant of natural pauses during talk segments. |
Set your local timezone in Dashboard → Settings. This affects:
The timezone setting does not apply to webhooks or the API. Webhook payloads and API responses use UTC (ISO 8601) for timestamps. Convert them to your local time in your own integration if needed.
Configure: Dashboard → Settings → Time zone
Receive email alerts when your stream goes down or comes back up.
Configure: Dashboard → Settings → Email Notifications
Push notifications to your phone via Pushover app.
Requirements:
Click here for step-by-step setup of Pushover.
Configure: Dashboard → Settings → Pushover Notifications
POST JSON data to your custom webhook URL when stream status changes.
How to set up Zapier to send SMS notifications when your stream is down?
Payload Example:
{
"event": "stream_down",
"stream": {
"id": 123,
"name": "My Radio Stream",
"url": "http://stream.example.com:8000",
"status": "down",
"old_status": "up"
},
"timestamp": "2025-10-21T19:30:00Z"
}
Events:
stream_down - Stream just went offlinestream_still_down - Stream remains offline (second alert)stream_back_up - Stream came back onlineWhat you can automate with Dead Air Monitor's webhook
Programmatically access your stream monitoring data using our REST API.
API access is available on Enterprise plans only. Upgrade to get your API key.
Include your API key in the request header:
X-API-Key: your_api_key_here
Or as a query parameter:
?api_key=your_api_key_here
All user API endpoints use the stream hash to identify streams. The stream hash is a unique, non-guessable 64-character hex string (e.g. 54e5322a0e0fb6796aa23ba64d6832b1ffea902d20cd5cf4425dfef1eea2ea70). Use it in URLs and when requesting a single stream. You get each stream's stream_hash from the list endpoint, or from your monitored stream details in the dashboard.
GET/api/user/streams
Get all your streams. Returns stream_hash, name, url, and created_at for each stream.
Example Request:
curl -H "X-API-Key: your_api_key_here" \
https://deadairmonitor.com/api/user/streams
Response:
{
"success": true,
"streams": [
{
"stream_hash": "54e5322a0e0fb6796aa23ba64d6832b1ffea902d20cd5cf4425dfef1eea2ea70",
"name": "My Radio Stream",
"url": "http://stream.example.com:8000",
"created_at": "2025-10-21T14:45:47.000Z"
}
]
}
GET/api/user/streams/:stream_hash
Get detailed status for one stream. Use the stream_hash from the list response.
Example Request:
curl -H "X-API-Key: your_api_key_here" \
https://deadairmonitor.com/api/user/streams/54e5322a0e0fb6796aa23ba64d6832b1ffea902d20cd5cf4425dfef1eea2ea70
Response:
{
"success": true,
"stream": {
"stream_hash": "54e5322a0e0fb6796aa23ba64d6832b1ffea902d20cd5cf4425dfef1eea2ea70",
"name": "My Radio Stream",
"url": "http://stream.example.com:8000",
"status": "up",
"last_check": 1729530615,
"metadata": "Now Playing - Artist Name"
}
}
last_check is a Unix timestamp (seconds).
| Status | Description |
|---|---|
up |
Stream is online and broadcasting |
down |
Stream is offline or unreachable |
unknown |
Stream hasn't been checked yet |
API requests are limited to 100 requests per 15 minutes per IP address.
Display your stream status on your website with our embeddable widget.
Widget URL:
Use your stream's stream hash (found in Dashboard or from GET /api/user/streams):
https://deadairmonitor.com/widget/display/[YOUR_STREAM_HASH]
Embed Code Example:
<iframe src="https://deadairmonitor.com/widget/display/54e5322a0e0fb6796aa23ba64d6832b1ffea902d20cd5cf4425dfef1eea2ea70"
width="300"
height="150"
frameborder="0"
style="border-radius: 8px;">
</iframe>
Get stream status as JSON for custom widgets (use your stream hash):
https://deadairmonitor.com/widget/api/[YOUR_STREAM_HASH]
Response:
{
"name": "My Radio Stream",
"status": "up",
"last_check": "2025-10-21 19:30:15",
"metadata": "Current Song",
"uptime": "99.9%"
}
| Feature | Free | Basic | Professional | Enterprise | Custom |
|---|---|---|---|---|---|
| Price | FREE | $1.99/mo | $3.49/mo | $4.99/mo | Contact |
| Max Streams | 1 | 1 | 2 | 3 | Unlimited |
| Connectivity Checks | Every 30 min | Every 10 min | Every 2 min | Every 1 min | Every 1 min |
| Silence Detection Checks | Every 60 min | Every 20 min | Every 4 min | Every 2 min | Every 2 min |
| Email Alerts | âś“ | âś“ | âś“ | âś“ | âś“ |
| Pushover Alerts | - | âś“ | âś“ | âś“ | âś“ |
| Webhook Integration | - | - | âś“ | âś“ | âś“ |
| Metadata Tracking | - | âś“ | âś“ | âś“ | âś“ |
| API Access | - | - | - | âś“ | âś“ |
| History Retention | 1 days | 7 days | 28 days | 60 days | 365 days |
We have distributed worker nodes in multiple regions that check your stream using two methods:
Yes! Changes take effect immediately. Stream check intervals update automatically when you change plans.
You'll retain access to your paid features until the end of your current billing period. After that, you'll automatically downgrade to the Free tier.
Use Support tickets for technical help, billing questions, suggestions, or any other communication: go to Dashboard → Support and create a new ticket. You can also email us at [email protected]. See the Support tickets section for the full guide.
// List streams, then get status for one by stream_hash
const listRes = await fetch('https://deadairmonitor.com/api/user/streams', {
headers: { 'X-API-Key': 'your_api_key_here' }
});
const { streams } = (await listRes.json());
const streamHash = streams[0].stream_hash;
const response = await fetch(
`https://deadairmonitor.com/api/user/streams/${streamHash}`,
{ headers: { 'X-API-Key': 'your_api_key_here' } }
);
const data = await response.json();
console.log('Stream status:', data.stream.status);
import requests
headers = {'X-API-Key': 'your_api_key_here'}
# List streams to get stream_hash for each
streams = requests.get(
'https://deadairmonitor.com/api/user/streams',
headers=headers
).json()['streams']
stream_hash = streams[0]['stream_hash']
response = requests.get(
f'https://deadairmonitor.com/api/user/streams/{stream_hash}',
headers=headers
)
data = response.json()
print('Stream status:', data['stream']['status'])
$apiKey = 'your_api_key_here';
$streamHash = '54e5322a0e0fb6796aa23ba64d6832b1ffea902d20cd5cf4425dfef1eea2ea70';
$ch = curl_init("https://deadairmonitor.com/api/user/streams/$streamHash");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: $apiKey"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
echo 'Stream status: ' . $data['stream']['status'];
#!/bin/bash
API_KEY="your_api_key_here"
# Use the stream_hash from GET /api/user/streams (e.g. first stream)
STREAM_HASH="54e5322a0e0fb6796aa23ba64d6832b1ffea902d20cd5cf4425dfef1eea2ea70"
STATUS=$(curl -s -H "X-API-Key: $API_KEY" \
"https://deadairmonitor.com/api/user/streams/$STREAM_HASH" \
| jq -r '.stream.status')
if [ "$STATUS" == "up" ]; then
echo "âś“ Stream is UP"
else
echo "âś— Stream is DOWN"
fi
Follow these steps to create a Pushover account and get your User Key for receiving alerts on your phone or desktop.
One-time purchase of the Pushover app may be required on your platform. Check pushover.net for current pricing.
Use Zapier to connect Dead Air Monitor’s webhook to an SMS action so you get a text when your stream goes down (or comes back up).
event, stream, timestamp).stream.status equals down. That way you don’t get an SMS when the stream comes back up unless you want to. Skip this if you want SMS for both down and back-up.Stream {{stream.name}} is {{stream.status}}. {{stream.url}} (Zapier will map the fields from the test). Enter your phone number and complete the action setup.Zapier’s free plan includes a limited number of tasks per month. SMS actions may require a paid Zapier plan or a connected SMS provider (e.g. Twilio). Check zapier.com and your SMS app for pricing.
To protect your inbox and give you time to fix stream issues, we may temporarily pause email notifications for a stream when we detect multiple errors over a short period. This helps prevent your inbox from filling up with repeated alerts and gives you a chance to rectify the problem with your stream.
What is affected: Only the sending of stream down/up email alerts for that stream is paused. We do not stop monitoring your stream. Checks continue as usual, and your dashboard and history stay up to date. Any other notification methods you have set up (e.g. Pushover, webhook) continue to receive alerts as normal.
You will be notified: When we pause email notifications for a stream, we send you one email to let you know that email alerts for that stream have been paused, why (multiple errors detected), and that we are still monitoring the stream and your other notification channels are unchanged. Once the pause period ends, email notifications for that stream resume automatically.
If you have questions or need help resolving a stream issue, contact us at [email protected].
Use Support tickets for any communication with us: technical help, account or billing questions, feature suggestions, or general feedback. All conversations are kept in one place so we can help you quickly and you can refer back to them anytime.
Open the Support page: From the main navigation, click Support, or go to Dashboard → Support. You’ll see all your tickets (open and closed).
When we reply, you’ll see the message in the ticket. Open the ticket and use the reply box to add more information or ask follow-up questions. You’ll get email notifications when we respond so you don’t have to check the dashboard constantly. Once your issue is resolved or your question is answered, we may close the ticket; you can open a new one anytime for a new topic.
We're here to help!
Note: By using DeadAirMonitor.com, you agree to our Terms of Service and Privacy Policy. DeadAirMonitor.com is part of the HostingEnergy.com group.