Kestrel API reference
Every endpoint, what it costs and the lowest seat that may call it.
Inicie sesión para ver su propio ID de cliente de prueba en los ejemplos.
Base address: https://developers.aton-network.org. Every request sends Authorization: Bearer <API key with the kestrel right>; every answer is JSON.
| Endpoint | Counts as | From |
|---|---|---|
GET /api/kestrel/v1/signals | 1 call | Builder |
GET /api/kestrel/v1/signals/{symbol} | 1 call | Builder |
GET /api/kestrel/v1/signals/{symbol}/history | 5 calls | Builder |
GET /api/kestrel/v1/signals/stream | 1 call | Pro |
GET /api/kestrel/v1/sentiment | 1 call | Builder |
GET /api/kestrel/v1/sentiment/history | 5 calls | Builder |
GET /api/kestrel/v1/eye | 1 call | Pro |
POST /api/kestrel/v1/backtests | 100 calls | Studio |
GET /api/kestrel/v1/backtests/{id} | 1 call | Studio |
GET /api/kestrel/v1/versions | 1 call | Builder |
POST /api/kestrel/v1/paper/orders | 1 call | Builder |
GET /api/kestrel/v1/paper/bots | 1 call | Builder |
GET /api/kestrel/v1/paper/portfolio | 1 call | Builder |
POST /api/kestrel/v1/live/orders | 1 call | Builder |
Signals
GET /api/kestrel/v1/signals answers the newest signal of each market (?symbol= for one, ?limit= up to 500). GET /api/kestrel/v1/signals/{symbol} answers every strategy and timeframe of one market, and /history?from=&to= its past signals, 30 days kept.
net_bps is the expected return per trade after fees, spread, slippage and funding. A strategy that has not passed its backtest gate shows gate.passed: false: research, not switched on. Builder seats read signals a minute behind and without explanations.
{
"object": "signal",
"version": "v0.1.0",
"venue": "bitunix",
"segment": "usdt-m",
"symbol": "BTCUSDT",
"strategy": "trend",
"interval": "1h",
"at": "2026-10-20T14:00:00.000Z",
"valid_until": "2026-10-20T15:00:00.000Z",
"action": "none",
"direction": { "down": 0.21, "flat": 0.55, "up": 0.24 },
"net_bps": { "long": -3.1, "short": -14.0 },
"cost_bps": 15.2,
"risk": { "sortino_long": -0.05, "sortino_short": -0.4, "mae_long": 0.012, "mae_short": 0.018 },
"gate": { "passed": false },
"readers": { "agree": false, "sentiment": "neutral", "why": "model-no-edge" },
"explanations": [{ "code": "cost_exceeds_edge", "weight": 0.62, "value": 15.2, "unit": "bps", "facts": { "expected_bps": 4.1 } }]
}Streams
GET /api/kestrel/v1/signals/stream (Pro and up) is server-sent events: one signal event for each new signal. Each batch sent counts as one call. A stream lasts 15 minutes; reconnect with Last-Event-ID to carry on.
Sentiment
GET /api/kestrel/v1/sentiment answers mood (level from -1 to 1, speed, how unusual), urgency and the veto for each coin, with alerts by kind and state. /history?from=&to= answers past views, 400 days kept. Headlines are not republished.
The Kestrel Eye
GET /api/kestrel/v1/eye (Pro and up) answers every market's newest signal, the opportunities (a gated signal that says long or short) and the sentiment weather in one call.
Backtests
POST /api/kestrel/v1/backtests (Studio and up) with venue, symbol, strategy, interval, from and to (three years at most) queues a backtest; it counts as 100 calls and answers 202 with its id. GET /api/kestrel/v1/backtests/{id} answers its state and, when done, net_bps, holding_bps and excess_bps: every result is measured against simply holding the market, after fees. Five at once for an app.
Paper trading and live orders
POST /api/kestrel/v1/paper/orders, GET /api/kestrel/v1/paper/bots and GET /api/kestrel/v1/paper/portfolio act for a person who signed in to your app with Atheron and granted the trading scope: send their access token as Atheron-User-Token. Nothing reaches an exchange. POST /api/kestrel/v1/live/orders answers 403 live_trading_closed until live trading opens for everyone; then it places orders with that person's own exchange key, locked to our engine's address, through our engine's routing and guardrails.
Pregunte a Atlas
Asistente de IAPregunte lo que quiera sobre Iniciar sesión con Atheron, la API o el portal. La respuesta sale de nuestra documentación, con enlaces a las páginas usadas.