Status Page Integrations
Pakyas status pages provide several integration endpoints to embed status information in your tools, dashboards, and documentation.
Endpoints Overview
Section titled “Endpoints Overview”| Endpoint | Content-Type | Description |
|---|---|---|
/status/{slug}/rss.xml | application/rss+xml | RSS 2.0 feed of incidents |
/status/{slug}/status.json | application/json | Statuspage.io-compatible JSON API |
/status/{slug}/badge.svg | image/svg+xml | Dynamic SVG status badge |
Authentication
Section titled “Authentication”Public Pages
Section titled “Public Pages”No authentication required. Access endpoints directly:
curl https://pakyas.com/status/acme/status.jsonPrivate Pages (Pro+)
Section titled “Private Pages (Pro+)”Private status pages require authentication via either:
Query Parameter:
curl "https://pakyas.com/status/acme/status.json?token=YOUR_ACCESS_TOKEN"Authorization Header (recommended):
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ https://pakyas.com/status/acme/status.jsonThe Authorization header is preferred for:
- Better security (tokens don’t appear in server logs)
- Cleaner URLs in integrations
- Standard OAuth 2.0 compatibility
RSS Feed
Section titled “RSS Feed”The RSS feed provides an RSS 2.0-compatible feed of recent incidents (last 90 days, up to 50 items).
Endpoint
Section titled “Endpoint”GET /status/{slug}/rss.xmlResponse Headers
Section titled “Response Headers”| Header | Public | Private |
|---|---|---|
Content-Type | application/rss+xml; charset=utf-8 | Same |
Cache-Control | public, max-age=120 | no-store, private |
X-Content-Type-Options | nosniff | Same |
Vary | Authorization | Same |
Example Response
Section titled “Example Response”<?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>Use Cases
Section titled “Use Cases”- 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
Slack Integration Example
Section titled “Slack Integration Example”- In Slack, go to Apps > RSS
- Add the feed URL:
https://pakyas.com/status/acme/rss.xml - Choose a channel for notifications
- Incidents will be posted automatically
JSON API
Section titled “JSON API”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.
Endpoint
Section titled “Endpoint”GET /status/{slug}/status.jsonResponse Headers
Section titled “Response Headers”| Header | Public | Private |
|---|---|---|
Content-Type | application/json | Same |
Cache-Control | public, max-age=60 | no-store, private |
X-Content-Type-Options | nosniff | Same |
Vary | Authorization | Same |
Response Schema
Section titled “Response Schema”{ "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 } ]}Status Indicator Values
Section titled “Status Indicator Values”The status.indicator field maps to Statuspage.io’s format:
| Indicator | Pakyas Status | Description |
|---|---|---|
none | Operational | All systems operational |
minor | Degraded | Minor performance issues |
major | Partial Outage | Partial system outage |
critical | Major Outage | Major system outage |
Component Status Values
Section titled “Component Status Values”The components[].status field uses Statuspage.io-compatible values:
| Value | Pakyas Status |
|---|---|
operational | Operational |
degraded_performance | Degraded |
partial_outage | Partial Outage |
major_outage | Major Outage |
Use Cases
Section titled “Use Cases”- 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
Example: Fetch Status with curl
Section titled “Example: Fetch Status with curl”curl -s https://pakyas.com/status/acme/status.json | jq '.status'Output:
{ "indicator": "none", "description": "Operational"}Example: Check Status in CI
Section titled “Example: Check Status in CI”#!/bin/bashSTATUS=$(curl -s https://pakyas.com/status/acme/status.json | jq -r '.status.indicator')
if [ "$STATUS" != "none" ]; then echo "Status page indicates issues: $STATUS" exit 1fi
echo "All systems operational, proceeding with deployment"Status Badge
Section titled “Status Badge”Dynamic SVG badges show your current status and can be embedded in README files, documentation, or any webpage.
Endpoint
Section titled “Endpoint”GET /status/{slug}/badge.svgResponse Headers
Section titled “Response Headers”| Header | Public | Private |
|---|---|---|
Content-Type | image/svg+xml; charset=utf-8 | Same |
Cache-Control | public, max-age=30 | no-store, private |
X-Content-Type-Options | nosniff | Same |
Vary | Authorization | Same |
Badge Colors
Section titled “Badge Colors”| Status | Color | Preview |
|---|---|---|
| Operational | Green (#22c55e) | |
| Degraded | Yellow (#eab308) | |
| Partial Outage | Orange (#f97316) | |
| Major Outage | Red (#ef4444) |
Embedding in Markdown
Section titled “Embedding in Markdown”[](https://pakyas.com/status/acme)This creates a clickable badge that links to your full status page.
Embedding in HTML
Section titled “Embedding in HTML”<a href="https://pakyas.com/status/acme"> <img src="https://pakyas.com/status/acme/badge.svg" alt="System Status"></a>Private Page Badges
Section titled “Private Page Badges”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.
Use Cases
Section titled “Use Cases”- 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
Caching Behavior
Section titled “Caching Behavior”All endpoints include appropriate caching headers:
| Endpoint | Public TTL | Private TTL |
|---|---|---|
| RSS | 2 minutes | No cache |
| JSON | 1 minute | No cache |
| Badge | 30 seconds | No 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.
Security Considerations
Section titled “Security Considerations”Token Security
Section titled “Token Security”- Prefer Authorization header over query parameters for programmatic access
- Query parameters may appear in:
- Server logs
- Browser history
- Referrer headers
- Analytics tools
Content Security
Section titled “Content Security”All endpoints include:
X-Content-Type-Options: nosniff- Prevents MIME sniffing attacks- Proper
Content-Typeheaders - Ensures correct parsing
Private Page Access
Section titled “Private Page Access”- Invalid or missing tokens return 404 Not Found (not 403 Forbidden)
- This prevents attackers from discovering which slugs have private pages
Rate Limits
Section titled “Rate Limits”Status page feeds follow standard rate limits:
| Plan | Requests per minute |
|---|---|
| Free | 60 |
| Developer | 120 |
| Pro | 300 |
| Business | 600 |
Consider caching responses on your end to stay within limits when embedding badges or polling JSON status.