Updates Portal API
The Updates Portal exposes a small public JSON API so you can poll status, ingest changelog entries, watch the roadmap, and check known issues from your own systems. No authentication required.
Base URL
https://updates.foura.ai
Service Status
GET /api/v1/status
Returns the live operational status of every FourA service, plus active and recent incidents. Server-side cached for 15 seconds, so polling more often than that returns the same payload.
curl https://updates.foura.ai/api/v1/status
{
"overall": "operational",
"services": [
{
"slug": "api",
"name": "API",
"description": "...",
"status": "operational",
"daily": [
{ "date": "2026-05-19", "status": "operational", "major_outage_minutes": 0, "partial_outage_minutes": 0, "degraded_minutes": 0, "internal_degraded_minutes": 0 }
]
}
],
"active_incidents": [],
"recent_incidents": [
{ "id": "...", "service_slug": "api", "service_name": "API", "impact": "minor", "started_at": "...", "resolved_at": "..." }
]
}
| Top-level field | Type | Description |
|---|---|---|
overall |
string | operational if every service is healthy, otherwise one of the service status values |
services |
array | One entry per monitored service with slug, name, description, current status, and daily history (up to 90 days) |
active_incidents |
array | Incidents that are currently open |
recent_incidents |
array | Resolved incidents from the last 14 days |
Service status values: operational, degraded, partial_outage, major_outage, maintenance.
Incident impact values: minor (degraded performance), major (partial disruption), critical (service disruption).
Polling pattern
Use this endpoint to wire FourA status into your own dashboard or paging system.
import requests
def check_foura():
r = requests.get("https://updates.foura.ai/api/v1/status", timeout=5)
r.raise_for_status()
data = r.json()
if data["overall"] != "operational":
# Page on-call, post to Slack, flip a feature flag, etc.
for svc in data["services"]:
if svc["status"] != "operational":
print(f"{svc['name']}: {svc['status']}")
return data
The legacy GET /api/status returns 410 Gone and points callers here.
Changelog
GET /api/changelog
Returns published changelog entries in reverse chronological order.
curl "https://updates.foura.ai/api/changelog?limit=20"
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page |
integer | 1 | 1-indexed page number |
limit |
integer | 20 | Entries per page (max 50) |
category |
string | - | Filter to new, improved, or fixed |
{
"entries": [
{
"id": 42,
"title": "...",
"body": "Markdown body",
"category": "new",
"published_at": "2026-05-19T12:00:00Z",
"tags": "[\"api\", \"dashboard\"]"
}
],
"total": 137,
"page": 1,
"limit": 20
}
RSS
The full changelog (30 most recent entries) is also published as RSS at:
https://updates.foura.ai/rss
Subscribe in Feedly, Miniflux, Thunderbird, or any reader. The feed body matches the changelog body, including markdown rendered to HTML.
Roadmap
GET /api/roadmap
Returns every roadmap item, sorted by vote count then creation time.
curl https://updates.foura.ai/api/roadmap
{
"items": [
{
"id": 12,
"title": "...",
"description": "...",
"category": "API",
"status": "planned",
"votes": 23,
"target_date": "Q3 2026"
}
]
}
Item status values: planned, in_progress, done, cancelled.
Voting
POST /api/roadmap/:id/vote
Toggles a vote on a single roadmap item. Votes are anonymous and tied to the caller's IP + User-Agent. Calling again removes the vote.
curl -X POST https://updates.foura.ai/api/roadmap/12/vote
{ "votes": 24, "voted": true }
voted reports the post-call state: true if your vote was added, false if it was removed.
Known Issues
GET /api/issues
Returns issues tracked by FourA support.
curl "https://updates.foura.ai/api/issues?tab=open"
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
tab |
string | open |
open for active issues, resolved for resolved/closed |
{
"issues": [
{
"id": 5,
"title": "...",
"body": "Markdown description",
"severity": "medium",
"status": "investigating",
"service_id": "api",
"opened_at": "2026-05-18T09:00:00Z",
"resolved_at": null,
"resolution": null
}
]
}
severity values: low, medium, high, critical.
status values: open, investigating, resolved, closed.
Notes
- All endpoints are public. There's no API key required, but expect generous rate limiting per source IP.
- Responses are JSON over HTTPS. There's no pagination on roadmap or issues; the lists are small.
- For free-text or raw HTML versions of the changelog, use the
/rssfeed instead of/api/changelog.
Related
- Service Status: Read the same data in the browser
- Changelog: Browse entries with filters and pagination
- Roadmap: Vote on items in the UI
- Known Issues: Read open and resolved issues
- Updates Portal: Section overview