Forex & Market Data Gateway

Open-access REST API, SignalR Hub & JSON WebSocket running on your custom domain.

Your Active Base URL https://api.upirecharge.online

Live Market Feed Verification

Connecting to https://api.upirecharge.online/hubs/tick...
EURUSD
—
Loading...
XAUUSD
—
Loading...
BTCUSD
—
Loading...
GBPUSD
—
Loading...

Key Endpoints

Endpoint Purpose
GET /api/latest?symbols=EURUSD,XAUUSD Batch latest quotes (supports both repeated symbols= and comma-separated list)
GET /api/{symbol} Single instrument quote with marketState, mid, bid, ask
GET /api/{symbol}/ohlc?interval=1h&limit=50 OHLCV candlestick bars (1m, 5m, 15m, 30m, 1h, 4h, 1d)
GET /api/symbols?quotedWithinDays=7 Active instrument catalogue resilient across weekends
GET /api/calendar?importance=high Economic calendar releases with actual, forecast & previous values
GET /api/market/summary Market movers, gainers, losers & active count
https://api.upirecharge.online/hubs/tick ASP.NET SignalR real-time hub (Subscribe, ReceiveTick)
wss://api.upirecharge.online/ws?symbols=EURUSD,XAUUSD Lightweight native JSON WebSocket stream (no SDK needed)

Quick Integration Examples

1. JavaScript (REST Seed + SignalR Stream)

import * as signalR from '@microsoft/signalr';

const BASE = 'https://api.upirecharge.online';
const SYMBOLS = ['EURUSD', 'XAUUSD', 'BTCUSD'];

const seed = await fetch(
  `${BASE}/api/latest?symbols=${SYMBOLS.join(',')}`
).then(r => r.json());

const conn = new signalR.HubConnectionBuilder()
  .withUrl(`${BASE}/hubs/tick`)
  .withAutomaticReconnect()
  .build();

conn.on('ReceiveTick', (tick) => {
  console.log(tick.symbol, tick.mid);
});

await conn.start();
await conn.invoke('Subscribe', SYMBOLS);

2. Plain WebSocket (Zero Dependencies — Web / Flutter / Python)

const ws = new WebSocket(
  'wss://api.upirecharge.online/ws?symbols=EURUSD,XAUUSD,BTCUSD'
);

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type === 'tick') {
    console.log(msg.data.symbol, msg.data.mid);
  }
};