apidoc.title

apidoc.subtitle

apidoc.keyTitle

apidoc.keyDesc

apidoc.authTitle

apidoc.authDesc

Authorization: Bearer <YOUR_API_KEY>

apidoc.baseUrl

https://joesan.ai/api

apidoc.quota

apidoc.scopesTitle

apidoc.scopesDesc

apidoc.colScopeapidoc.colGrants
read:botsapidoc.scope.bots
read:tradesapidoc.scope.trades
read:backtestsapidoc.scope.backtests
read:strategiesapidoc.scope.strategies
*apidoc.scope.all

apidoc.endpointsTitle

GET/open/pingapidoc.needScopeAny

apidoc.ep.ping

apidoc.respLabel
{ "ok": true, "tenant_id": 1 }
GET/open/strategiesapidoc.needScope: read:strategies

apidoc.ep.strategies

apidoc.respLabel
[
  { "key": "trend_ma", "label": "Trend · EMA cross" }
]
GET/open/botsapidoc.needScope: read:bots

apidoc.ep.bots

apidoc.respLabel
[
  {
    "id": 12, "name": "My Bot", "strategy": "trend_ma",
    "symbol": "BTC/USDT", "symbols": ["BTC/USDT"],
    "mode": "live", "market_type": "futures",
    "status": "running", "positions": {}
  }
]
GET/open/tradesapidoc.needScope: read:trades

apidoc.ep.trades

apidoc.paramsLabel
  • apidoc.param.limitTrades
apidoc.respLabel
[
  {
    "id": 8891, "bot_id": 12,
    "ts": "2026-07-13T14:00:00+00:00",
    "action": "close", "side": "long",
    "price": 61000.0, "amount": 0.01, "pnl_pct": 2.4
  }
]
GET/open/backtestsapidoc.needScope: read:backtests

apidoc.ep.backtests

apidoc.paramsLabel
  • apidoc.param.limitBacktests
apidoc.respLabel
[
  {
    "id": 305, "strategy": "trend_ma",
    "symbol": "BTC/USDT", "timeframe": "1h",
    "status": "done",
    "metrics": { "total_return_pct": 12.3, "sharpe": 1.1 }
  }
]

apidoc.errorsTitle

apidoc.colCodeapidoc.colMeaning
401apidoc.err.401
403apidoc.err.403

apidoc.exampleTitle

apidoc.exampleCurl

curl -H "Authorization: Bearer <YOUR_API_KEY>" \
  https://joesan.ai/api/open/bots

apidoc.examplePy

import requests
r = requests.get(
    "https://joesan.ai/api/open/trades",
    headers={"Authorization": "Bearer <YOUR_API_KEY>"},
    params={"limit": 100},
)
print(r.json())

apidoc.exampleJs

const res = await fetch("https://joesan.ai/api/open/backtests", {
  headers: { Authorization: "Bearer <YOUR_API_KEY>" },
});
console.log(await res.json());

apidoc.footer