Embed Status Widget

pullup.at

Raw API
Auto-refreshes every 30s
<iframe src="/api/widget?style=full&theme=dark" style="border:none;width:400px;height:auto;min-height:200px;overflow:hidden;" loading="lazy" title="pullup.at Status"></iframe>
<div id="pullup-status"></div>
<script>
(function() {
  var d = document.getElementById('pullup-status');
  var f = document.createElement('iframe');
  f.src = '/api/widget?style=full&theme=dark';
  f.style.cssText = 'border:none;width:400px;height:auto;min-height:200px;overflow:hidden;';
  f.loading = 'lazy';
  f.title = 'pullup.at Status';
  d.appendChild(f);
})();
</script>
fetch('/api/status')
  .then(res => res.json())
  .then(data => {
    console.log(data.overall_status)
    // "operational" | "degraded_performance" | "major_outage"
    console.log(data.status_message)
    // "All Systems Operational"
    console.log(data.uptime_percentage)
    // 99.95
  })

API Response Format

overall_status-"operational" | "degraded_performance" | "major_outage"
status_message-Human-readable status string
uptime_percentage-24-hour uptime as a float (e.g. 99.95)
monitors[]-Each monitor with name, status, response time
incidents[]-Active incidents with title, severity, status