API REFERENCE

Build with
PRUVIQ data.

Free REST API for strategy backtesting, market data, and OHLCV candles. No API key required. Rate limit: 30 requests/minute.


Base URL
https://api.pruviq.com
Rate Limit

30 requests / minute per IP

Authentication

None required (public API)

Response Format

JSON

CORS

All origins allowed

Interactive Docs

Full Swagger UI with try-it-out:

/docs | /redoc

Market Data

GET /health Try it →

Health check. Returns API status, loaded coins count, and uptime.

cURL
curl https://api.pruviq.com/health
Response Example
{
  "status": "ok",
  "version": "0.3.0",
  "coins_loaded": 572,
  "uptime_seconds": 415785.5
}
GET /market Try it →

Market overview: BTC/ETH prices, Fear & Greed Index, BTC dominance, top gainers/losers, extreme funding rates.

cURL
curl https://api.pruviq.com/market
Response Example
{
  "btc_price": 66658.4,
  "btc_change_24h": -0.29,
  "eth_price": 2054.17,
  "eth_change_24h": -0.92,
  "fear_greed_index": 9,
  "fear_greed_label": "Extreme Fear",
  "total_market_cap_b": 2377.4,
  "btc_dominance": 56.1,
  "total_volume_24h_b": 93.5,
  "top_gainers": [ ... ],
  "top_losers": [ ... ],
  "extreme_funding": [ ... ]
}
GET /news Try it →

Aggregated crypto news from multiple RSS sources. Updated regularly.

cURL
curl https://api.pruviq.com/news
Response Example
[
  {
    "title": "Bitcoin drops below $67K amid macro uncertainty",
    "source": "CoinDesk",
    "url": "https://...",
    "published": "2026-04-03T10:30:00Z"
  },
  ...
]
GET /macro Try it →

Macro economic indicators, crypto derivatives data, and upcoming economic events.

cURL
curl https://api.pruviq.com/macro
Response Example
{
  "dxy": { "value": 104.2, "change": -0.3 },
  "us10y": { "value": 4.25, "change": 0.02 },
  "sp500": { "value": 5280, "change": -1.2 },
  "open_interest": { ... },
  "funding_rates": { ... },
  "events": [ ... ]
}

Data

GET /coins Try it →

List all available coins with data range and row count.

cURL
curl https://api.pruviq.com/coins
Response Example
[
  {
    "symbol": "BTCUSDT",
    "rows": 19800,
    "date_from": "2023-12-30",
    "date_to": "2026-04-03"
  },
  {
    "symbol": "ETHUSDT",
    "rows": 19800,
    "date_from": "2023-12-30",
    "date_to": "2026-04-03"
  },
  ... // 572 coins total
]
GET /coins/stats Try it →

Pre-computed strategy stats for all coins. Includes price, volume, win rate, profit factor.

cURL
curl https://api.pruviq.com/coins/stats
Response Example
[
  {
    "symbol": "BTCUSDT",
    "price": 66658.4,
    "volume_24h": 28500000000,
    "win_rate": 68.6,
    "profit_factor": 2.22,
    "total_trades": 142
  },
  ...
]
GET /ohlcv/{symbol} Try it →

OHLCV candle data with technical indicators (Bollinger Bands, EMA, Volume Ratio).

Params: symbol (path, required), limit (query, default: 3000)
cURL
curl "https://api.pruviq.com/ohlcv/BTCUSDT?limit=168"
Response Example
{
  "symbol": "BTCUSDT",
  "timeframe": "1H",
  "total_bars": 168,
  "data": [
    {
      "t": 1775178000,
      "o": 66761.8,
      "h": 66881.3,
      "l": 66450.0,
      "c": 66599.0,
      "v": 4087.42,
      "bb_upper": 67266.78,
      "bb_lower": 66077.55,
      "bb_mid": 66672.17,
      "ema20": 66865.21,
      "ema50": 67163.85,
      "vol_ratio": 0.9
    },
    ...
  ]
}
GET /strategies Try it →

List all available strategies with default parameters and status.

