← Back to Documentation

💻 API Documentation INSTITUTIONAL

REST API for programmatic access with JWT Bearer token authentication

Authentication

All API requests (except /api/health) require JWT Bearer token authentication.

Authorization: Bearer {your_jwt_token}

Token Format: HS256-signed JWT with payload: { "sub": "user_id", "tier": "pro|elite|institutional", "exp": unix_timestamp }

Base URL

https://www.liquidator-indicator.com/api/v1

All traffic is served over HTTPS (TLS). Plain http:// requests are redirected (301) to HTTPS.

API Endpoints

Authentication - Get Token

POST /auth/token

Authenticate with email and password to receive a JWT token for API access.

Request Body (JSON):

{
  "email": "demo@example.com",
  "password": "your_password"
}

Response (200 OK):

{
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expires_in": 7200,
    "expires_at_utc": "2026-09-04T12:00:00Z",
    "tier": "institutional"
  },
  "timestamp_utc": "2026-09-04T10:00:00Z",
  "api_version": "1.0.0"
}

Health Check (No Auth)

GET /health

Check if the API is running and healthy.

Response (200 OK):

{
  "status": "healthy",
  "timestamp_utc": "2026-09-03T12:00:00Z",
  "version": "1.0.0"
}

Get Positions

GET /positions?symbol=BTC&limit=100&page=1 PRO+

Retrieve liquidation positions near current market price, tier-limited by maximum position count.

Parameters:

Tier Limits:

Response (200 OK):

{
  "positions": [
    {
      "id": "gmx-BTC-LONG",
      "exchange": "gmx",
      "symbol": "BTC",
      "position": {
        "side": "LONG",
        "size_usd": "50000.00000000",
        "size_native": "0.64516129",
        "leverage": "2.5000",
        "entry_price": "77500.00000000",
        "current_price": "77687.45000000",
        "liquidation_price": "60000.00000000"
      },
      "liquidation": {
        "distance_to_liquidation_percent": "22.73000000",
        "is_at_risk": false,
        "risk_level": "low"
      },
      "collateral": {
        "total_usd": "20000.00000000",
        "health_factor": "2.50"
      }
    }
  ],
  "pagination": {
    "total_count": 25,
    "page": 1,
    "per_page": 100,
    "has_next": false
  },
  "request_metadata": {
    "response_time_ms": 142,
    "data_freshness_seconds": 2
  }
}

Get Positions Summary

GET /positions/summary?symbol=BTC PRO+

Get summary statistics of liquidation positions.

Response (200 OK):

{
  "summary": {
    "total_positions": 795,
    "total_value_usd": "74882163.00000000",
    "critical_risk_count": 174,
    "high_risk_count": 511,
    "by_exchange": {
      "gains": 535,
      "gmx": 178,
      "drift": 43,
      "hyperliquid": 21,
      "injective": 18
    },
    "largest_position_usd": "16000.00000000",
    "highest_leverage": "400.0000"
  },
  "request_metadata": {
    "request_id": "req_1725435600000",
    "response_time_ms": 125,
    "data_freshness_seconds": 2
  }
}

Get Liquidation Heatmap

GET /heatmap?symbol=BTC&timeframe=5m&include_longs=true&include_shorts=true PRO+

Get liquidation density heatmap at specific price levels for a symbol.

Parameters:

Response (200 OK):

{
  "data": {
    "symbol": "BTC",
    "current_price": "77687.45000000",
    "heatmap": [
      {
        "price_level": "77700.00000000",
        "liquidation_count": 5,
        "total_value_usd": "450000.00000000",
        "long_value_usd": "300000.00000000",
        "short_value_usd": "150000.00000000",
        "density": 0.09,
        "risk_score": 0.85
      }
    ],
    "summary": {
      "highest_density_price": "76500.00000000",
      "total_liquidation_value": "15500000.00000000",
      "price_range": [70000, 85000]
    }
  },
  "response_time_ms": 156
}

Get OHLCV Candles

GET /ohlcv?symbol=BTC&timeframe=5m&limit=100 PRO+

Get historical OHLCV candle data for backtesting and analysis.

Parameters:

Response (200 OK):

{
  "data": {
    "symbol": "BTC",
    "timeframe": "5m",
    "candles": [
      {
        "timestamp_utc": "2026-09-03T01:45:00.000000Z",
        "open": "77328.00000000",
        "high": "77468.00000000",
        "low": "77274.00000000",
        "close": "77312.00000000",
        "volume_usd": "2500000.00000000",
        "volume_native": "32.25800000"
      }
    ]
  },
  "pagination": {
    "total_count": 100,
    "page": 1,
    "per_page": 100,
    "has_next": false
  },
  "response_time_ms": 87
}

Get Available Symbols

GET /symbols PRO+

List all available trading symbols by tier.

Response (200 OK):

{
  "data": {
    "tier": "institutional",
    "symbols": ["BTC", "ETH", "SOL", "LTC", "LINK", "DOGE", "ADA", "XRP", "BNB", "ARB", "AVAX", "POL"],
    "count": 12
  },
  "timestamp_utc": "2026-09-04T10:00:00Z",
  "api_version": "1.0.0"
}

Get Available Exchanges

GET /exchanges PRO+

List all supported exchanges by tier.

Response (200 OK):

{
  "data": {
    "tier": "institutional",
    "exchanges": ["hyperliquid", "hyperliquid_full_scan", "gmx", "gains", "injective", "drift"],
    "count": 6
  },
  "timestamp_utc": "2026-09-04T10:00:00Z",
  "api_version": "1.0.0"
}

Rate Limiting

API requests are rate-limited based on subscription tier, applied per user per minute:

When rate limit exceeded, the API returns 429 Too Many Requests.

Error Handling

Errors are returned with appropriate HTTP status codes and error details:

Error Response Format:

{
  "error": "InvalidParameter",
  "message": "symbol parameter is required",
  "request_id": "req_abc123def456"
}

Response Format

All successful responses follow this envelope structure:

{
  "data": { /* endpoint-specific data */ },
  "pagination": { /* if applicable */ },
  "request_metadata": {
    "response_time_ms": 142,
    "data_freshness_seconds": 2,
    "api_version": "1.0.0"
  }
}

Example: Python Client

import requests

# Step 1: Authenticate and get token
auth_response = requests.post(
    "https://www.liquidator-indicator.com/api/auth/token",
    json={
        "email": "your_email@example.com",
        "password": "your_password"
    }
)
token = auth_response.json()["data"]["token"]

# Step 2: Use token to fetch positions
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(
    "https://www.liquidator-indicator.com/api/v1/positions?symbol=BTC&limit=5",
    headers=headers
)
positions = response.json()["positions"]
print(positions)

Support

For API questions and support, refer to the documentation or contact: nexus2.0.2026@gmail.com