Spectra
Explorar docs

webhooks

Schema del payload

El schema JSON que Spectra acepta en órdenes vía webhook.


Spectra acepta un único shape JSON en POSTs de webhook. Cualquier otra cosa devuelve 400 Bad Request con un body de error de schema.

Order mínima

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

Rutea un market buy. La conexión de bróker se decide por el secret con que se firmó la request.

Schema completo

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

flatten ignora qty y cierra todo del símbolo. close cierra una cantidad específica (default = posición completa).

Idempotency

Si client_id está set, Spectra deduplica. Re-POSTear el mismo client_id en 24 h devuelve 200 OK con el resultado original en vez de colocar una orden duplicada. Recomendado para cualquier fuente de alertas que pueda reintentar por su cuenta (la mayoría lo hace — usa un client_id único por cada orden intencional).

Respuesta

202 Accepted   →  body: { "order_id": "...", "client_id": "..." }
400 Bad Request →  schema o regla de negocio falla (cap pérdida, ...)
401 Unauthorized →  firma/timestamp inválidos
403 Forbidden  →  IP no en allowlist, o secret pausado
429 Too Many Requests →  rate-limit (1 req/seg/secret default)