apidoc.title
apidoc.subtitle
apidoc.keyTitle
apidoc.keyDesc
apidoc.authTitle
apidoc.authDesc
Authorization: Bearer <YOUR_API_KEY>apidoc.baseUrl
https://joesan.ai/apiapidoc.quota
apidoc.scopesTitle
apidoc.scopesDesc
| apidoc.colScope | apidoc.colGrants |
|---|---|
read:bots | apidoc.scope.bots |
read:trades | apidoc.scope.trades |
read:backtests | apidoc.scope.backtests |
read:strategies | apidoc.scope.strategies |
* | apidoc.scope.all |
apidoc.endpointsTitle
GET
/open/pingapidoc.needScopeAnyapidoc.ep.ping
apidoc.respLabel
{ "ok": true, "tenant_id": 1 }GET
/open/strategiesapidoc.needScope: read:strategiesapidoc.ep.strategies
apidoc.respLabel
[
{ "key": "trend_ma", "label": "Trend · EMA cross" }
]GET
/open/botsapidoc.needScope: read:botsapidoc.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:tradesapidoc.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:backtestsapidoc.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.colCode | apidoc.colMeaning |
|---|---|
401 | apidoc.err.401 |
403 | apidoc.err.403 |
apidoc.exampleTitle
apidoc.exampleCurl
curl -H "Authorization: Bearer <YOUR_API_KEY>" \
https://joesan.ai/api/open/botsapidoc.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