Skip to main content

GET /v1/status

Returns detailed status information about the data collection pipeline, including which collectors are running and how fresh the data is for each pair. Use this endpoint to monitor data quality and detect collection outages.

Authentication

note

This endpoint requires an API key. See Authentication.

Parameters

No parameters required.

Response

FieldTypeDescription
statusstringOverall system status. One of operational, degraded, or outage.
collectorsarrayStatus of each exchange data collector.
collectors[].exchangestringExchange name.
collectors[].statusstringCollector status. One of running, stopped, or error.
collectors[].last_heartbeatstringISO 8601 timestamp of the collector's last heartbeat.
pairsarrayPer-pair data freshness information.
pairs[].pairstringPair identifier.
pairs[].last_updatestringISO 8601 timestamp of the most recent data point.
pairs[].freshness_secondsintegerSeconds since the last data point was received.
pairs[].statusstringData freshness status. One of fresh, stale, or unavailable.
timestampstringISO 8601 timestamp of this status check.

Examples

curl
curl -X GET "https://api.moxiemetrx.com/v1/status" \
-H "X-API-Key: your_key"
Python
import requests

response = requests.get(
"https://api.moxiemetrx.com/v1/status",
headers={"X-API-Key": "your_key"},
)

data = response.json()
print(f"System: {data['status']}")
for pair in data["pairs"]:
print(f" {pair['pair']}: {pair['status']} ({pair['freshness_seconds']}s)")

Response:

{
"status": "operational",
"collectors": [
{
"exchange": "luno",
"status": "running",
"last_heartbeat": "2026-03-23T11:59:55Z"
},
{
"exchange": "quidax",
"status": "running",
"last_heartbeat": "2026-03-23T11:59:58Z"
},
{
"exchange": "valr",
"status": "running",
"last_heartbeat": "2026-03-23T11:59:52Z"
}
],
"pairs": [
{
"pair": "BTCNGN",
"last_update": "2026-03-23T11:59:53Z",
"freshness_seconds": 7,
"status": "fresh"
},
{
"pair": "USDTNGN",
"last_update": "2026-03-23T11:59:56Z",
"freshness_seconds": 4,
"status": "fresh"
},
{
"pair": "ETHNGN",
"last_update": "2026-03-23T11:59:51Z",
"freshness_seconds": 9,
"status": "fresh"
},
{
"pair": "ETHKES",
"last_update": "2026-03-23T11:59:48Z",
"freshness_seconds": 12,
"status": "fresh"
},
{
"pair": "BTCZAR",
"last_update": "2026-03-23T11:59:55Z",
"freshness_seconds": 5,
"status": "fresh"
},
{
"pair": "ETHZAR",
"last_update": "2026-03-23T11:59:57Z",
"freshness_seconds": 3,
"status": "fresh"
},
{
"pair": "XRPNGN",
"last_update": "2026-03-23T11:59:54Z",
"freshness_seconds": 6,
"status": "fresh"
},
{
"pair": "XRPZAR",
"last_update": "2026-03-23T11:59:56Z",
"freshness_seconds": 4,
"status": "fresh"
},
{
"pair": "SOLNGN",
"last_update": "2026-03-23T11:59:50Z",
"freshness_seconds": 10,
"status": "fresh"
},
{
"pair": "SOLZAR",
"last_update": "2026-03-23T11:59:53Z",
"freshness_seconds": 7,
"status": "fresh"
}
],
"timestamp": "2026-03-23T12:00:00Z"
}
tip

Poll this endpoint every 60 seconds in production to detect collector failures before they impact downstream systems.

Handling collector failures

When a collector goes down, affected pairs transition from fresh to stale to unavailable as time passes. Here is how to respond:

Pair statusFreshnessRecommended action
fresh< 10 minNormal operation
stale10-30 minLog a warning. Data still usable for non-real-time use cases
unavailable> 30 minHalt pricing decisions that depend on this pair. Alert on-call

If a single collector is down but others are still running, pairs covered by multiple exchanges may remain fresh via the remaining sources. Check the sources array in /v1/rates/live to see which exchanges are actively contributing.