API Reference
All endpoints return JSON. No authentication needed for public endpoints. Pro plan removes rate limits and extends history to 7 days. Suitable for trading bots, AI agents, and dashboard integrations.
Quick start
# Get the latest BUY signals curl "https://trady.app/api/signals?action=BUY" # Get BTC signals above 75% confidence curl "https://trady.app/api/signals?ticker=BTC-USD&minConfidence=75" # Get one signal per ticker (snapshot) curl "https://trady.app/api/signals/latest" # With API key (Pro) curl "https://trady.app/api/signals?limit=50" \ -H "Authorization: Bearer trady_live_your_key_here"
Authentication
Public endpoints work without authentication but return at most 3 results. Pro accounts get the full feed with 7-day history and raw indicator data.
Option 1 — API key (recommended for bots): Generate a key from your dashboard → Settings → API key. Pass it as Authorization: Bearer trady_live_...in every request. Pro plan only.
Option 2 — Session cookie: Log in via POST /api/auth/login, then pass the returned trady_session cookie in subsequent requests.
Endpoints
/api/signalsReturns recent trading signals. Filtered by plan — free gets 3, Pro gets up to 100.
Query parameters
| action | string | Filter by BUY or SELL |
| ticker | string | Filter by ticker — BTC-USD, NVDA, EURUSD=X. Short aliases also work: BTC, EURUSD, GOLD, OIL, USDJPY |
| type | string | Filter by signal type, e.g. RSI_OVERSOLD |
| limit | number | Max results (default 20, max 100) |
| minConfidence | number | Only return signals at or above this confidence score (0–100) |
| sort | string | 'confidence' returns highest-confidence signals first (default: newest first) |
Example
{
"signals": [
{
"id": 142,
"ticker": "BTC-USD",
"type": "RSI_OVERSOLD",
"action": "BUY",
"confidence": 88,
"price": 67420.50,
"summary": "BTC-USD RSI hit 26 — ...",
"data": { "rsi": 26.3, "threshold": 30 },
"timeframe": "1d",
"createdAt": "2025-01-15T14:32:00.000Z"
}
],
"meta": {
"count": 1,
"plan": "pro",
"limit": 20
}
}/api/signals/latestReturns the most recent signal for each ticker. Good for getting a current-state snapshot without duplicates.
Example
{
"signals": [ /* one per ticker */ ],
"count": 12,
"as_of": "2025-01-15T14:32:00.000Z"
}/api/signals/badgeReturns an SVG badge showing the number of signals generated today. No auth required. Embed in README files, Discord server descriptions, or forum signatures.
Example
<!-- SVG badge: "signals today | 14" in green/blue -->
/api/meReturns the authenticated user's plan and API limits. Useful for bots to check access level before making calls. Supports both session cookie and Bearer API key.
Example
{
"id": 42,
"plan": "pro",
"planPeriod": "monthly",
"limits": {
"signalsPerRequest": 100,
"historyDays": 7,
"rawIndicatorData": true,
"telegramAlerts": true
},
"notifications": {
"email": true,
"telegram": true,
"telegramLinked": true
}
}/api/auth/loginAuthenticates and sets a session cookie (30 days). Required before calling authenticated endpoints.
Query parameters
| string | Account email | |
| password | string | Account password |
Example
{ "ok": true, "plan": "pro" }/api/auth/registerCreates a new account and sets a session cookie. Use this before /api/auth/login when building automated workflows.
Query parameters
| string | Email address | |
| password | string | Password (min 8 chars) |
Example
{ "ok": true } // 201 Created — session cookie set/api/subscribeCreates a Pro checkout session. Returns a URL to redirect the user to. Requires authentication.
Query parameters
| plan | "pro" | "pro_annual" | Monthly ($19) or annual ($149). Defaults to "pro". |
Example
{ "url": "https://checkout.lemonsqueezy.com/..." }Signal types
| type | action | description |
|---|---|---|
| RSI_OVERSOLD | BUY | RSI dropped below 30. Mean-reversion setup. |
| RSI_OVERBOUGHT | SELL | RSI rose above 70. Potential pullback. |
| MACD_BULLISH_CROSS | BUY | MACD line crossed above signal line. |
| MACD_BEARISH_CROSS | SELL | MACD line crossed below signal line. |
| EMA_GOLDEN_CROSS | BUY | EMA20 crossed above EMA50. |
| EMA_DEATH_CROSS | SELL | EMA20 crossed below EMA50. |
| BB_LOWER_TOUCH | BUY | Price touched lower Bollinger Band. |
| BB_UPPER_TOUCH | SELL | Price touched upper Bollinger Band. |
| STOCH_RSI_OVERSOLD | BUY | Stochastic RSI %K and %D both below 20. Faster-reacting oversold signal. |
| STOCH_RSI_OVERBOUGHT | SELL | Stochastic RSI %K and %D both above 80. Faster-reacting overbought signal. |
| VOLUME_SPIKE_BULL | BUY | Volume ≥2× 20-day average with price up ≥1%. High volume confirms the move. |
| VOLUME_SPIKE_BEAR | SELL | Volume ≥2× 20-day average with price down ≥1%. Heavy selling with conviction. |
| HAMMER_CANDLE | BUY | Small body at top, long lower wick after a downtrend. Buyers absorbed selling pressure at the low — potential reversal. |
| SHOOTING_STAR | SELL | Small body at bottom, long upper wick after an uptrend. Buyers couldn't hold gains at the high — potential reversal. |
| BULLISH_ENGULFING | BUY | Current green candle body fully covers previous red candle body. Strong momentum shift in favor of buyers. |
| BEARISH_ENGULFING | SELL | Current red candle body fully covers previous green candle body. Strong momentum shift in favor of sellers. |
| RSI_BULL_DIVERGENCE | BUY | Price made a lower low while RSI made a higher low. Classic signal that selling pressure is weakening — potential reversal up. |
| RSI_BEAR_DIVERGENCE | SELL | Price made a higher high while RSI made a lower high. Classic signal that buying pressure is fading — potential reversal down. |
Covered markets
BTC-USDETH-USDSOL-USDXRP-USDADA-USDDOGE-USDBNB-USDAAPLNVDAMSFTTSLAAMZNGOOGLMETASPYQQQAMDNFLXCOINEURUSD=XGBPUSD=XJPY=XGC=FCL=FEquity signals (AAPL, NVDA, MSFT, TSLA, AMZN, GOOGL, META, SPY, QQQ) only fire during US market hours. Crypto (BTC, ETH, SOL) and forex/commodities run 24/7.
Rate limits & plans
Free / Anonymous
- 3 signals per request
- 24h signal history
- 30 requests/hour
Pro ($19/mo)
- Up to 100 signals per request
- 7-day signal history
- Raw indicator data in response
- 300 requests/hour
- Telegram push alerts
Rate-limited responses return HTTP 429 with an accurate Retry-After header (seconds until window reset). All responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (Unix timestamp) headers.