cURL
curl https://api.pruviq.com/strategies
Response Example
[
  {
    "id": "bb-squeeze-short",
    "name": "BB Squeeze SHORT",
    "description": "Bollinger Band squeeze breakout. Enters short on volatility expansion after contraction.",
    "default_params": {
      "sl_pct": 10.0,
      "tp_pct": 8.0,
      "max_bars": 48,
      "direction": "short",
      "status": "verified"
    }
  },
  ...
]
GET /indicators Try it →

List available technical indicators for Strategy Builder with fields and default parameters.

cURL
curl https://api.pruviq.com/indicators
Response Example
{
  "bb": {
    "name": "Bollinger Bands",
    "fields": ["bb_upper", "bb_lower", "bb_mid", "bb_width", "is_squeeze", ...],
    "default_params": { "period": 20, "std": 2.0 }
  },
  "ema": {
    "name": "EMA Trend",
    "fields": ["ema_fast", "ema_slow", "uptrend", "downtrend"],
    "default_params": { "fast": 9, "slow": 21 }
  },
  ...
}

Rankings & Signals

GET /rankings/daily Try it →

Today's top-performing strategies ranked by profit factor. Updated daily at 00:30 UTC.

cURL
curl https://api.pruviq.com/rankings/daily
Response Example
{
  "date": "2026-04-03",
  "generated_at": "2026-04-03T00:27:22Z",
  "period": "30d",
  "group": "top50",
  "top3": [
    {
      "rank": 1,
      "name_en": "Keltner Squeeze LONG 6H",
      "strategy": "keltner-squeeze",
      "direction": "long",
      "win_rate": 54.17,
      "profit_factor": 1.78,
      "total_return": 0.58,
      "total_trades": 24,
      "sharpe": 3.19,
      "max_drawdown": 0.34,
      "rank_change": 0,
      "streak": 3
    },
    ...
  ]
}
GET /signals/live Try it →

Real-time trading signals from all active strategies. Includes entry price, direction, SL/TP.

cURL
curl https://api.pruviq.com/signals/live
Response Example
[
  {
    "strategy": "ma-cross",
    "strategy_name": "MA Cross",
    "coin": "ETHUSDT",
    "direction": "short",
    "signal_time": "2026-04-03T02:00:00",
    "entry_price": 2049.44,
    "status": "verified",
    "sl_pct": 5,
    "tp_pct": 10
  },
  {
    "strategy": "heikin-ashi",
    "strategy_name": "Heikin Ashi Trend",
    "coin": "BEAMXUSDT",
    "direction": "long",
    "signal_time": "2026-04-03T02:00:00",
    "entry_price": 0.00171,
    "status": "research",
    "sl_pct": 7,
    "tp_pct": 8
  },
  ...
]
GET /hot-strategies Try it →

Hot strategies ranked by recent 30-day performance across top 50 coins.

cURL
curl https://api.pruviq.com/hot-strategies
Response Example
{
  "strategies": [
    {
      "strategy_id": "supertrend",
      "strategy_name": "SuperTrend",
      "direction": "short",
      "status": "research",
      "period": "30d",
      "profit_factor": 4.11,
      "win_rate": 60.0,
      "total_trades": 5,
      "total_return_pct": 5.9
    },
    ...
  ]
}

Simulation

POST /simulate

Run a strategy simulation across multiple coins. Returns aggregate performance metrics and equity curve.

Request Body
{
  "strategy": "bb-squeeze-short",
  "sl_pct": 10.0,
  "tp_pct": 8.0,
  "max_bars": 48,
  "market_type": "futures",
  "top_n": 50
}
cURL
curl -X POST https://api.pruviq.com/simulate \
  -H "Content-Type: application/json" \
  -d '{"strategy":"bb-squeeze-short","sl_pct":10,"tp_pct":8,"top_n":50}'
Response Example
{
  "strategy": "bb-squeeze-short",
  "direction": "short",
  "total_trades": 1247,
  "win_rate": 68.6,
  "profit_factor": 2.22,
  "total_return_pct": 142.5,
  "sharpe_ratio": 3.45,
  "max_drawdown_pct": 8.2,
  "avg_bars_held": 12.3,
  "equity_curve": [ ... ]
}
POST /simulate/coin

Run simulation on a single coin. Returns individual trade details with entry/exit prices.

