Cette page n'a pas encore été traduite — version anglaise utilisée.English ↗
Développeurs

Deepwick API

Tous les endpoints sont en JSON sur HTTPS. Auth : cookie de session (identique au dashboard) ou jeton personnel via `Authorization: Bearer <token>`. Les jetons se créent dans Réglages → Jetons API et affichent leur secret une seule fois.

URL de base

https://deepwick.com

Exemple curl

# List your alerts with a session cookie
curl https://deepwick.com/api/platform/alerts \
  -H "Cookie: dw_session=…"

# Same call with a personal access token
curl https://deepwick.com/api/platform/alerts \
  -H "Authorization: Bearer dw_at_…" -H "Content-Type: application/json"

Backtests

POST/api/platform/backtestssession

Run a new backtest against the cached bars for a symbol+interval.

Request body
{
  "name": "BTC SMA cross (test)",
  "symbol": "BTCUSDT",
  "interval": "1h",
  "exchange": "binance",
  "bars": 2000,
  "source": "strategy(\"t\", initial_capital=10000)\nif (ta.crossover(ta.sma(close,10), ta.sma(close,30)))\n  strategy.entry(\"L\", strategy.long)\nelse\n  strategy.close(\"L\")",
  "inputs": {}
}
Response
{ "ok": true, "id": "<backtest-id>", "result": { "report": { … }, "tracks": […] } }
POST/api/platform/backtests/[id]/replay?exchange=binancesession

Convert a stored backtest into a /replay session (bars + trades).

Alertes

GET/api/platform/alertssession

List the user's alerts.

POST/api/platform/alertssession

Create an alert.

Request body
{
  "symbol": "BTCUSDT",
  "exchange": "binance",
  "interval": "1h",
  "kind": "price",
  "op": "above",
  "price": 75000,
  "channels": ["email", "webhook"]
}

Idées

POST/api/platform/ideassession

Publish a new idea.

Request body
{ "title": "Range trade memory", "body": "…", "tags": ["btc","memory"], "visibility": "unlisted" }

Watchlists

POST/api/platform/watchlists/importsession

Paste a CSV and create a new watchlist with the parsed rows.

Request body
{
  "name": "Imported watchlist",
  "items": [
    { "symbol": "BTCUSDT", "exchange": "binance", "note": "btc" },
    { "symbol": "ETHUSDT", "exchange": "binance", "note": null }
  ]
}

Replays

GET/api/platform/replay?symbol=X&interval=Y&start=ISO&end=ISO&userId=Znone

Fetch a replay session. `userId` is only honoured for the owner.

GET/api/platform/replay/resumeapi-token

Read the user's saved cursor for (symbol, interval).

POST/api/platform/replay/resumeapi-token

Upsert the cursor. Body: { symbol, interval, exchange?, cursorBar, speed, start, end }.

DELETE/api/platform/replay/resume?symbol=X&interval=Yapi-token

Clear the saved cursor.

GET/api/platform/replay/bookmarks?symbol=X&interval=Yapi-token

List bookmarks.

POST/api/platform/replay/bookmarks?bar=N&symbol=X&interval=Yapi-token

Upsert a bookmark at bar N.

Webhooks

POST/api/platform/webhookssession

Register a webhook URL.

Request body
{ "name": "My receiver", "url": "https://example.com/dw", "events": ["backtest.reportReady"] }

Recherche

GET/api/search?q=Xnone

Cross-content search. Anonymous gets public scripts + ideas; signed-in also gets their private backtests + watchlists.

Support

POST/api/support/contactnone

Open a support ticket. Body: { email, subject, body }.

POST/api/support/chatnone

Keyword-match a query against the support corpus. Body: { query }.

POST/api/errorsnone

Report a client-side error.

Jetons

POST/api/platform/tokenssession

Create a long-lived API token. Secret returned ONCE.

GET/api/platform/tokenssession

List tokens (no secrets).

DELETE/api/platform/tokens?id=Xsession

Revoke a token.

Webhooks

Receivers get a POST with a JSON body and an X-Deepwick-Signature: sha256=<hex> header. The hex is HMAC-SHA256 of the raw body keyed with the secret shown at webhook creation. The receiver verifies HMAC-SHA256(raw_body, secret).hex() == header.

event: "backtest.reportReady"
delivered_at: "2026-01-05T12:00:00Z"
data:
  backtestId: "abc-123"
  name: "BTC SMA cross"
  symbol: "BTCUSDT"
  interval: "1h"
  trades: 14
  netProfit: 234.56
  netProfitPct: 0.0234
  winRate: 0.57
  profitFactor: 1.83
  maxDrawdownPct: 0.05
  sharpe: 1.42

Rapport d'erreurs

The dashboard layout mounts window.onerror + unhandledrejection listeners that POST to /api/errors. Same endpoint is open if you want to send errors from your own integrations.