Skip to content

Status Page Integrations

Pakyas status pages provide several integration endpoints to embed status information in your tools, dashboards, and documentation.

EndpointContent-TypeDescription
/status/{slug}/rss.xmlapplication/rss+xmlRSS 2.0 feed of incidents
/status/{slug}/status.jsonapplication/jsonStatuspage.io-compatible JSON API
/status/{slug}/badge.svgimage/svg+xmlDynamic SVG status badge

No authentication required. Access endpoints directly:

Terminal window
curl https://pakyas.com/status/acme/status.json

Private status pages require authentication via either:

Query Parameter:

Terminal window
curl "https://pakyas.com/status/acme/status.json?token=YOUR_ACCESS_TOKEN"

Authorization Header (recommended):

Terminal window
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
https://pakyas.com/status/acme/status.json

The Authorization header is preferred for:

  • Better security (tokens don’t appear in server logs)
  • Cleaner URLs in integrations
  • Standard OAuth 2.0 compatibility

The RSS feed provides an RSS 2.0-compatible feed of recent incidents (last 90 days, up to 50 items).

GET /status/{slug}/rss.xml
HeaderPublicPrivate
Content-Typeapplication/rss+xml; charset=utf-8Same
Cache-Controlpublic, max-age=120no-store, private
X-Content-Type-OptionsnosniffSame
VaryAuthorizationSame
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Acme Corp - Status Updates</title>
<description>Status updates and incidents for Acme Corp</description>
<link>https://pakyas.com/status/acme</link>
<atom:link href="https://pakyas.com/status/acme/rss.xml" rel="self" type="application/rss+xml"/>
<language>en-us</language>
<lastBuildDate>Mon, 06 Jan 2026 12:00:00 +0000</lastBuildDate>
<item>
<title>[Major] Database connectivity issues</title>
<link>https://pakyas.com/status/acme/incidents/abc123</link>
<guid isPermaLink="true">https://pakyas.com/status/acme/incidents/abc123</guid>
<pubDate>Mon, 06 Jan 2026 10:30:00 +0000</pubDate>
<description>Resolved</description>
</item>
</channel>
</rss>
  • Slack RSS integration - Post incidents to a Slack channel automatically
  • RSS readers - Personal monitoring via Feedly, Inoreader, etc.
  • IFTTT/Zapier - Trigger automations when incidents are posted
  • Status aggregators - Combine multiple status pages into one view
  1. In Slack, go to Apps > RSS
  2. Add the feed URL: https://pakyas.com/status/acme/rss.xml
  3. Choose a channel for notifications
  4. Incidents will be posted automatically

The JSON API provides a Statuspage.io-compatible response format, making it easy to integrate with existing tools that support the Statuspage.io API format.

GET /status/{slug}/status.json
HeaderPublicPrivate
Content-Typeapplication/jsonSame
Cache-Controlpublic, max-age=60no-store, private
X-Content-Type-OptionsnosniffSame
VaryAuthorizationSame
{
"page": {
"id": "acme",
"name": "Acme Corp",
"url": "https://pakyas.com/status/acme",
"updated_at": "2026-01-06T12:00:00Z"
},
"status": {
"indicator": "none",
"description": "Operational"
},
"components": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "API",
"status": "operational",
"description": "Core API services"
},
{
"id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"name": "Dashboard",
"status": "degraded_performance",
"description": "Web dashboard"
}
],
"incidents": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Elevated API latency",
"status": "monitoring",
"impact": "minor",
"created_at": "2026-01-06T10:30:00Z",
"resolved_at": null
}
]
}

The status.indicator field maps to Statuspage.io’s format:

IndicatorPakyas StatusDescription
noneOperationalAll systems operational
minorDegradedMinor performance issues
majorPartial OutagePartial system outage
criticalMajor OutageMajor system outage

The components[].status field uses Statuspage.io-compatible values:

ValuePakyas Status
operationalOperational
degraded_performanceDegraded
partial_outagePartial Outage
major_outageMajor Outage
  • Custom status dashboards - Build your own status UI
  • Monitoring integrations - Feed status into Datadog, Grafana, etc.
  • ChatOps - Query status from Slack/Discord bots
  • CI/CD gates - Check status before deployments
Terminal window
curl -s https://pakyas.com/status/acme/status.json | jq '.status'

Output:

{
"indicator": "none",
"description": "Operational"
}
#!/bin/bash
STATUS=$(curl -s https://pakyas.com/status/acme/status.json | jq -r '.status.indicator')
if [ "$STATUS" != "none" ]; then
echo "Status page indicates issues: $STATUS"
exit 1
fi
echo "All systems operational, proceeding with deployment"

Dynamic SVG badges show your current status and can be embedded in README files, documentation, or any webpage.

GET /status/{slug}/badge.svg
HeaderPublicPrivate
Content-Typeimage/svg+xml; charset=utf-8Same
Cache-Controlpublic, max-age=30no-store, private
X-Content-Type-OptionsnosniffSame
VaryAuthorizationSame
StatusColorPreview
OperationalGreen (#22c55e)status: Operational
DegradedYellow (#eab308)status: Degraded
Partial OutageOrange (#f97316)status: Partial%20Outage
Major OutageRed (#ef4444)status: Major%20Outage
[![Status](https://pakyas.com/status/acme/badge.svg)](https://pakyas.com/status/acme)

This creates a clickable badge that links to your full status page.

<a href="https://pakyas.com/status/acme">
<img src="https://pakyas.com/status/acme/badge.svg" alt="System Status">
</a>

For private pages, you’ll need to use server-side rendering since browsers can’t send Authorization headers for image requests:

<!-- Won't work - browsers can't add auth headers to <img> -->
<img src="https://pakyas.com/status/private-page/badge.svg">
<!-- Works - token in URL (less secure, visible in logs) -->
<img src="https://pakyas.com/status/private-page/badge.svg?token=YOUR_TOKEN">

For better security with private badges, consider fetching the JSON API server-side and rendering your own badge.

  • GitHub README - Show status in your repository
  • Documentation sites - Embed in docs footer or header
  • Internal dashboards - Quick visual status indicator
  • Email signatures - Dynamic status in team emails

All endpoints include appropriate caching headers:

EndpointPublic TTLPrivate TTL
RSS2 minutesNo cache
JSON1 minuteNo cache
Badge30 secondsNo cache

Private pages always use Cache-Control: no-store, private and Pragma: no-cache to prevent any caching of authenticated content.

The Vary: Authorization header ensures proxies don’t serve cached public responses to authenticated requests or vice versa.

  • Prefer Authorization header over query parameters for programmatic access
  • Query parameters may appear in:
    • Server logs
    • Browser history
    • Referrer headers
    • Analytics tools

All endpoints include:

  • X-Content-Type-Options: nosniff - Prevents MIME sniffing attacks
  • Proper Content-Type headers - Ensures correct parsing
  • Invalid or missing tokens return 404 Not Found (not 403 Forbidden)
  • This prevents attackers from discovering which slugs have private pages

Status page feeds follow standard rate limits:

PlanRequests per minute
Free60
Developer120
Pro300
Business600

Consider caching responses on your end to stay within limits when embedding badges or polling JSON status.