Skip to documentation
Weavers Docs

Pages and endpoints

Tab to navigate · Enter to openEsc to close

POST /api/eureka/rules/draft

Account required · HTTP API reference

All endpoints · Authentication and retries · Download OpenAPI

  • Requires a signed-in account and permission to access this resource. Use identifiers returned by your own account's earlier requests.
  • Save returns a proposal with its revision and hash. Confirm requires that exact revision/hash and a new logical-action idempotency key. A user must review and confirm; the assistant cannot confirm on the user's behalf. This version supports daily Alpaca niche data.
  • Protected writes require an allowed Origin, the CSRF cookie and matching X-CSRF-Token header.

Request

ParameterLocationType and requirement
Originheaderstring · required

An origin allowed by this deployment.

X-CSRF-Tokenheaderstring · required

Must match the CSRF cookie issued to this browser.

Body · application/json

Variant 1: object
action required · "save"
hypothesisId required · null | string
View hypothesisId model
Variant 1: null

null

Variant 2: string

string

expectedRevision required · number
envelope required · object
View envelope model
spec required · object
View spec model
schema_version required · 1
type required · "rule"
side required · "long"
bar required · "1d"
entry required · object
View entry model
Variant 1: object
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
Variant 2: object
op required · "and" | "or"
conditions required · array of object
View conditions model

Array items:

op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
exit required · object
View exit model
Variant 1: object
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
Variant 2: object
op required · "and" | "or"
conditions required · array of object
View conditions model

Array items:

op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"
Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number
Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"
stop_loss_pct required · null | number
View stop_loss_pct model
Variant 1: null

null

Variant 2: number

number

take_profit_pct required · null | number
View take_profit_pct model
Variant 1: null

null

Variant 2: number

number

sizing required · object
View sizing model
mode required · "equal_notional"
position_pct required · number
max_gross_pct required · number
simultaneous required · "proportional"
pyramiding required · false
borrowing required · false
dataset required · object
View dataset model
Variant 1: object
provider required · "alpaca" | "marketstack"
startDate required · string
endDate required · string
timeframe required · "1D" | "1H"
nicheId required · number
nicheKey required · string
equitiesOnly required · boolean
excludeEtfs required · boolean
excludeIndiaEtfs required · boolean
Variant 2: object
provider required · "alpaca" | "marketstack"
startDate required · string
endDate required · string
timeframe required · "1D" | "1H"
source required · "catalog"
country required · string
geography required · "exposure" | "listing"
instrumentType required · "other" | "stock" | "etf"
theme optional · string
idempotencyKey required · string
Variant 2: object
action required · "confirm"
hypothesisId required · string
expectedRevision required · number
expectedHash required · string
idempotencyKey required · string

Example

Examples use fictional data. Replace identifiers with resources you can access. For account requests, cookies.txt must contain your own session; set CSRF_TOKEN to the matching CSRF cookie value where required.

Save as request.json
{
  "action": "save",
  "hypothesisId": null,
  "expectedRevision": 0,
  "envelope": {
    "spec": {
      "schema_version": 1,
      "type": "rule",
      "side": "long",
      "bar": "1d",
      "entry": {
        "op": "cross_above",
        "left": {
          "field": "close"
        },
        "right": {
          "indicator": "sma",
          "period": 20
        }
      },
      "exit": {
        "op": "cross_below",
        "left": {
          "field": "close"
        },
        "right": {
          "indicator": "sma",
          "period": 20
        }
      },
      "stop_loss_pct": null,
      "take_profit_pct": null
    },
    "sizing": {
      "mode": "equal_notional",
      "position_pct": 5,
      "max_gross_pct": 50,
      "simultaneous": "proportional",
      "pyramiding": false,
      "borrowing": false
    },
    "dataset": {
      "provider": "alpaca",
      "nicheId": 1,
      "nicheKey": "example-niche",
      "startDate": "2025-01-01",
      "endDate": "2025-06-30",
      "timeframe": "1D",
      "equitiesOnly": true,
      "excludeEtfs": true,
      "excludeIndiaEtfs": true
    }
  },
  "idempotencyKey": "example-rule-save-0001"
}
cURL (POSIX shell)
curl --include \
  --request POST \
  'https://api.weavers.app/api/eureka/rules/draft' \
  --cookie cookies.txt --cookie-jar cookies.txt \
  --header 'Origin: https://weavers.app' \
  --header "X-CSRF-Token: ${CSRF_TOKEN}" \
  --header 'Content-Type: application/json' \
  --data-binary @request.json