Request Body
{
  "symbol": "BTCUSDT",
  "sl_pct": 10.0,
  "tp_pct": 8.0,
  "max_bars": 48,
  "direction": "short",
  "market_type": "futures"
}
cURL
curl -X POST https://api.pruviq.com/simulate/coin \
  -H "Content-Type: application/json" \
  -d '{"symbol":"BTCUSDT","sl_pct":10,"tp_pct":8,"max_bars":48,"direction":"short","market_type":"futures"}'
Response Example
{
  "symbol": "BTCUSDT",
  "total_trades": 42,
  "win_rate": 71.4,
  "profit_factor": 2.85,
  "trades": [
    {
      "entry_time": "2025-06-15T14:00:00",
      "exit_time": "2025-06-16T02:00:00",
      "entry_price": 67500.0,
      "exit_price": 62100.0,
      "pnl_pct": 8.0,
      "result": "tp"
    },
    ...
  ]
}
POST /simulate/compare

Compare all strategies under identical conditions (same SL/TP, same coins).

Note: Long-running backtests (large top_n or wide date ranges) may require async processing. To avoid timeouts, use a smaller top_n (e.g., 50), narrow the date range, or split into multiple smaller requests.
Request Body
{
  "sl_pct": 10.0,
  "tp_pct": 8.0,
  "max_bars": 48,
  "top_n": 50
}
cURL
curl -X POST https://api.pruviq.com/simulate/compare \
  -H "Content-Type: application/json" \
  -d '{"sl_pct":10,"tp_pct":8,"max_bars":48,"top_n":50}'
Response Example
{
  "params": { "sl_pct": 10.0, "tp_pct": 8.0, "top_n": 50 },
  "results": [
    {
      "strategy": "bb-squeeze-short",
      "win_rate": 68.6,
      "profit_factor": 2.22,
      "total_trades": 1247,
      "sharpe": 3.45
    },
    {
      "strategy": "ma-cross-short",
      "win_rate": 55.2,
      "profit_factor": 1.45,
      "total_trades": 890,
      "sharpe": 1.82
    },
    ...
  ]
}
POST /simulate/validate

Validate strategy configuration before running a full simulation.

Request Body
{
  "strategy": "bb-squeeze-short",
  "sl_pct": 10.0,
  "tp_pct": 8.0
}
cURL
curl -X POST https://api.pruviq.com/simulate/validate \
  -H "Content-Type: application/json" \
  -d '{"strategy":"bb-squeeze-short","sl_pct":10,"tp_pct":8}'
Response Example
{
  "valid": true,
  "strategy": "bb-squeeze-short",
  "warnings": []
}

Strategy Builder

POST /backtest

Run a custom strategy backtest using the condition engine. Full Strategy Builder support.

Request Body
{
  "name": "My Strategy",
  "direction": "short",
  "indicators": { "bb": {}, "volume": {} },
  "entry": {
    "type": "AND",
    "conditions": [
      { "field": "bb_squeeze", "op": "==", "value_bool": true },
      { "field": "vol_ratio", "op": ">", "value": 2.0 }
    ]
  },
  "sl_pct": 10.0,
  "tp_pct": 8.0,
  "max_bars": 48,
  "top_n": 50
}
cURL
curl -X POST https://api.pruviq.com/backtest \
  -H "Content-Type: application/json" \
  -d '{"name":"My Strategy","direction":"short","indicators":{"bb":{},"volume":{}},"entry":{"type":"AND","conditions":[{"field":"bb_squeeze","op":"==","value_bool":true},{"field":"vol_ratio","op":">","value":2.0}]},"sl_pct":10,"tp_pct":8,"top_n":50}'
Response Example
{
  "name": "My Strategy",
  "direction": "short",
  "total_trades": 856,
  "win_rate": 62.3,
  "profit_factor": 1.89,
  "sharpe_ratio": 2.67,
  "max_drawdown_pct": 11.4,
  "equity_curve": [ ... ],
  "per_coin": [ ... ]
}
GET /builder/presets Try it →

List preset strategy templates for Strategy Builder.

