dogabot dogabot Documentation

Changelog

Changes to the REST API, MCP server, SDKs, and CLI. Product updates live on dogabot.com/whats-new.

  1. Changed REST API

    Datafeed history reports failed fetches as errors

    GET /api/v1/datafeed/history now answers {"s":"error","errmsg":"history temporarily unavailable"} when the venue fetch fails, for example during a rate limit. It used to answer {"s":"no_data"}, which looked like a market with no candles. The status code stays 200. no_data now only means there are no candles in the range, so retry on error.

  2. Improved REST APISDKs

    Gainers and losers sorts, free emitter filter, and correct automation totals

    GET /api/v1/markets accepts sortBy=gainers and sortBy=losers: only rising or falling markets, biggest move first, with total as the filtered count. POST /api/v1/emitters/summary accepts sortBy=lowDrawdown and freeOnly (public lists only). POST /api/v1/automations/summary accepts sortBy=todayPnl, and total now counts every matching automation instead of stopping at offset + limit per type.

  3. Improved REST API

    GET /me/statistics/by-tag accepts benchmark=async

    Pass benchmark=async to GET /api/v1/me/statistics/by-tag to get each tag’s statistics right away instead of waiting for account buy-and-hold on a cache miss. benchmark_history can then be empty for a tag until the series is ready. Without the param, behavior is unchanged.

  4. Improved REST APIMCP

    GET /me/statistics caches account buy-and-hold and adds benchmark=async

    Account buy-and-hold (benchmarkHistory) is now cached server-side until the next UTC midnight, and it is recomputed the same day when the running count, total capital or first PnL day changes. Pass benchmark=async to GET /api/v1/me/statistics to get an answer right away: while the series is still computing, the response has benchmarkPending: true and an empty benchmarkHistory. Poll until it is false. Without the parameter the call waits for the series as before. MCP get_user_statistics uses the same cache.

  5. Added REST APIMCP

    Leverage on every perp venue, plus margin mode

    • POST /api/v1/exchange/leverage and set_exchange_leverage now work on all terminal perp venues (Aster, Binance USDⓈ-M / COIN-M, Bybit, OKX, Bitget, Kraken Futures, Hyperliquid, Lighter) and accept an optional margin_mode (crossed | isolated).
    • POST /api/v1/exchange/margin-mode and set_exchange_margin_mode switch cross/isolated margin. The response scope says whether the venue applied it per symbol, account-wide, or together with leverage. OKX has no such API.
    • GET /api/v1/exchange/leverage-capabilities and get_exchange_leverage_capabilities return a static per-venue support matrix (no venue call).
  6. Added REST APIMCPSDKsCLI

    Market logo_url on list

    GET /api/v1/markets, MCP list_markets, and SDK/CLI get-markets include optional logo_url from asset_profiles for each row (empty when unset).

  7. Added REST APISDKs

    List helpers for markets movers and automation counts

    GET /api/v1/markets?sortBy=abs_change ranks by absolute 24h change. POST /api/v1/automations/status-counts and POST /api/v1/automations/summary/by-ids support Bots chips and batch favorites (read:automations).

  8. Added REST APIMCPSDKs

    Follower create accepts loss_limit_pct

    POST /api/v1/followers and MCP create_automation (type follower) accept optional loss_limit_pct (0–100). When set, order-executor blocks new risk after total PnL reaches −pct% of initial_capital until the follower is restarted. Stored as params.lossLimitPct.

  9. Added REST APIMCPSDKs

    Backtest GET exposes queue position and progress %

    GET /api/v1/backtest/{job_id} (and MCP get_backtest) now include queue_ahead / queue_position while status is enqueued, and progress_pct / progress_phase while running when a gateway backtester reports mid-run progress. Remote workers may omit progress until completion.

  10. Added REST APIMCPSDKs

    GET /me/available-cash and MCP get_available_cash

    Account-level free cash across live credentials: GET /api/v1/me/available-cash sums free USDT/USDC/USD/FDUSD/BUSD per unique exchange (default credential), with by_exchange and incomplete when a venue fails. API keys need read:account. MCP get_available_cash and the public SDKs expose the same payload.