Spectra
Docs durchsuchen

webhooks

Payload-Schema

Das JSON-Schema, das Spectra für Webhook-getriebene Orders akzeptiert.


Spectra akzeptiert eine einzige JSON-Form auf Webhook-POSTs. Alles andere ergibt 400 Bad Request mit einem Schema-Fehler-Body.

Minimal-Order

{
  "action": "buy",
  "symbol": "BTCUSDT",
  "qty": 1
}

Routet einen Market-Buy. Die Broker-Verbindung wird durch das Secret bestimmt, mit dem die Request signiert wurde.

Vollschema

{
  "action": "buy" | "sell" | "close" | "flatten",
  "symbol": "string",
  "qty":    number,
  "type":   "market" | "limit" | "stop" | "stop_limit"
            | "trailing_stop",      // Default: market
  "limit_price":   number,           // Pflicht für limit / stop_limit
  "stop_price":    number,           // Pflicht für stop / stop_limit
  "trail_offset":  number,           // Pflicht für trailing_stop
  "tp":     number | { "value": number, "kind": "abs" | "pct" | "atr" },
  "sl":     number | { "value": number, "kind": "abs" | "pct" | "atr" },
  "tif":    "day" | "gtc" | "ioc" | "fok", // Default: day
  "client_id": "string"              // dein Idempotency-Key (≤ 64 Zeichen)
}

flatten ignoriert qty und schließt alles für das Symbol. close schließt eine bestimmte Menge (Default = volle Position).

Idempotency

Wenn client_id gesetzt ist, dedupliziert Spectra. Eine erneute POST mit derselben client_id binnen 24 h liefert 200 OK mit dem ursprünglichen Ergebnis statt einer Doppel-Order. Empfohlen für jede Alert-Quelle, die selbst Retries macht (die meisten tun das — setze eine eindeutige client_id pro beabsichtigter Order).

Antwort

202 Accepted   →  Body: { "order_id": "...", "client_id": "..." }
400 Bad Request →  Schema- oder Geschäftsregel-Fehler (Loss-Cap, ...)
401 Unauthorized →  Signatur/Timestamp ungültig
403 Forbidden  →  IP nicht in Allowlist oder Secret pausiert
429 Too Many Requests →  Rate-Limit (1 Req/Sek/Secret Default)
Payload-Schema · Spectra Terminal