FNEWSTEER API
Fundamental Analysis (News) Steer — a loss-prevention API for price action traders. Know when not to trade so news events don't blindside your technically sound setups.
Authentication
All /v1/ and /admin/ endpoints require an
API key in the request header. The /health endpoint is
public.
HEADER
X-API-Key: your-secret-api-key
Public hosted key:
f1e922df0a7d52af4ff2bfc3c4eb1da01e5f8ea4779e28acb3200ced29aaf5a5
Smart Blackout Windows
| Event Type | Window |
|---|---|
| FOMC, Federal Funds Rate, Interest Rate Decision | ±60 min |
| Non-Farm Payrolls (NFP) | ±60 min |
| CPI, GDP, Inflation, Monetary Policy | ±60 min |
| All other High impact events | ±30 min |
Pass window_minutes to any endpoint to override for
your strategy.
Algo Bot Integration
PYTHON
import httpx FNEWSTEER_URL = "https://fnewsteer-api.onrender.com" API_KEY = "your-api-key" def is_safe_to_trade(symbol: str) -> bool: """Fail-safe: returns False on any error.""" try: r = httpx.get( f"{FNEWSTEER_URL}/v1/news/check", params={"symbol": symbol}, headers={"X-API-Key": API_KEY}, timeout=5.0, ) r.raise_for_status() data = r.json() if not data["safe_to_trade"]: for ev in data["blocking_events"]: print(f"Blocked: {ev['title']} — {ev['minutes_to_event']:.0f}m") return data["safe_to_trade"] except Exception as e: print(f"[FNEWSTEER] Check failed: {e}. Blocking as precaution.") return False # In your trading loop: if is_safe_to_trade("EURUSD"): place_order(...) else: print("Sitting on hands — news window active.")
Endpoints
Try It — cold start & CORS: The API runs on Render's
free tier and sleeps after inactivity. First request may take 30–60s.
If you get a network error, open
the health endpoint ↗
in a new tab to wake the server, then retry. Some browser security
policies (CORS) may block requests from this page — use
curl from your terminal if issues persist.
GET
/health
Health check · No auth required
▼
Returns service status and cache age. Call this first in automated
pipelines to verify the data layer is live.
Try it
RESPONSE
{ "status": "ok", "cache_age_seconds": 312.4, "cache_populated": true }
GET
/v1/news/check
Safe-to-trade check · Primary bot endpoint
▼
The primary bot integration endpoint. Pass a currency or pair and
get back a binary
safe_to_trade signal. Call this
before placing any order.
Parameters
symbol required
string
Currency (
USD) or pair (EURUSD) to
check
include_medium optional
boolean
Also block on Medium impact events. Default:
false
window_minutes optional
integer
Override blackout window (1–1440 min). Omit to use smart
defaults.
Try it
symbol
include_medium
GET
/v1/news/upcoming
Full week calendar
▼
Returns all high-impact (and optionally medium-impact) news events
for the current week. Each event includes its computed blackout
window.
Parameters
currency optional
string
Filter by currency (
USD) or pair
(EURUSD)
include_medium optional
boolean
Include medium impact events. Default:
false
window_minutes optional
integer
Override blackout window for all events (1–1440)
Try it
currency
GET
/v1/news/blackout-zones
Blackout zones · For backtesting
▼
Returns a flat list of time ranges to avoid for the current week.
Feed this into your backtesting engine to exclude
news-contaminated zones.
Parameters
currency optional
string
Filter by currency or pair. Omit for all currencies.
include_medium optional
boolean
Include medium impact events. Default:
false
window_minutes optional
integer
Override blackout window in minutes
Try it
currency
POST
/admin/refresh-cache
Force cache refresh
▼
Invalidates the in-memory calendar cache so the next request
fetches fresh data from ForexFactory.
Requires authentication. Use when you suspect stale data.
Try it
Response Schemas
CheckResponse
safe_to_tradebooleanPrimary signal.
true = safe to trade right now
symbolstringThe symbol that was checked
currencies_checkedstring[]Currencies extracted from the pair (e.g. ["EUR","USD"])
checked_atdatetimeUTC timestamp of the check
blocking_eventsBlockingEvent[]Events currently within their blackout window. Empty if
safe.
UpcomingNewsResponse
fetched_atdatetimeWhen this data was fetched from ForexFactory
event_countintegerTotal number of events returned
eventsNewsEvent[]Full event list with computed blackout windows
BlackoutZone
startdatetimeBlackout window start (UTC)
enddatetimeBlackout window end (UTC)
eventstringEvent name (e.g. "Non-Farm Payrolls")
currencystringAffected currency
impactstring"High" or "Medium"
event_timedatetimeActual scheduled event time (UTC)