Responses

200 · Successful response.

application/json

200 example · synthetic data
{
  "hypothesisId": "1",
  "revision": 1,
  "hash": "example",
  "status": "not_confirmed",
  "envelope": {
    "spec": {
      "schema_version": 1,
      "type": "rule",
      "side": "long",
      "bar": "1d",
      "entry": {
        "op": "cross_above",
        "left": 1,
        "right": 1
      },
      "exit": {
        "op": "cross_above",
        "left": 1,
        "right": 1
      },
      "stop_loss_pct": null,
      "take_profit_pct": null
    },
    "sizing": {
      "mode": "equal_notional",
      "position_pct": 1,
      "max_gross_pct": 1,
      "simultaneous": "proportional",
      "pyramiding": false,
      "borrowing": false
    },
    "dataset": {
      "provider": "alpaca",
      "startDate": "2025-01-01",
      "endDate": "2025-06-30",
      "timeframe": "1D",
      "nicheId": 1,
      "nicheKey": "example",
      "equitiesOnly": false,
      "excludeEtfs": false,
      "excludeIndiaEtfs": false
    }
  },
  "readback": {
    "entry": {
      "match": "example",
      "conditions": []
    },
    "exit": {
      "match": "example",
      "conditions": []
    },
    "side": "example",
    "bar": "example",
    "execution": "example",
    "stopLossPct": null,
    "takeProfitPct": null,
    "sizing": {
      "mode": "equal_notional",
      "position_pct": 1,
      "max_gross_pct": 1,
      "simultaneous": "proportional",
      "pyramiding": false,
      "borrowing": false
    },
    "searchTrials": 1,
    "evaluatorVersion": "example"
  }
}
View response model
Variant 1: object
hypothesisId required · string
revision required · number
hash required · string
status required · "not_confirmed"
envelope required · object
View envelope model
spec required · object
View spec model
schema_version required · 1
type required · "rule"
side required · "long"
bar required · "1d"
entry required · object
View entry model
Variant 1: object
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Variant 2: object
op required · "and" | "or"
conditions required · array of object
View conditions model

Array items:

op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Additional fields: JSON values.

exit required · object
View exit model
Variant 1: object
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Variant 2: object
op required · "and" | "or"
conditions required · array of object
View conditions model

Array items:

op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Additional fields: JSON values.

stop_loss_pct required · null | number
View stop_loss_pct model
Variant 1: null

null

Variant 2: number

number

take_profit_pct required · null | number
View take_profit_pct model
Variant 1: null

null

Variant 2: number

number

Additional fields: JSON values.

sizing required · object
View sizing model
mode required · "equal_notional"
position_pct required · number
max_gross_pct required · number
simultaneous required · "proportional"
pyramiding required · false
borrowing required · false

Additional fields: JSON values.

dataset required · object
View dataset model
Variant 1: object
provider required · "alpaca" | "marketstack"
startDate required · string
endDate required · string
timeframe required · "1D" | "1H"
nicheId required · number
nicheKey required · string
equitiesOnly required · boolean
excludeEtfs required · boolean
excludeIndiaEtfs required · boolean

Additional fields: JSON values.

Variant 2: object
provider required · "alpaca" | "marketstack"
startDate required · string
endDate required · string
timeframe required · "1D" | "1H"
source required · "catalog"
country required · string
geography required · "exposure" | "listing"
instrumentType required · "other" | "stock" | "etf"
theme optional · string

Additional fields: JSON values.

Additional fields: JSON values.

readback required · object
View readback model
entry required · object
View entry model
match required · string
conditions required · array of object
View conditions model

Array items:

left required · string
operator required · string
right required · string

Additional fields: JSON values.

Additional fields: JSON values.

exit required · object
View exit model
match required · string
conditions required · array of object
View conditions model

Array items:

left required · string
operator required · string
right required · string

Additional fields: JSON values.

Additional fields: JSON values.

side required · string
bar required · string
execution required · string
stopLossPct required · null | number
View stopLossPct model
Variant 1: null

null

Variant 2: number

number

takeProfitPct required · null | number
View takeProfitPct model
Variant 1: null

null

Variant 2: number

number

sizing required · object
View sizing model
mode required · "equal_notional"
position_pct required · number
max_gross_pct required · number
simultaneous required · "proportional"
pyramiding required · false
borrowing required · false

Additional fields: JSON values.

searchTrials required · number
evaluatorVersion required · string

Additional fields: JSON values.

Additional fields: JSON values.

