Skip to content

Get Exchange Status

Returns the current operational status of the exchange. This endpoint is available even when the exchange is under maintenance and other public endpoints are returning HTTP 503 — making it suitable for polling-based health checks or pre-flight status gates.

Endpoint

SurfaceMethodURL
REST serviceGEThttps://papi.synthetix.io/v1/exchange/status
WebSocket serviceGEThttps://papi.synthetix.io/v1/ws/exchange/status

Both variants are plain HTTP GET requests — the WebSocket service URL does not require or accept a WebSocket upgrade for this path.

No Authentication Required

This is a public endpoint that does not require authentication.

Request

No request body or parameters.

cURL

curl https://papi.synthetix.io/v1/exchange/status
# Via the WebSocket service URL (plain HTTP, no upgrade)
curl https://papi.synthetix.io/v1/ws/exchange/status

JavaScript

const response = await fetch('https://papi.synthetix.io/v1/exchange/status');
const data = await response.json();
console.log(data);

Python

import requests
 
response = requests.get('https://papi.synthetix.io/v1/exchange/status')
data = response.json()
print(data)

Response

Success Response

{
  "status": "ok"
}

Response Fields

FieldTypeDescription
statusstringExchange operational status. "ok" when the exchange is operating normally

Implementation Notes

  • This endpoint remains accessible when other public endpoints return HTTP 503 during maintenance windows
  • Poll this endpoint to determine when the exchange returns to normal operation after a maintenance window
  • Both the REST service URL and the WebSocket service URL serve the same response — use whichever base URL your client already connects to

Error Handling

HTTP StatusDescription
200Exchange is operational
503Exchange is under maintenance (endpoint itself may also return 503 in extreme cases)

Use Cases

Pre-flight Status Check

async function waitForExchange(pollIntervalMs = 5000) {
  while (true) {
    const response = await fetch('https://papi.synthetix.io/v1/exchange/status');
    const data = await response.json();
    if (response.ok && data.status === 'ok') return;
    await new Promise(resolve => setTimeout(resolve, pollIntervalMs));
  }
}

Health Monitor

async function isExchangeOperational() {
  try {
    const response = await fetch('https://papi.synthetix.io/v1/exchange/status');
    return response.ok;
  } catch {
    return false;
  }
}