Spectra
Открыть документацию

webhooks

Схема payload

JSON-схема, которую Spectra принимает для ордеров, управляемых вебхуком.


Spectra принимает единственную форму JSON в POST-запросах вебхука. Всё остальное возвращает 400 Bad Request с телом, содержащим ошибку схемы.

Минимальный ордер

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

Направляет рыночную покупку. Соединение с брокером определяется тем, каким секретом был подписан запрос.

Полная схема

{
  "action": "buy" | "sell" | "close" | "flatten",
  "symbol": "string",
  "qty":    number,
  "type":   "market" | "limit" | "stop" | "stop_limit"
            | "trailing_stop",      // default: market
  "limit_price":   number,           // required for limit / stop_limit
  "stop_price":    number,           // required for stop / stop_limit
  "trail_offset":  number,           // required for 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"              // your idempotency key (≤ 64 chars)
}

flatten игнорирует qty и закрывает всё по символу. close закрывает указанное количество (по умолчанию = полная позиция).

Идемпотентность

Если задан client_id, Spectra дедуплицирует. Повторная отправка того же client_id в течение 24 ч возвращает 200 OK с исходным результатом вместо размещения дублирующего ордера. Рекомендуется для любого источника алертов, который может повторять запросы сам (большинство так делает — задавайте уникальный client_id на каждый предполагаемый ордер).

Ответ

202 Accepted   →  body: { "order_id": "...", "client_id": "..." }
400 Bad Request →  schema or business-rule failure (loss-cap breach, ...)
401 Unauthorized →  signature/timestamp invalid
403 Forbidden  →  IP not in allowlist, or secret paused
429 Too Many Requests →  rate-limit (1 req/sec/secret default)