Variant 2: object
revision required · number
hypothesisId required · string
hash required · string
envelope required · object
View envelope model
spec required · object
View spec model
schema_version required · 1
type required · "rule"
side required · "long"
bar required · "1d"
entry required · object
View entry model
Variant 1: object
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Variant 2: object
op required · "and" | "or"
conditions required · array of object
View conditions model

Array items:

op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Additional fields: JSON values.

exit required · object
View exit model
Variant 1: object
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Variant 2: object
op required · "and" | "or"
conditions required · array of object
View conditions model

Array items:

op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"
left required · number | object
View left model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

right required · number | object
View right model
Variant 1: number

number

Variant 2: object
field required · "close" | "volume"

Additional fields: JSON values.

Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"
period required · number

Additional fields: JSON values.

Variant 4: object
indicator required · "macd"
fast required · number
slow required · number
signal required · number
component required · "line" | "signal" | "histogram"

Additional fields: JSON values.

Additional fields: JSON values.

Additional fields: JSON values.

stop_loss_pct required · null | number
View stop_loss_pct model
Variant 1: null

null

Variant 2: number

number

take_profit_pct required · null | number
View take_profit_pct model
Variant 1: null

null

Variant 2: number

number

Additional fields: JSON values.

sizing required · object
View sizing model
mode required · "equal_notional"
position_pct required · number
max_gross_pct required · number
simultaneous required · "proportional"
pyramiding required · false
borrowing required · false

Additional fields: JSON values.

dataset required · object
View dataset model
Variant 1: object
provider required · "alpaca" | "marketstack"
startDate required · string
endDate required · string
timeframe required · "1D" | "1H"
nicheId required · number
nicheKey required · string
equitiesOnly required · boolean
excludeEtfs required · boolean
excludeIndiaEtfs required · boolean

Additional fields: JSON values.

Variant 2: object
provider required · "alpaca" | "marketstack"
startDate required · string
endDate required · string
timeframe required · "1D" | "1H"
source required · "catalog"
country required · string
geography required · "exposure" | "listing"
instrumentType required · "other" | "stock" | "etf"
theme optional · string

Additional fields: JSON values.

Additional fields: JSON values.

readback required · object
View readback model
entry required · object
View entry model
match required · string
conditions required · array of object
View conditions model

Array items:

left required · string
operator required · string
right required · string

Additional fields: JSON values.

Additional fields: JSON values.

exit required · object
View exit model
match required · string
conditions required · array of object
View conditions model

Array items:

left required · string
operator required · string
right required · string

Additional fields: JSON values.

Additional fields: JSON values.

side required · string
bar required · string
execution required · string
stopLossPct required · null | number
View stopLossPct model
Variant 1: null

null

Variant 2: number

number

takeProfitPct required · null | number
View takeProfitPct model
Variant 1: null

null

Variant 2: number

number

sizing required · object
View sizing model
mode required · "equal_notional"
position_pct required · number
max_gross_pct required · number
simultaneous required · "proportional"
pyramiding required · false
borrowing required · false

Additional fields: JSON values.

searchTrials required · number
evaluatorVersion required · string

Additional fields: JSON values.

status required · "confirmed"
versionId required · string
versionNumber required · number

Additional fields: JSON values.

400 · Invalid request.

application/json

400 example · synthetic data
{
  "code": "example",
  "error": "example",
  "field": "example"
}
View response model
code required · string
error required · string
field required · string

Additional fields: JSON values.

401 · Authentication is missing or invalid.

application/json

401 example · synthetic data
{}
View response model

Error envelopes can include resource-specific details. Check the status before reading these fields.

error optional · string
code optional · string
message optional · string

Additional fields: JSON values.

403 · Permission, origin or CSRF check failed.

application/json

403 example · synthetic data
{
  "code": "example",
  "error": "example"
}
View response model
code required · string
error required · string

Additional fields: JSON values.

429 · Rate limit reached; honor Retry-After when supplied.

application/json

429 example · synthetic data
{}
View response model

Error envelopes can include resource-specific details. Check the status before reading these fields.

error optional · string
code optional · string
message optional · string

Additional fields: JSON values.

500 · Server failure.

application/json

500 example · synthetic data
{
  "code": "example",
  "error": "example"
}
View response model
code required · string
error required · string

Additional fields: JSON values.

default · Operation-specific error. Inspect error/code before deciding whether to retry.

application/json

default example · synthetic data
{
  "code": "example",
  "error": "example"
}
View response model
code required · string
error required · string

Additional fields: JSON values.