PagerDuty
The leading incident management and on-call scheduling platform. PagerDuty routes alerts from your monitoring tools to the right on-call engineer, manages escalation policies, and tracks incident response.
Why PagerDuty?
You have a production system that needs 24/7 on-call coverage
You need automated alert routing and escalation policies
You want post-incident reports and reliability analytics
Signal Breakdown
What drives the Trust Score
Download Trend
Last 12 months
Tradeoffs & Caveats
Know before you commitYou're a solo developer — BetterStack or a simple email alert suffices
Budget is tight — PagerDuty is expensive (try Opsgenie or Grafana OnCall)
Pricing
Free tier & paid plans
Free for 1 user (Developer plan)
$21/user/mo Starter
Incident response gets expensive at scale
Often Used Together
Complementary tools that pair well with PagerDuty
Learning Resources
Docs, videos, tutorials, and courses
Get Started
Repository and installation options
View on GitHub
github.com/PagerDuty/pdpyras
npm install @pagerduty/pdjspip install pdpyrasQuick Start
Copy and adapt to get going fast
import { api } from '@pagerduty/pdjs';
const pd = api({ token: process.env.PAGERDUTY_API_KEY });
// Trigger an incident
await pd.post('/incidents', {
data: {
incident: {
type: 'incident',
title: 'High error rate detected',
service: { id: 'SERVICE_ID', type: 'service_reference' },
urgency: 'high',
},
},
});Code Examples
Common usage patterns
Resolve an incident
Programmatically resolve an open incident
import { api } from '@pagerduty/pdjs';
const pd = api({ token: process.env.PAGERDUTY_API_KEY });
await pd.put(`/incidents/${incidentId}`, {
data: {
incident: {
type: 'incident',
status: 'resolved',
},
},
headers: { From: 'oncall@yourcompany.com' },
});List on-call users
Fetch who is currently on call for a schedule
import { api } from '@pagerduty/pdjs';
const pd = api({ token: process.env.PAGERDUTY_API_KEY });
const { resource: oncalls } = await pd.get('/oncalls', {
data: { schedule_ids: ['SCHEDULE_ID'], limit: 5 },
});
oncalls.forEach(({ user }) => {
console.log(`On call: ${user.name} <${user.email}>`);
});Add a note to an incident
Post a note for responders during an active incident
await pd.post(`/incidents/${incidentId}/notes`, {
data: {
note: {
content: 'Rolled back deployment v2.3.1 — monitoring recovery.',
},
},
headers: { From: 'oncall@yourcompany.com' },
});Community Notes
Real experiences from developers who've used this tool