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

FieldTypeDescription
statusstringOverall platform status: "ok" or "degraded"
server_timeintegerCurrent server time (Unix epoch)
feedsobjectPer-feed health data, keyed by feed compound key
feeds.*.statusstring"live", "stale", or "offline" — see table below
feeds.*.last_candle_timeintegerOpen time of the most recent bar received (Unix epoch)
feeds.*.last_candle_age_secondsintegerSeconds elapsed since the last bar was received
feeds.*.last_heartbeat_age_secondsintegerSeconds 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_countintegerNumber of active symbols in this feed
feeds.*.liveness_sourcestringAlways present. Which signal status was derived from: heartbeat (the feed's own ingest signal), candle (newest stored bar), or none
feeds.*.clock_offset_secondsintegerMeasured 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_secondsintegerHow long ago that offset was last measured
feeds.*.clock_notestringPresent only on feeds stored on a broker clock (ISE). Explains why last_candle_time is not comparable to server_time

Feed Status Meaning

StatusMeaningCondition
liveFeed is healthy and up to dateLast bar received < 5 minutes ago
staleMinor delay detectedLast bar received 5–30 minutes ago
offlineFeed disconnectedLast 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)