cURL
curl https://api.pruviq.com/builder/presets
Response Example
[
  {
    "id": "bb-squeeze-short",
    "name": "BB Squeeze SHORT",
    "direction": "short",
    "indicators": ["ema", "bb", "volume"],
    "conditions_count": 7,
    "sl_pct": 10.0,
    "tp_pct": 8.0
  },
  {
    "id": "bb-squeeze-long",
    "name": "BB Squeeze LONG",
    "direction": "long",
    "indicators": ["ema", "bb", "volume"],
    "conditions_count": 7,
    "sl_pct": 7.0,
    "tp_pct": 6.0
  },
  ...
]
GET /builder/presets/{preset_id} Try it →

Get full JSON definition of a preset strategy for editing.

Params: preset_id (path, required)
cURL
curl https://api.pruviq.com/builder/presets/bb-squeeze-short
Response Example
{
  "id": "bb-squeeze-short",
  "name": "BB Squeeze SHORT",
  "direction": "short",
  "indicators": { "bb": {}, "ema": {}, "volume": {} },
  "entry": {
    "type": "AND",
    "conditions": [
      { "field": "bb_squeeze", "op": "==", "value_bool": true },
      { "field": "vol_ratio", "op": ">", "value": 2.0 },
      ...
    ]
  },
  "sl_pct": 10.0,
  "tp_pct": 8.0,
  "max_bars": 48
}
GET /builder/indicators Try it →

List available technical indicators for Strategy Builder with fields and default parameters.

cURL
curl https://api.pruviq.com/builder/indicators
Response Example
{
  "bb": {
    "name": "Bollinger Bands",
    "fields": ["bb_upper", "bb_lower", "bb_mid", "bb_width", "is_squeeze", ...],
    "default_params": { "period": 20, "std": 2.0 }
  },
  ...
}

Quick Start

Get started in seconds. No setup required.

Python
import requests

# Get market overview
market = requests.get("https://api.pruviq.com/market").json()
print(f"BTC: {market['btc_price']:,.0f{'}'}")
print(f"Fear & Greed: {'{'}market['fear_greed_index']{'}'}")

# Simulate BB Squeeze SHORT on top 50 coins
result = requests.post("https://api.pruviq.com/simulate", json={
    "strategy": "bb-squeeze-short",
    "sl_pct": 10.0,
    "tp_pct": 8.0,
    "top_n": 50
}).json()

print(f"Win Rate: {'{'}result['win_rate']{'}'} %")
print(f"Profit Factor: {'{'}result['profit_factor']{'}'}")
print(f"Total Trades: {'{'}result['total_trades']{'}'}")

# Get OHLCV data for BTCUSDT (last 168 bars = 7 days)
ohlcv = requests.get("https://api.pruviq.com/ohlcv/BTCUSDT", params={"limit": 168}).json()
print(f"Bars: {'{'}ohlcv['total_bars']{'}'}")
cURL
# Health check
curl https://api.pruviq.com/health

# Market overview
curl https://api.pruviq.com/market

# OHLCV data (last 168 bars)
curl "https://api.pruviq.com/ohlcv/ETHUSDT?limit=168"

# Today's strategy rankings
curl https://api.pruviq.com/rankings/daily

# Live signals
curl https://api.pruviq.com/signals/live

# Run simulation
curl -X POST https://api.pruviq.com/simulate \
  -H "Content-Type: application/json" \
  -d '{"strategy":"bb-squeeze-short","sl_pct":10,"tp_pct":8,"top_n":50}'
JavaScript
// Fetch all available strategies
const strategies = await fetch("https://api.pruviq.com/strategies").then(r => r.json());
console.log(strategies.map(s => s.name));

// Get today's rankings
const rankings = await fetch("https://api.pruviq.com/rankings/daily").then(r => r.json());
console.log(`#1: ${rankings.top3[0].name_en} (PF: ${rankings.top3[0].profit_factor})`);

// Simulate single coin
const sim = await fetch("https://api.pruviq.com/simulate/coin", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    symbol: "SOLUSDT",
    sl_pct: 10, tp_pct: 8, max_bars: 48,
    direction: "short", market_type: "futures"
  })
}).then(r => r.json());

console.log(`Trades: ${sim.total_trades}, WR: ${sim.win_rate}%`);

Coming Soon

Python SDK and WebSocket feed are in development. Follow us on X for updates.