Aller au contenu
AtheronDEVELOPERS
← ATON Kestrel API

Kestrel API reference

Every endpoint, what it costs and the lowest seat that may call it.

Connectez-vous pour voir votre propre ID client de test dans les exemples.

Base address: https://developers.aton-network.org. Every request sends Authorization: Bearer <API key with the kestrel right>; every answer is JSON.

EndpointCounts asFrom
GET /api/kestrel/v1/signals1 callBuilder
GET /api/kestrel/v1/signals/{symbol}1 callBuilder
GET /api/kestrel/v1/signals/{symbol}/history5 callsBuilder
GET /api/kestrel/v1/signals/stream1 callPro
GET /api/kestrel/v1/sentiment1 callBuilder
GET /api/kestrel/v1/sentiment/history5 callsBuilder
GET /api/kestrel/v1/eye1 callPro
POST /api/kestrel/v1/backtests100 callsStudio
GET /api/kestrel/v1/backtests/{id}1 callStudio
GET /api/kestrel/v1/versions1 callBuilder
POST /api/kestrel/v1/paper/orders1 callBuilder
GET /api/kestrel/v1/paper/bots1 callBuilder
GET /api/kestrel/v1/paper/portfolio1 callBuilder
POST /api/kestrel/v1/live/orders1 callBuilder

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.

json
{
  "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.

Demandez à Atlas

Assistant IA

Posez n'importe quelle question sur Se connecter avec Atheron, l'API ou le portail. La réponse vient de notre documentation, avec les liens des pages utilisées.