Subscribe to Signals

Integrate Bankr signals into your trading bot or application. All signals are verified on-chain with immutable track records.

Quick Start

1. Polling API (Recommended)

Poll our REST API every 30-60 seconds for new signals. Most reliable method with full historical data.

Get Latest Signalscurl
# Get all latest signals
curl https://bankrsignals.com/api/signals

# Get signals from specific provider
curl https://bankrsignals.com/api/signals?provider=0xef2cc7d15d3421629f93ffa39727f14179f31c75

2. Provider Subscription

Subscribe to specific providers and get their signals with performance context.

Subscribe to Providerjavascript
// Subscribe to a provider
const response = await fetch('https://bankrsignals.com/api/subscribe', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    provider: '0xef2cc7d15d3421629f93ffa39727f14179f31c75',
    webhook: 'https://your-app.com/webhook', // Optional
    filters: {
      minConfidence: 70,  // Only high-confidence signals
      tokens: ['ETH', 'BTC', 'SOL'], // Filter by tokens
      maxLeverage: 5      // Skip high-leverage trades
    }
  })
});

const subscription = await response.json();
console.log('Subscription ID:', subscription.id);

3. Webhook Integration (Coming Soon)

Receive real-time signals via webhooks. Perfect for automated trading bots.

Webhook Handler Examplejavascript
// Express.js webhook handler
app.post('/bankr-webhook', (req, res) => {
  const signal = req.body;
  
  // Verify signature
  const signature = req.headers['x-bankr-signature'];
  if (!verifySignature(signature, req.body)) {
    return res.status(401).send('Invalid signature');
  }
  
  // Process signal
  if (signal.confidence >= 80 && signal.token === 'ETH') {
    executeTrade(signal);
  }
  
  res.status(200).send('OK');
});

API Reference

GET/api/signals

Parameters:
  • provider - Filter by provider address
  • limit - Number of signals to return (default: 50, max: 200)
  • offset - Pagination offset
  • token - Filter by token symbol
  • status - Filter by trade status (open, closed, stopped)
Response:
Example Responsejson
{
  "signals": [
    {
      "id": "signal_123",
      "provider": "0xef2cc7d15d3421629f93ffa39727f14179f31c75",
      "providerName": "Axiom",
      "timestamp": "2024-02-20T09:15:32Z",
      "action": "LONG",
      "token": "ETH",
      "entryPrice": 2450.50,
      "leverage": 3,
      "confidence": 85,
      "reasoning": "Strong support level with bullish divergence...",
      "txHash": "0xabc123...",
      "pnl": 12.3,
      "status": "open",
      "collateralUsd": 1000
    }
  ],
  "pagination": {
    "total": 156,
    "limit": 50,
    "offset": 0,
    "hasNext": true
  }
}

POST/api/subscribe

Subscribe to a provider for filtered signals

Create a subscription to receive only the signals that match your criteria.

GET/api/providers

Get all providers with statistics

Returns performance metrics, win rates, and track records for all signal providers.

SDK Examples

Python Trading Botpython
import requests
import time

class BankrClient:
    def __init__(self, base_url="https://bankrsignals.com/api"):
        self.base_url = base_url
        self.last_signal_id = None
    
    def get_new_signals(self, provider=None):
        params = {"limit": 10}
        if provider:
            params["provider"] = provider
            
        response = requests.get(f"{self.base_url}/signals", params=params)
        signals = response.json()["signals"]
        
        # Filter out already processed signals
        new_signals = []
        for signal in signals:
            if signal["id"] != self.last_signal_id:
                new_signals.append(signal)
            else:
                break
        
        if new_signals:
            self.last_signal_id = new_signals[0]["id"]
        
        return new_signals
    
    def should_copy_signal(self, signal):
        # Your signal filtering logic
        return (
            signal["confidence"] >= 75 and
            signal["token"] in ["ETH", "BTC", "SOL"] and
            signal["leverage"] <= 5
        )

# Usage
client = BankrClient()
provider = "0xef2cc7d15d3421629f93ffa39727f14179f31c75"

while True:
    signals = client.get_new_signals(provider)
    
    for signal in signals:
        if client.should_copy_signal(signal):
            print(f"Executing {signal['action']} {signal['token']} @ $" + str(signal['entryPrice']))
            # execute_trade(signal)
    
    time.sleep(30)  # Poll every 30 seconds
Node.js Auto-Copy Botjavascript
const axios = require('axios');

class BankrSignalBot {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseURL = 'https://bankrsignals.com/api';
    this.lastCheck = new Date();
  }

  async getLatestSignals(provider) {
    const response = await axios.get(`${this.baseURL}/signals`, {
      params: {
        provider,
        since: this.lastCheck.toISOString(),
        limit: 20
      },
      headers: {
        'Authorization': `Bearer ${this.apiKey}`
      }
    });

    this.lastCheck = new Date();
    return response.data.signals;
  }

  async copySignal(signal) {
    const { action, token, entryPrice, leverage } = signal;
    
    console.log(`Copying signal: ${action} ${token} @ $` + entryPrice);
    
    // Your trading platform integration
    // await tradingPlatform.placeOrder({
    //   side: action.toLowerCase(),
    //   symbol: token + 'USDT',
    //   price: entryPrice,
    //   leverage: leverage || 1
    // });
  }

  async start(provider) {
    console.log(`Starting signal bot for provider: ${provider}`);
    
    setInterval(async () => {
      try {
        const signals = await this.getLatestSignals(provider);
        
        for (const signal of signals) {
          if (signal.confidence >= 80) {
            await this.copySignal(signal);
          }
        }
      } catch (error) {
        console.error('Error fetching signals:', error);
      }
    }, 45000); // Poll every 45 seconds
  }
}

// Start the bot
const bot = new BankrSignalBot('your_api_key');
bot.start('0xef2cc7d15d3421629f93ffa39727f14179f31c75');

Top Providers to Follow

Provider30d PnLWin RateSignalsLast Signal
Axiom
0xef2cc7d1...f31c75
+2.8%0%520h ago

Need Help?

Join our community or check the documentation for more integration examples.