> For the complete documentation index, see [llms.txt](https://docs.synthdata.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.synthdata.co/rest-api.md).

# REST API

REST API for real-time and historical market forecasts (liquidation risk, LP ranges, volatility, option pricing, price distributions) and prediction market comparisons against Polymarket and Limitless.

## Content

[Authentication](#authentication)

[Insights Endpoints](#insights-endpoints)

[Polymarket Insights](#polymarket-insights)

[Limitless Insights](#limitless-insights)

[Leaderboard Endpoints](#leaderboard-endpoints)

[Meta-Leaderboard Endpoints](#meta-leaderboard-endpoints)

## Authentication

**Insights endpoints** require an API key in the `Authorization` header:

```
Authorization: Apikey MY_API_KEY
```

Credits are consumed per request. Requests are rate-limited.\
Read [here](/getting-started/authentication.md) how to get your API key.

**Leaderboard and meta-leaderboard endpoints** are public (no authentication required), but are rate-limited.

## Insights Endpoints

### Common input parameters

All `/insights/*` endpoints accept the same three query parameters:

| Parameter    | Type   | Required | Description                                                                                                                                                                                                                                             |
| ------------ | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `asset`      | string | No       | Asset symbol to query. If omitted, defaults to `BTC`. See each endpoint for the supported assets list. Note: `SPY`, `NVDA`, `GOOGL`, `TSLA`, `AAPL` are silently remapped to their cross-listed variants (`SPYX`, `NVDAX`, `GOOGLX`, `TSLAX`, `AAPLX`). |
| `horizon`    | string | No       | Forecast time window. `"1h"` for next-hour, `"24h"` for next-day. Each endpoint documents its default.                                                                                                                                                  |
| `start_time` | string | No       | ISO 8601 timestamp (e.g. `2024-01-02T15:04:05Z`). If provided, returns historical data from that point in time. If omitted, returns the latest available data.                                                                                          |

### GET /insights/liquidation

Provides the probability of long and short position liquidations at various price levels over 6, 12, 18, and 24 hour windows. Useful for assessing leverage risk, setting stop-loss levels, and managing margin exposure.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "forecast_start_time": "2024-01-02T15:04:05Z",
  "current_price": 97500.0,
  "data": [
    {
      "price_change": "5%",
      "long_liquidation_probability": {
        "6":  0.12,
        "12": 0.18,
        "18": 0.23,
        "24": 0.27
      },
      "short_liquidation_probability": {
        "6":  0.03,
        "12": 0.05,
        "18": 0.07,
        "24": 0.09
      }
    }
  ]
}
```

| Field                                  | Type         | Description                                                                          |
| -------------------------------------- | ------------ | ------------------------------------------------------------------------------------ |
| `forecast_start_time`                  | ISO 8601     | Start time of the Monte Carlo simulation used for this calculation                   |
| `current_price`                        | float        | Asset spot price used for the calculation                                            |
| `data`                                 | array        | One entry per price-change scenario                                                  |
| `data[].price_change`                  | string       | Hypothetical price move relative to current, e.g. `"-5%"` or `"+10%"`                |
| `data[].long_liquidation_probability`  | object       | Probability that a long position is liquidated if the price moves by `price_change`  |
| `data[].short_liquidation_probability` | object       | Probability that a short position is liquidated if the price moves by `price_change` |
| `data[].*_probability."6"`             | float \[0,1] | Probability of liquidation within 6 hours                                            |
| `data[].*_probability."12"`            | float \[0,1] | Probability of liquidation within 12 hours                                           |
| `data[].*_probability."18"`            | float \[0,1] | Probability of liquidation within 18 hours                                           |
| `data[].*_probability."24"`            | float \[0,1] | Probability of liquidation within 24 hours                                           |

### GET /insights/lp-bounds

Returns price interval analysis for concentrated liquidity positioning. For each price interval, the response includes the probability of price staying within the range, expected time in-range, and estimated impermanent loss. Useful for AMM LP range selection, options strike placement, and range-bound strategies.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "forecast_start_time": "2024-01-02T15:04:05Z",
  "current_price": 97500.0,
  "data": [
    {
      "interval": {
        "full_width": "10%",
        "lower_bound": 92625.0,
        "upper_bound": 102375.0
      },
      "expected_time_in_interval": 0.72,
      "expected_impermanent_loss": 0.0031,
      "probability_to_stay_in_interval": {
        "24": 0.68
      }
    }
  ]
}
```

| Field                                         | Type         | Description                                                                                                |
| --------------------------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------- |
| `forecast_start_time`                         | ISO 8601     | Start time of the Monte Carlo simulation used for this calculation                                         |
| `current_price`                               | float        | Asset spot price used for the calculation                                                                  |
| `data`                                        | array        | One entry per price interval                                                                               |
| `data[].interval.full_width`                  | string       | Total width of the interval as a percentage, e.g. `"10%"` means ±5% around current price                   |
| `data[].interval.lower_bound`                 | float        | Lower price boundary of the interval                                                                       |
| `data[].interval.upper_bound`                 | float        | Upper price boundary of the interval                                                                       |
| `data[].expected_time_in_interval`            | float \[0,1] | Expected fraction of the 24h horizon that price spends inside this interval                                |
| `data[].expected_impermanent_loss`            | float        | Expected impermanent loss as a fraction for an LP position held within this interval over the horizon      |
| `data[].probability_to_stay_in_interval."24"` | float \[0,1] | Probability that price stays within the interval for the full 24h horizon without touching either boundary |

### GET /insights/lp-probabilities

Returns the probability that an asset's price will be above or below specific price targets at the end of the 24h horizon. Covers 11 upside and 11 downside price levels relative to current price. Useful for directional bet pricing, options delta estimation, and Polymarket up/down contract calibration.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "forecast_start_time": "2024-01-02T15:04:05Z",
  "current_price": 97500.0,
  "data": {
    "24h": {
      "probability_above": {
        "100000": 0.42,
        "105000": 0.21
      },
      "probability_below": {
        "95000": 0.38,
        "90000": 0.18
      }
    }
  }
}
```

| Field                          | Type     | Description                                                                                                                         |
| ------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `forecast_start_time`          | ISO 8601 | Start time of the Monte Carlo simulation used for this calculation                                                                  |
| `current_price`                | float    | Asset spot price used for the calculation                                                                                           |
| `data."24h".probability_above` | object   | Keys are price levels (as strings); values are the probability \[0,1] that the asset price ends **above** that level at horizon end |
| `data."24h".probability_below` | object   | Keys are price levels (as strings); values are the probability \[0,1] that the asset price ends **below** that level at horizon end |

### GET /insights/option-pricing

Returns theoretical option prices computed from SynthData's ensemble volatility forecasts. Covers call and put prices across a range of strike prices. Use to compare against market-quoted premiums to find mispriced options.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "forecast_start_time": "2024-01-02T15:04:05Z",
  "current_price": 97500.0,
  "expiry_time": "2024-01-03T00:00:00Z",
  "call_options": {
    "95000": 3200.0,
    "100000": 1100.0
  },
  "put_options": {
    "95000": 750.0,
    "100000": 2200.0
  }
}
```

| Field                 | Type     | Description                                                                                                     |
| --------------------- | -------- | --------------------------------------------------------------------------------------------------------------- |
| `forecast_start_time` | ISO 8601 | Start time of the Monte Carlo simulation used for this calculation                                              |
| `current_price`       | float    | Asset spot price used for the calculation                                                                       |
| `expiry_time`         | ISO 8601 | Option expiry timestamp used for pricing                                                                        |
| `call_options`        | object   | Keys are strike prices (as strings); values are the theoretical call option price in the asset's quote currency |
| `put_options`         | object   | Keys are strike prices (as strings); values are the theoretical put option price in the asset's quote currency  |

### GET /insights/volatility

Returns SynthData's volatility forecasts alongside historical realized volatility. Useful for vol-targeting strategies, premium calibration, and regime detection.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "forecast_start_time": "2024-01-02T15:04:05Z",
  "current_price": 97500.0,
  "realized": {
    "prices": [
      { "price": 96000.0, "returns": 0.0031 },
      { "price": 97500.0, "returns": null }
    ],
    "volatility": [0.021, null],
    "average_volatility": 0.021
  },
  "forecast_past": {
    "volatility": [0.019, 0.022],
    "average_volatility": 0.0205
  },
  "forecast_future": {
    "volatility": [0.023, 0.025],
    "average_volatility": 0.024
  }
}
```

| Field                                | Type                   | Description                                                                                                                |
| ------------------------------------ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `forecast_start_time`                | ISO 8601               | Start time of the Monte Carlo simulation used for this calculation                                                         |
| `current_price`                      | float                  | Asset spot price used for the calculation                                                                                  |
| `realized.prices`                    | array                  | Historical price observations leading up to forecast time                                                                  |
| `realized.prices[].price`            | float                  | Asset price at this observation                                                                                            |
| `realized.prices[].returns`          | float or null          | Log return between this and the previous observation; null for the most recent point where the next price is not yet known |
| `realized.volatility`                | array of float or null | Rolling realized volatility for each observation period; null when not yet computable (e.g. at the latest point)           |
| `realized.average_volatility`        | float                  | Average realized volatility across the observation window                                                                  |
| `forecast_past.volatility`           | array of float         | Model-predicted volatility for time periods that have already elapsed (backtested values)                                  |
| `forecast_past.average_volatility`   | float                  | Average of `forecast_past.volatility`                                                                                      |
| `forecast_future.volatility`         | array of float         | Model-predicted volatility for upcoming time periods                                                                       |
| `forecast_future.average_volatility` | float                  | Average of `forecast_future.volatility`                                                                                    |

### GET /insights/volatility-percentiles

Returns the full volatility distribution split into percentile buckets, for both the historical (past) and upcoming (future) forecast windows, alongside realized price observations. Useful for understanding the range and asymmetry of expected volatility.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "forecast_start_time": "2024-01-02T15:04:05Z",
  "current_price": 97500.0,
  "realized": {
    "prices": [
      { "price": 96000.0, "returns": 0.0031 },
      { "price": 97500.0, "returns": null }
    ]
  },
  "forecast_past": {
    "percentiles": [
      {
        "0.005": 0.009,
        "0.05":  0.012,
        "0.2":   0.016,
        "0.35":  0.019,
        "0.5":   0.021,
        "0.65":  0.024,
        "0.8":   0.028,
        "0.95":  0.035,
        "0.995": 0.047
      }
    ]
  },
  "forecast_future": {
    "percentiles": [
      {
        "0.005": 0.010,
        "0.05":  0.013,
        "0.2":   0.017,
        "0.35":  0.020,
        "0.5":   0.023,
        "0.65":  0.026,
        "0.8":   0.030,
        "0.95":  0.038,
        "0.995": 0.052
      }
    ]
  }
}
```

| Field                         | Type          | Description                                                        |
| ----------------------------- | ------------- | ------------------------------------------------------------------ |
| `forecast_start_time`         | ISO 8601      | Start time of the Monte Carlo simulation used for this calculation |
| `current_price`               | float         | Asset spot price used for the calculation                          |
| `realized.prices`             | array         | Historical price observations leading up to forecast time          |
| `realized.prices[].price`     | float         | Asset price at this observation                                    |
| `realized.prices[].returns`   | float or null | Log return from previous observation; null for the latest point    |
| `forecast_past.percentiles`   | array         | One object per historical time step                                |
| `forecast_future.percentiles` | array         | One object per upcoming forecast time step                         |
| `percentiles[]."0.005"`       | float         | Volatility at the 0.5th percentile — extreme low-vol scenario      |
| `percentiles[]."0.05"`        | float         | Volatility at the 5th percentile                                   |
| `percentiles[]."0.2"`         | float         | Volatility at the 20th percentile                                  |
| `percentiles[]."0.35"`        | float         | Volatility at the 35th percentile                                  |
| `percentiles[]."0.5"`         | float         | Median (50th percentile) volatility — central estimate             |
| `percentiles[]."0.65"`        | float         | Volatility at the 65th percentile                                  |
| `percentiles[]."0.8"`         | float         | Volatility at the 80th percentile                                  |
| `percentiles[]."0.95"`        | float         | Volatility at the 95th percentile                                  |
| `percentiles[]."0.995"`       | float         | Volatility at the 99.5th percentile — extreme high-vol scenario    |

### GET /insights/prediction-percentiles

Returns the full price distribution at the end of the forecast horizon, expressed as percentiles derived from the ensemble of the top 10 miners' predictions. Each percentile gives a predicted price level, giving you the complete probability distribution of expected price movements. Useful for position sizing, setting price targets, and tail-risk assessment.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "current_price": 97500.0,
  "forecast_future": {
    "percentiles": [
      {
        "0.005": 88200.0,
        "0.05":  91000.0,
        "0.2":   94500.0,
        "0.35":  96200.0,
        "0.5":   97800.0,
        "0.65":  99400.0,
        "0.8":   101500.0,
        "0.95":  105000.0,
        "0.995": 112000.0
      }
    ]
  }
}
```

| Field                         | Type  | Description                                                                   |
| ----------------------------- | ----- | ----------------------------------------------------------------------------- |
| `current_price`               | float | Asset spot price at the time of forecast                                      |
| `forecast_future.percentiles` | array | One object per forecast time step                                             |
| `percentiles[]."0.005"`       | float | Predicted asset **price** at the 0.5th percentile — extreme downside scenario |
| `percentiles[]."0.05"`        | float | Predicted price at the 5th percentile                                         |
| `percentiles[]."0.2"`         | float | Predicted price at the 20th percentile                                        |
| `percentiles[]."0.35"`        | float | Predicted price at the 35th percentile                                        |
| `percentiles[]."0.5"`         | float | Median (50th percentile) predicted price — central estimate                   |
| `percentiles[]."0.65"`        | float | Predicted price at the 65th percentile                                        |
| `percentiles[]."0.8"`         | float | Predicted price at the 80th percentile                                        |
| `percentiles[]."0.95"`        | float | Predicted price at the 95th percentile                                        |
| `percentiles[]."0.995"`       | float | Predicted price at the 99.5th percentile — extreme upside scenario            |

## Polymarket Insights

These endpoints combine SynthData's probability forecasts with live Polymarket market data, making it easy to compare model estimates against market-implied probabilities.

### GET /insights/polymarket/up-down/daily

Synth vs Polymarket probabilities for **daily** Up/Down contracts — whether the asset closes higher or lower than its opening price by end of UTC day.

**Supported assets:** BTC, ETH, XAU, SOL, SPY, NVDA, GOOGL, TSLA, AAPL, SPCX, XRP, HYPE, WTIOIL\
**Default horizon:** 24h

**Response**

```json
{
  "forecast_start_time": "2024-01-02T15:04:05Z",
  "current_price": 97500.0,
  "current_time": "2024-01-02T15:10:00Z",
  "start_price": 96800.0,
  "slug": "will-btc-go-up-jan-02",
  "event_creation_time": "2024-01-02T00:00:00Z",
  "event_start_time":    "2024-01-02T00:00:00Z",
  "event_end_time":      "2024-01-03T00:00:00Z",
  "synth_probability_up":      0.61,
  "synth_outcome":             "UP",
  "polymarket_probability_up": 0.58,
  "polymarket_outcome":        "UP",
  "market_probability_up":     0.59,
  "market_outcome":            "UP",
  "current_outcome":           "UP",
  "best_bid_price": 0.57,
  "best_bid_size":  250.0,
  "best_ask_price": 0.59,
  "best_ask_size":  180.0,
  "polymarket_last_trade_price":   0.58,
  "polymarket_last_trade_time":    "2024-01-02T15:08:00Z",
  "polymarket_last_trade_outcome": "UP"
}
```

| Field                           | Type         | Description                                                                                                              |
| ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------ |
| `forecast_start_time`           | ISO 8601     | Start time of the Monte Carlo simulation used for this calculation                                                       |
| `current_price`                 | float        | Asset spot price at query time                                                                                           |
| `current_time`                  | ISO 8601     | Wall-clock time of the data snapshot                                                                                     |
| `start_price`                   | float        | Asset price at the start of the event period — the reference for determining up/down at resolution                       |
| `slug`                          | string       | Polymarket market identifier slug                                                                                        |
| `event_creation_time`           | ISO 8601     | When the Polymarket market was created                                                                                   |
| `event_start_time`              | ISO 8601     | Start of the event window                                                                                                |
| `event_end_time`                | ISO 8601     | End of the event window — when the market resolves                                                                       |
| `synth_probability_up`          | float \[0,1] | SynthData's estimated probability that the asset price ends higher than `start_price`                                    |
| `synth_outcome`                 | string       | SynthData's predicted outcome based on its probability: `"UP"` or `"DOWN"`                                               |
| `polymarket_probability_up`     | float \[0,1] | Polymarket's implied probability derived from the last trade                                                             |
| `polymarket_outcome`            | string       | Polymarket's current consensus outcome: `"UP"` or `"DOWN"`                                                               |
| `market_probability_up`         | float \[0,1] | Same as `polymarket_probability_up` (for retrocompatibility)                                                             |
| `market_outcome`                | string       | Same as `polymarket_outcome` (for retrocompatibility)                                                                    |
| `current_outcome`               | string       | What the outcome would be if the event resolved right now, based on `current_price` vs `start_price`: `"UP"` or `"DOWN"` |
| `best_bid_price`                | float        | Best bid price in the Polymarket order book (probability units, 0–1)                                                     |
| `best_bid_size`                 | float        | Dollar size available at the best bid                                                                                    |
| `best_ask_price`                | float        | Best ask price in the Polymarket order book (probability units, 0–1)                                                     |
| `best_ask_size`                 | float        | Dollar size available at the best ask                                                                                    |
| `polymarket_last_trade_price`   | float        | Price of the most recent trade executed on Polymarket                                                                    |
| `polymarket_last_trade_time`    | ISO 8601     | Timestamp of the most recent Polymarket trade                                                                            |
| `polymarket_last_trade_outcome` | string       | Outcome side of the most recent trade: `"UP"` or `"DOWN"`                                                                |

### GET /insights/polymarket/up-down/hourly

Synth vs Polymarket probabilities for **hourly** Up/Down contracts. Same response structure as `/insights/polymarket/up-down/daily`.

**Supported assets:** BTC, ETH, SOL, HYPE\
**Default horizon:** 1h

**Response** — same fields as `/insights/polymarket/up-down/daily` above, with `event_start_time` / `event_end_time` spanning one hour.

### GET /insights/polymarket/up-down/15min

Synth vs Polymarket probabilities for **15-minute** Up/Down contracts. Same response structure as `/insights/polymarket/up-down/daily`.

**Supported assets:** BTC, ETH, SOL, HYPE\
**Default horizon:** 1h

**Response** — same fields as `/insights/polymarket/up-down/daily` above, with `event_start_time` / `event_end_time` spanning 15 minutes.

### GET /insights/polymarket/up-down/5min

Synth vs Polymarket probabilities for **5-minute** Up/Down contracts. Same response structure as `/insights/polymarket/up-down/daily`.

**Supported assets:** BTC, ETH, SOL, HYPE\
**Default horizon:** 1h

**Response** — same fields as `/insights/polymarket/up-down/daily` above, with `event_start_time` / `event_end_time` spanning 5 minutes.

### GET /insights/polymarket/range/daily

Returns Synth vs Polymarket probabilities for **daily price range** contracts — whether the asset's closing price falls within a specific numeric range.

**Supported assets:** BTC, ETH, SOL, NVDA, GOOGL, TSLA, AAPL, XRP\
**Default horizon:** 24h

**Response** — array, one object per range market currently active for the requested asset:

```json
[
  {
    "forecast_start_time": "2024-01-02T15:04:05Z",
    "current_time":        "2024-01-02T15:10:00Z",
    "current_price":       97500.0,
    "slug":  "btc-price-range-jan-02-95k-100k",
    "title": "Will BTC be between $95k–$100k?",
    "cmp_type":  "range",
    "ref_prices": [95000.0, 100000.0],
    "event_creation_time": "2024-01-02T00:00:00Z",
    "event_start_time":    "2024-01-02T00:00:00Z",
    "event_end_time":      "2024-01-03T00:00:00Z",
    "synth_probability":    0.44,
    "synth_outcome":        1,
    "polymarket_probability":    0.41,
    "polymarket_outcome":        1,
    "current_outcome":           1,
    "best_bid_price": 0.40,
    "best_bid_size":  120.0,
    "best_ask_price": 0.42,
    "best_ask_size":  95.0,
    "polymarket_last_trade_price":   0.41,
    "polymarket_last_trade_time":    "2024-01-02T15:07:00Z",
    "polymarket_last_trade_outcome": 1
  }
]
```

| Field                           | Type           | Description                                                                                                                                                      |
| ------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `forecast_start_time`           | ISO 8601       | Start time of the Monte Carlo simulation used for this calculation                                                                                               |
| `current_time`                  | ISO 8601       | Wall-clock time of the data snapshot                                                                                                                             |
| `current_price`                 | float          | Asset spot price at query time                                                                                                                                   |
| `slug`                          | string         | Polymarket market identifier slug                                                                                                                                |
| `title`                         | string         | Human-readable market question as shown on Polymarket                                                                                                            |
| `cmp_type`                      | string         | Contract semantics: `"range"` (price between two values), `"above"` (price above a threshold), or `"hit"` (price touches a level at any point during the window) |
| `ref_prices`                    | array of float | Reference price(s) defining the range or threshold. Two values for `"range"`, one value for `"above"` and `"hit"`                                                |
| `event_creation_time`           | ISO 8601       | When the Polymarket market was created                                                                                                                           |
| `event_start_time`              | ISO 8601       | Start of the event window                                                                                                                                        |
| `event_end_time`                | ISO 8601       | End of the event window — when the market resolves                                                                                                               |
| `synth_probability`             | float \[0,1]   | SynthData's estimated probability that the market resolves YES                                                                                                   |
| `synth_outcome`                 | int            | SynthData's predicted outcome: `1` = YES, `0` = NO                                                                                                               |
| `polymarket_probability`        | float \[0,1]   | Polymarket's implied YES probability derived from the last trade                                                                                                 |
| `polymarket_outcome`            | int            | Polymarket's current consensus outcome: `1` = YES, `0` = NO                                                                                                      |
| `current_outcome`               | int            | What the outcome would be if the market resolved right now: `1` = YES, `0` = NO                                                                                  |
| `best_bid_price`                | float or null  | Best bid in the Polymarket order book (probability units); null if no active order book                                                                          |
| `best_bid_size`                 | float or null  | Dollar size at the best bid; null if no active order book                                                                                                        |
| `best_ask_price`                | float or null  | Best ask in the Polymarket order book (probability units); null if no active order book                                                                          |
| `best_ask_size`                 | float or null  | Dollar size at the best ask; null if no active order book                                                                                                        |
| `polymarket_last_trade_price`   | float          | Price of the most recent trade on Polymarket                                                                                                                     |
| `polymarket_last_trade_time`    | ISO 8601       | Timestamp of the most recent Polymarket trade                                                                                                                    |
| `polymarket_last_trade_outcome` | int            | Outcome side of the most recent trade: `1` = YES, `0` = NO                                                                                                       |

### GET /insights/polymarket/above/daily

Returns Synth vs Polymarket probabilities for daily **"asset above $X"** threshold contracts. The response is an array with the same fields as `/insights/polymarket/range`. `cmp_type` will always be `"above"` and `ref_prices` contains a single threshold value.

**Supported assets:** BTC, ETH\
**Default horizon:** 24h

### GET /insights/polymarket/hit/daily

Returns Synth vs Polymarket probabilities for daily **"will asset hit $X"** contracts. The market resolves YES if the asset touches the target price at **any point** during the event window (path-dependent, not just at expiry). The response is an array with the same fields as `/insights/polymarket/range`. `cmp_type` will always be `"hit"`.

**Supported assets:** BTC, ETH, XRP\
**Default horizon:** 24h

## Limitless Insights

These endpoints combine SynthData's probability forecasts with live Limitless prediction market data.

### GET /insights/limitless/daily

Synth vs Limitless probabilities for **daily** up/down contracts.

**Supported assets:** BTC, ETH, SOL, XAU, HYPE, XRP\
**Default horizon:** 24h

**Response** — array, one object per Limitless market active for the requested asset:

```json
[
  {
    "forecast_start_time": "2024-01-02T15:04:05Z",
    "current_time":        "2024-01-02T15:10:00Z",
    "current_price":       97500.0,
    "start_price":         96800.0,
    "slug":  "btc-up-jan-02",
    "event_creation_time": "2024-01-02T00:00:00Z",
    "event_end_time":      "2024-01-03T00:00:00Z",
    "event_outcome_prices": [0.0, 1.0],
    "synth_probability_up":  0.61,
    "synth_outcome":         "UP",
    "market_probability_up": 0.58,
    "market_outcome":        "UP",
    "best_bid_price": 0.57,
    "best_ask_price": 0.59
  }
]
```

| Field                   | Type           | Description                                                                                        |
| ----------------------- | -------------- | -------------------------------------------------------------------------------------------------- |
| `forecast_start_time`   | ISO 8601       | Start time of the Monte Carlo simulation used for this calculation                                 |
| `current_time`          | ISO 8601       | Wall-clock time of the data snapshot                                                               |
| `current_price`         | float          | Asset spot price at query time                                                                     |
| `start_price`           | float          | Asset price at the start of the event period — the reference for determining up/down at resolution |
| `slug`                  | string         | Limitless market identifier slug                                                                   |
| `event_creation_time`   | ISO 8601       | When the Limitless market was created                                                              |
| `event_end_time`        | ISO 8601       | End of the event window — when the market resolves                                                 |
| `event_outcome_prices`  | array of float | Settlement payout prices for each possible outcome (e.g. `[0.0, 1.0]` for binary NO/YES)           |
| `synth_probability_up`  | float \[0,1]   | SynthData's estimated probability that the asset price ends higher than `start_price`              |
| `synth_outcome`         | string         | SynthData's predicted outcome: `"UP"` or `"DOWN"`                                                  |
| `market_probability_up` | float or null  | Limitless market's implied probability; null if no market data is available                        |
| `market_outcome`        | string         | Limitless market consensus outcome: `"UP"` or `"DOWN"`                                             |
| `best_bid_price`        | float or null  | Best bid price on Limitless (probability units, 0–1); null if no active order book                 |
| `best_ask_price`        | float or null  | Best ask price on Limitless (probability units, 0–1); null if no active order book                 |

### GET /insights/limitless/hourly

Synth vs Limitless probabilities for **hourly** contracts. Same response structure as `/insights/limitless/daily`.

**Supported assets:** BTC, ETH, SOL, XAU\
**Default horizon:** 1h

**Response** — same fields as `/insights/limitless/daily` above, with `event_end_time` one hour after `event_creation_time`.

### GET /insights/limitless/15min

Synth vs Limitless probabilities for **15-minute** contracts. Same response structure as `/insights/limitless/daily`.

**Supported assets:** BTC, ETH, SOL\
**Default horizon:** 1h

**Response** — same fields as `/insights/limitless/daily` above, with `event_end_time` 15 minutes after `event_creation_time`.

## Leaderboard Endpoints

The leaderboard ranks miners on the Bittensor subnet by their prediction performance. Two API versions exist: V1 (legacy) and V2 (current).

### GET /leaderboard/latest *(V1, legacy)*

Returns the current leaderboard snapshot with full on-chain metrics.

**Auth:** None\
**Query parameters:** None

**Response** — array, one object per miner:

```json
[
  {
    "updated_at":    "2024-01-02T15:04:05Z",
    "neuron_uid":    42,
    "coldkey":       "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":    "1.2.3.4",
    "incentive":     0.0031,
    "emission":      0.00012,
    "stake":         10500.0,
    "rank":          0.98,
    "pruning_score": 0.87
  }
]
```

| Field           | Type         | Description                                                                                         |
| --------------- | ------------ | --------------------------------------------------------------------------------------------------- |
| `updated_at`    | ISO 8601     | Timestamp of the last data update recorded for this miner                                           |
| `neuron_uid`    | int          | Miner's UID on the Bittensor subnet — unique slot identifier                                        |
| `coldkey`       | string       | Miner's Bittensor coldkey (SS58 wallet address)                                                     |
| `ip_address`    | string       | IP address the miner is registered under                                                            |
| `incentive`     | float \[0,1] | Bittensor incentive score — proportion of total subnet incentive flowing to this miner              |
| `emission`      | float        | TAO token emission rate for this miner per block                                                    |
| `stake`         | float        | Amount of TAO staked on this miner by nominators                                                    |
| `rank`          | float \[0,1] | Bittensor rank score — relative standing on the subnet                                              |
| `pruning_score` | float \[0,1] | Pruning score; miners with consistently low scores are eligible to be replaced by new registrations |

### GET /leaderboard/historical *(V1, legacy)*

Returns historical leaderboard snapshots between two timestamps.

**Auth:** None\
**Query parameters:**

| Parameter    | Type   | Required | Description                                                    |
| ------------ | ------ | -------- | -------------------------------------------------------------- |
| `start_time` | string | Yes      | ISO 8601 timestamp to start from (e.g. `2025-02-03T10:19:04Z`) |
| `end_time`   | string | Yes      | ISO 8601 timestamp to end at                                   |

**Response** — array of snapshots in the requested window. Each item has the same fields as `/leaderboard/latest`:

```json
[
  {
    "updated_at":    "2024-01-02T12:00:00Z",
    "neuron_uid":    42,
    "coldkey":       "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":    "1.2.3.4",
    "incentive":     0.0029,
    "emission":      0.00011,
    "stake":         10200.0,
    "rank":          0.97,
    "pruning_score": 0.85
  }
]
```

| Field           | Type         | Description                                                     |
| --------------- | ------------ | --------------------------------------------------------------- |
| `updated_at`    | ISO 8601     | Timestamp of this historical snapshot                           |
| `neuron_uid`    | int          | Miner's UID on the Bittensor subnet                             |
| `coldkey`       | string       | Miner's Bittensor coldkey (SS58 wallet address)                 |
| `ip_address`    | string       | IP address the miner was registered under at this point in time |
| `incentive`     | float \[0,1] | Bittensor incentive score at this snapshot                      |
| `emission`      | float        | TAO emission rate at this snapshot                              |
| `stake`         | float        | TAO staked on this miner at this snapshot                       |
| `rank`          | float \[0,1] | Bittensor rank score at this snapshot                           |
| `pruning_score` | float \[0,1] | Pruning score at this snapshot                                  |

### GET /v2/leaderboard/latest

Returns the current leaderboard with prediction-reward-focused metrics. Supports filtering by prompt type (24h vs 1h horizon).

**Auth:** None\
**Query parameters:**

| Parameter     | Type   | Required | Default | Description                                                                  |
| ------------- | ------ | -------- | ------- | ---------------------------------------------------------------------------- |
| `prompt_name` | string | No       | `"low"` | `"low"` for the 24h prediction prompt; `"high"` for the 1h prediction prompt |

**Response** — array, one object per miner:

```json
[
  {
    "updated_at":  "2024-01-02T15:04:05Z",
    "neuron_uid":  42,
    "coldkey":     "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":  "1.2.3.4",
    "rewards":     0.0041
  }
]
```

| Field        | Type     | Description                                                                                        |
| ------------ | -------- | -------------------------------------------------------------------------------------------------- |
| `updated_at` | ISO 8601 | Timestamp of the last data update recorded for this miner                                          |
| `neuron_uid` | int      | Miner's UID on the Bittensor subnet — unique slot identifier                                       |
| `coldkey`    | string   | Miner's Bittensor coldkey (SS58 wallet address)                                                    |
| `ip_address` | string   | IP address the miner is registered under                                                           |
| `rewards`    | float    | Prediction reward score for the selected prompt type — higher means better forecasting performance |

### GET /v2/leaderboard/historical

Returns historical V2 leaderboard snapshots between two timestamps, filtered by prompt type.

**Auth:** None\
**Query parameters:**

| Parameter     | Type   | Required | Default | Description                                    |
| ------------- | ------ | -------- | ------- | ---------------------------------------------- |
| `start_time`  | string | Yes      | —       | ISO 8601 timestamp to start from               |
| `end_time`    | string | Yes      | —       | ISO 8601 timestamp to end at                   |
| `prompt_name` | string | No       | `"low"` | `"low"` for 24h prompt; `"high"` for 1h prompt |

**Response** — array of snapshots in the requested window. Each item has the same fields as `/v2/leaderboard/latest`:

```json
[
  {
    "updated_at":  "2024-01-02T12:00:00Z",
    "neuron_uid":  42,
    "coldkey":     "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":  "1.2.3.4",
    "rewards":     0.0038
  }
]
```

| Field        | Type     | Description                                                           |
| ------------ | -------- | --------------------------------------------------------------------- |
| `updated_at` | ISO 8601 | Timestamp of this historical snapshot                                 |
| `neuron_uid` | int      | Miner's UID on the Bittensor subnet                                   |
| `coldkey`    | string   | Miner's Bittensor coldkey (SS58 wallet address)                       |
| `ip_address` | string   | IP address the miner was registered under at this point in time       |
| `rewards`    | float    | Prediction reward score at this snapshot for the selected prompt type |

## Meta-Leaderboard Endpoints

The meta-leaderboard aggregates miner performance over a rolling window of days rather than a single snapshot. This smooths out noise and provides a more stable ranking.

### GET /meta-leaderboard/latest *(V1, legacy)*

Returns the current meta-leaderboard, aggregating on-chain metrics over the past N days.

**Auth:** None\
**Query parameters:**

| Parameter | Type | Required | Default | Description                           |
| --------- | ---- | -------- | ------- | ------------------------------------- |
| `days`    | int  | No       | `14`    | Number of past days to aggregate over |

**Response** — array, one object per miner. Same fields as `/leaderboard/latest`:

```json
[
  {
    "updated_at":    "2024-01-02T15:04:05Z",
    "neuron_uid":    42,
    "coldkey":       "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":    "1.2.3.4",
    "incentive":     0.0031,
    "emission":      0.00012,
    "stake":         10500.0,
    "rank":          0.98,
    "pruning_score": 0.87
  }
]
```

| Field           | Type         | Description                                                 |
| --------------- | ------------ | ----------------------------------------------------------- |
| `updated_at`    | ISO 8601     | Timestamp of the last data update for this miner            |
| `neuron_uid`    | int          | Miner's UID on the Bittensor subnet                         |
| `coldkey`       | string       | Miner's Bittensor coldkey (SS58 wallet address)             |
| `ip_address`    | string       | IP address the miner is registered under                    |
| `incentive`     | float \[0,1] | Aggregated Bittensor incentive score over the `days` window |
| `emission`      | float        | Aggregated TAO emission over the `days` window              |
| `stake`         | float        | TAO staked on this miner                                    |
| `rank`          | float \[0,1] | Aggregated rank score over the `days` window                |
| `pruning_score` | float \[0,1] | Aggregated pruning score over the `days` window             |

### GET /meta-leaderboard/historical *(V1, legacy)*

Returns historical meta-leaderboard snapshots starting from a given point in time.

**Auth:** None\
**Query parameters:**

| Parameter    | Type   | Required | Default | Description                                       |
| ------------ | ------ | -------- | ------- | ------------------------------------------------- |
| `start_time` | string | Yes      | —       | ISO 8601 timestamp to start from                  |
| `days`       | int    | No       | `14`    | Number of days of aggregation window per snapshot |

**Response** — array of historical snapshots. Each item has the same fields as `/meta-leaderboard/latest`:

```json
[
  {
    "updated_at":    "2024-01-01T15:04:05Z",
    "neuron_uid":    42,
    "coldkey":       "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":    "1.2.3.4",
    "incentive":     0.0028,
    "emission":      0.00010,
    "stake":         10100.0,
    "rank":          0.96,
    "pruning_score": 0.84
  }
]
```

| Field           | Type         | Description                                                               |
| --------------- | ------------ | ------------------------------------------------------------------------- |
| `updated_at`    | ISO 8601     | Timestamp of this historical snapshot                                     |
| `neuron_uid`    | int          | Miner's UID on the Bittensor subnet                                       |
| `coldkey`       | string       | Miner's Bittensor coldkey (SS58 wallet address)                           |
| `ip_address`    | string       | IP address the miner was registered under at this point in time           |
| `incentive`     | float \[0,1] | Aggregated incentive score over the `days` window ending at this snapshot |
| `emission`      | float        | Aggregated emission over the `days` window ending at this snapshot        |
| `stake`         | float        | TAO staked at this snapshot                                               |
| `rank`          | float \[0,1] | Aggregated rank over the `days` window ending at this snapshot            |
| `pruning_score` | float \[0,1] | Aggregated pruning score over the `days` window ending at this snapshot   |

### GET /v2/meta-leaderboard/latest

Returns the current V2 meta-leaderboard, aggregating prediction rewards over a rolling window.

**Auth:** None\
**Query parameters:**

| Parameter     | Type   | Required | Default                                 | Description                                                                                            |
| ------------- | ------ | -------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| `days`        | int    | No       | `14` (or `6` when `prompt_name="high"`) | Number of past days to aggregate over. Defaults to 6 for the 1h prompt because its history is shorter. |
| `prompt_name` | string | No       | `"low"`                                 | `"low"` for 24h prediction prompt; `"high"` for 1h prediction prompt                                   |

**Response** — array, one object per miner:

```json
[
  {
    "updated_at":  "2024-01-02T15:04:05Z",
    "neuron_uid":  42,
    "coldkey":     "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":  "1.2.3.4",
    "rewards":     0.0041
  }
]
```

| Field        | Type     | Description                                                                            |
| ------------ | -------- | -------------------------------------------------------------------------------------- |
| `updated_at` | ISO 8601 | Timestamp of the last data update for this miner                                       |
| `neuron_uid` | int      | Miner's UID on the Bittensor subnet                                                    |
| `coldkey`    | string   | Miner's Bittensor coldkey (SS58 wallet address)                                        |
| `ip_address` | string   | IP address the miner is registered under                                               |
| `rewards`    | float    | Aggregated prediction reward score over the `days` window for the selected prompt type |

### GET /v2/meta-leaderboard/historical

Returns historical V2 meta-leaderboard snapshots starting from a given point in time.

**Auth:** None\
**Query parameters:**

| Parameter     | Type   | Required | Default                                 | Description                                    |
| ------------- | ------ | -------- | --------------------------------------- | ---------------------------------------------- |
| `start_time`  | string | Yes      | —                                       | ISO 8601 timestamp to start from               |
| `days`        | int    | No       | `14` (or `6` when `prompt_name="high"`) | Aggregation window in days per snapshot        |
| `prompt_name` | string | No       | `"low"`                                 | `"low"` for 24h prompt; `"high"` for 1h prompt |

**Response** — array of historical snapshots. Each item has the same fields as `/v2/meta-leaderboard/latest`:

```json
[
  {
    "updated_at":  "2024-01-01T15:04:05Z",
    "neuron_uid":  42,
    "coldkey":     "5GrwvaEF5L8zXAVGmSHFPewbkMCKuDsQKBLRsR5L9v9G",
    "ip_address":  "1.2.3.4",
    "rewards":     0.0035
  }
]
```

| Field        | Type     | Description                                                                       |
| ------------ | -------- | --------------------------------------------------------------------------------- |
| `updated_at` | ISO 8601 | Timestamp of this historical snapshot                                             |
| `neuron_uid` | int      | Miner's UID on the Bittensor subnet                                               |
| `coldkey`    | string   | Miner's Bittensor coldkey (SS58 wallet address)                                   |
| `ip_address` | string   | IP address the miner was registered under at this point in time                   |
| `rewards`    | float    | Aggregated prediction reward score over the `days` window ending at this snapshot |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.synthdata.co/rest-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
