GET /v1/status
Returns the real-time health status of all data feeds accessible to your API key. Use this to monitor data freshness and detect feed outages before they affect your application.
Request
GET /v1/status
Auth: Required
Parameters: None
Response
{
"status": "ok",
"server_time": 1749600000,
"feeds": {
"WMMARKETS:ZERO": {
"status": "live",
"last_candle_time": 1749599940,
"last_candle_age_seconds": 60,
"last_heartbeat_age_seconds": 1,
"liveness_source": "heartbeat",
"clock_offset_seconds": -10800,
"symbol_count": 230
},
"ISE:TADIL": {
"status": "live",
"last_candle_time": 0,
"last_candle_age_seconds": 0,
"last_heartbeat_age_seconds": 1,
"liveness_source": "heartbeat",
"clock_offset_seconds": 347142601,
"symbol_count": 972,
"clock_note": "timestamps use the broker clock (4018 days behind UTC); use last_heartbeat_age_seconds for liveness"
}
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
status | string | Overall platform status: "ok" or "degraded" |
server_time | integer | Current server time (Unix epoch) |
feeds | object | Per-feed health data, keyed by feed compound key |
feeds.*.status | string | "live", "stale", or "offline" — see table below |
feeds.*.last_candle_time | integer | Open time of the most recent bar received (Unix epoch) |
feeds.*.last_candle_age_seconds | integer | Seconds elapsed since the last bar was received |
feeds.*.last_heartbeat_age_seconds | integer | Seconds since the feed last delivered data to us. This is the liveness signal — present only for feeds whose collector reports to this endpoint |
feeds.*.symbol_count | integer | Number of active symbols in this feed |
feeds.*.liveness_source | string | Always present. Which signal status was derived from: heartbeat (the feed's own ingest signal), candle (newest stored bar), or none |
feeds.*.clock_offset_seconds | integer | Measured broker-clock offset for this feed. real_utc = feed_timestamp + clock_offset_seconds. Absent means unknown — never treat a missing value as 0 |
feeds.*.clock_offset_age_seconds | integer | How long ago that offset was last measured |
feeds.*.clock_note | string | Present only on feeds stored on a broker clock (ISE). Explains why last_candle_time is not comparable to server_time |
Feed Status Meaning
| Status | Meaning | Condition |
|---|---|---|
live | Feed is healthy and up to date | Last bar received < 5 minutes ago |
stale | Minor delay detected | Last bar received 5–30 minutes ago |
offline | Feed disconnected | Last bar received > 30 minutes ago |
Example — Health Monitor
import requests
import time
headers = {"X-API-Key": "fxd_your_key"}
def check_status():
resp = requests.get(
"https://api.pipdata.net/v1/status",
headers=headers
)
data = resp.json()
icons = {"live": "✅", "stale": "⚠️", "offline": "❌"}
for feed_name, feed in data["feeds"].items():
icon = icons.get(feed["status"], "?")
age = feed["last_candle_age_seconds"]
print(f"{icon} {feed_name}: {feed['status']} — last bar {age}s ago")
return data["status"] == "ok"
# Check every 60 seconds
while True:
ok = check_status()
if not ok:
print("⚠️ Platform degraded — check feeds")
time.sleep(60)