Skip to documentation
Weavers Docs

Pages and endpoints

Tab to navigate · Enter to openEsc to close

POST /api/eureka/notebooks/:notebookKey/strategy-runs

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.
  • Use a saved notebook and 1–24 selected code cells. Hashes and byte counts must match the saved cell source. Maximum request size: 320 KiB. Use the returned runId to inspect the optimisation run.
  • Protected writes require an allowed Origin, the CSRF cookie and matching X-CSRF-Token header.
  • Send a fresh X-Request-Nonce and current X-Request-Timestamp on every attempt. Reuse an idempotency key only for the same logical action.

Request

ParameterLocationType and requirement
notebookKeypathstring · required
x-idempotency-keyheaderstring · required

Pattern: ^[A-Za-z0-9_-]{8,128}$

X-Request-Nonceheaderstring · required

Generate a fresh nonce for every attempt.

Pattern: ^[A-Za-z0-9_-]{16,128}$

X-Request-Timestampheaderstring · required

Current Unix seconds (10 digits) or milliseconds (13 digits).

Pattern: ^(?:[0-9]{10}|[0-9]{13})$

Originheaderstring · required

An origin allowed by this deployment.

X-CSRF-Tokenheaderstring · required

Must match the CSRF cookie issued to this browser.

Body · application/json

schema required · "weavers.notebook.strategy_run.v1"
version required · 1
notebookKey required · string
notebookSavedAt required · string
engine required · "local" | "cloud"
selectedCells required · array of object
View selectedCells model

Array items:

cellId required · string
sourceSha256 required · string
sourceBytes required · number
sourceUpdatedAt required · string
document optional · object
View document model
schema required · "weavers.notebook.v1"
version required · 1
notebookKey required · string
title required · string
cells required · array of object
View cells model

Array items:

id required · string
kind required · "bootstrap" | "code"
language required · "python" | "weavers-bootstrap"
locked required · boolean
strategyRunEnabled optional · false | true
source required · string
status required · "idle" | "running" | "success" | "stale" | "error" | "blocked"
outputs required · array of object
View outputs model

Array items:

id required · string
kind required · "error" | "text" | "json" | "table" | "chart"
text required · string
createdAt required · string
metadata optional · object
View metadata model

Additional fields: JSON value.

createdAt required · string
updatedAt required · string
createdAt required · string
updatedAt required · string
universeSource optional · null | object
View universeSource model
Variant 1: null

null

Variant 2: object
type required · "base"
Variant 3: object
type required · "platform_niche"
nicheId required · number
nicheKey required · string
Variant 4: object
type required · "ticker_pool"
symbols required · array of string
View symbols model

Array items:

string

optimisationRequest required · object
View optimisationRequest model
compute optional · object
View compute model
tier required · "included" | "accelerated"
vcpus required · number
memoryGiB required · number
maxHours required · number
maxTwigs required · number
experimentName optional · string
candidateSourceRunId optional · string
candidateTitle optional · string
experimentKey required · "tp_sl_two_stage"
templateKey required · "tp_sl_two_stage_nsga2_v1"
cluster required · "dev"
parameters required · object
View parameters model
dataProvider required · "alpaca"
publishBenchmarkSymbol required · "SPY"
objectivePreset required · "balanced" | "return_focus" | "risk_focus"
workerCount required · number
startDate required · null | string
View startDate model
Variant 1: null

null

Variant 2: string

string

endDate required · null | string
View endDate model
Variant 1: null

null

Variant 2: string

string

equitiesOnly required · boolean
excludeEtfs required · boolean
excludeIndiaEtfs required · boolean
stageATrials required · number
stageA2Mode required · "disabled" | "auto"
stageA2Trials required · number
stageAToA2Threshold required · number
stageA2HorizonBars required · number
stageA2LabelMinUpPct required · number
stageA2PredictorFeaturesCsv required · string
stageBTrials required · number
stageBExecutionTimeframe required · "1d" | "4h" | "1h"
stageBMaxHoldingBars required · number
lookbackYears required · number
trainMonths required · number
valMonths required · number
stepMonths required · number
purgeDays required · number
holdoutMonths required · number
holdoutStartDate optional · null | string
View holdoutStartDate model
Variant 1: null

null

Variant 2: string

string

horizonBars required · number
labelMinUpPct required · number
stageAFeatureTimeframe required · "1d"
predictorFeaturesCsv required · string
stageADecisionThreshold required · number
entryFilters optional · null | object
View entryFilters model
Variant 1: null

null

Variant 2: object
schema_version required · 1
bar required · "1d"
condition required · object
View condition 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"
stageALearningRateMin required · number
stageALearningRateMax required · number
stageAL2Min required · number
stageAL2Max required · number
stageAEpochsMin required · number
stageAEpochsMax required · number
stageAPosWeightMin required · number
stageAPosWeightMax required · number
tpMin required · number
tpMax required · number
slMin required · number
slMax required · number
reserveCashPctMin required · number
reserveCashPctMax required · number
optimizeProbThreshold required · boolean
probThresholdMin required · number
probThresholdMax required · number
executionMode required · "notional" | "capital"
executionBrokerId required · string
leverageMode required · "cash" | "reg_t"
requestedLeverage required · 1 | 2
marginInterestAnnualRatePct required · null | number
View marginInterestAnnualRatePct model
Variant 1: null

null

Variant 2: number

number

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

null

Variant 2: number

number

marginInterestRateSource required · null | string
View marginInterestRateSource model
Variant 1: null

null

Variant 2: string

string

marginInterestBenchmarkId required · null | string
View marginInterestBenchmarkId model
Variant 1: null

null

Variant 2: string

string

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

null

Variant 2: number

number

marginInterestBenchmarkRateSeries required · null | array of object
View marginInterestBenchmarkRateSeries model
Variant 1: null

null

Variant 2: array of object

Array items:

date required · string
rate_pct required · number
marginInterestSpreadPct required · null | number
View marginInterestSpreadPct model
Variant 1: null

null

Variant 2: number

number

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

null

Variant 2: number

number

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

null

Variant 2: number

number

marketFeeProfile required · null | object
View marketFeeProfile model
Variant 1: null

null

Variant 2: object

Additional fields: JSON value.

initialCapital required · number
riskPerTradePct required · number
maxPositionPctEquity required · number
maxGrossExposurePctEquity required · number
allowFractionalShares required · boolean
maxTradesPerDay required · null | number
View maxTradesPerDay model
Variant 1: null

null

Variant 2: number

number

commissionBps required · number
slippageBps required · number
halfSpreadBps required · number
borrowBpsPerBar required · number
minTrades required · number
maxDrawdown required · number
drawdownGateMetric required · "max_drawdown_p75" | "max_drawdown_stitched"
maxSymbolConcentration required · number
minRiskAdjusted required · number
maxTurnover required · null | number
View maxTurnover model
Variant 1: null

null

Variant 2: number

number

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

null

Variant 2: number

number

lambdaReturn required · number
lambdaStability required · number
lambdaTail required · number
lambdaDrawdown required · number
lambdaConcentration required · number
lambdaTurnover required · number
negativeRiskAdjustedPenalty required · number
saveValidationTrades required · boolean
stageASeedBase required · number
stageBSeedBase required · number
executionPlan required · object
View executionPlan model
mode required · "stage_a_only" | "stage_b_only" | "stage_a_to_b"
stageASourceRunId required · null | string
View stageASourceRunId model
Variant 1: null

null

Variant 2: string

string

stageAStudyName optional · null | string
View stageAStudyName model
Variant 1: null

null

Variant 2: string

string

stageAComponent optional · null | object
View stageAComponent model
Variant 1: null

null

Variant 2: object
sourceKind required · "weavers_preset"
componentType required · "stage_a" | "stage_b"
componentKey required · string
Variant 3: object
sourceKind required · "notebook_component"
componentType required · "stage_a" | "stage_b"
componentKey required · string
stageBComponent optional · null | object
View stageBComponent model
Variant 1: null

null

Variant 2: object
sourceKind required · "weavers_preset"
componentType required · "stage_a" | "stage_b"
componentKey required · string
Variant 3: object
sourceKind required · "notebook_component"
componentType required · "stage_a" | "stage_b"
componentKey required · string
canvas required · null | object
View canvas model
Variant 1: null

null

Variant 2: object
version required · 1
nodes required · array of object
View nodes model

Array items:

id required · string
kind required · "stage_a_trainer" | "stage_b_entry_gate" | "stage_b_feasibility_gate" | "stage_b_optimizer"
x required · number
y required · number
edges required · array of object
View edges model

Array items:

id required · string
source required · string
target required · string
stageAUniverseSource optional · null | object
View stageAUniverseSource model
Variant 1: null

null

Variant 2: object
type required · "base"
Variant 3: object
type required · "platform_niche"
nicheId required · number
nicheKey required · string
Variant 4: object
type required · "ticker_pool"
symbols required · array of string
View symbols model

Array items:

string

stageADataSelectors optional · null | object
View stageADataSelectors model
Variant 1: null

null

Variant 2: object
matchMode required · "all" | "any"
selectors required · array of object
View selectors model

Array items:

Variant 1: object
type required · "channel"
timeframe required · "1d" | "4h" | "1h"
windowDays required · number
directions required · array of "ascending" | "descending"
View directions model

Array items:

"ascending" | "descending"

requireValid required · boolean
algoVersion optional · string
characteristics optional · object
View characteristics model
states optional · array of "new" | "continuing"
View states model

Array items:

"new" | "continuing"

minR2 optional · number
maxR2 optional · number
minBandPosition optional · number
maxBandPosition optional · number
minBandWidthRatio optional · number
maxBandWidthRatio optional · number
minNormalizedSlope optional · number
maxNormalizedSlope optional · number
minConsecutiveRuns optional · number
maxConsecutiveRuns optional · number
missingDataPolicy required · "skip_and_log"
Variant 2: object
type required · "regime"
source required · "snapshot"
regime required · "bull" | "bear" | "stable"
minConfidence required · number
missingDataPolicy required · "skip_and_log"
seedConfig optional · null | object
View seedConfig model
Variant 1: null

null

Variant 2: object
sourceStrategyId required · string
sourceStrategyRegistryId required · number
sourceArtifactId required · number
sourceRunId required · null | string
View sourceRunId model
Variant 1: null

null

Variant 2: string

string

stageAConfig required · object
View stageAConfig model

Additional fields: JSON value.

finalExecutionConfig required · object
View finalExecutionConfig model

Additional fields: JSON value.

clientLaunch optional · null | object
View clientLaunch model
Variant 1: null

null

Variant 2: object
validationRevisionId optional · string
eurekaStrategyWorkspaceId optional · string
researchQuestion optional · string
submittedAt required · string
timezone required · null | string
View timezone model
Variant 1: null

null

Variant 2: string

string

localTimestamp required · string
notebookStrategyRun optional · null | object
View notebookStrategyRun model
Variant 1: null

null

Variant 2: object
schema required · "weavers.notebook.strategy_run.v1"
notebookKey required · string
notebookSavedAt required · string
selectedCells required · array of object
View selectedCells model

Array items:

cellId required · string
sourceSha256 required · string
sourceBytes required · number
sourceUpdatedAt 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
{
  "schema": "weavers.notebook.strategy_run.v1",
  "version": 1,
  "notebookKey": "strategy-11111111-1111-4111-8111-111111111111",
  "notebookSavedAt": "2025-01-01T00:00:00.000Z",
  "engine": "cloud",
  "selectedCells": [
    {
      "cellId": "example-cell",
      "sourceSha256": "51a5983fa1333c582c710ed6131d2bc0d641866150cf23001603a4ae0685b173",
      "sourceBytes": 26,
      "sourceUpdatedAt": "2025-01-01T00:00:00.000Z"
    }
  ],
  "optimisationRequest": {
    "experimentKey": "tp_sl_two_stage",
    "templateKey": "tp_sl_two_stage_nsga2_v1",
    "cluster": "dev",
    "parameters": {
      "dataProvider": "alpaca",
      "publishBenchmarkSymbol": "SPY",
      "objectivePreset": "balanced",
      "workerCount": 6,
      "startDate": "2022-08-01",
      "endDate": "2026-02-18",
      "equitiesOnly": true,
      "excludeEtfs": true,
      "excludeIndiaEtfs": true,
      "stageATrials": 100,
      "stageA2Mode": "disabled",
      "stageA2Trials": 100,
      "stageAToA2Threshold": 0.5,
      "stageA2HorizonBars": 5,
      "stageA2LabelMinUpPct": 0.01,
      "stageA2PredictorFeaturesCsv": "source_stage_a_p_hat,intraday_return_1,intraday_range_pct,intraday_close_pos_session,session_progress",
      "stageBTrials": 200,
      "stageBExecutionTimeframe": "1d",
      "stageBMaxHoldingBars": 5,
      "lookbackYears": 3,
      "trainMonths": 24,
      "valMonths": 1,
      "stepMonths": 1,
      "purgeDays": 7,
      "holdoutMonths": 6,
      "holdoutStartDate": null,
      "horizonBars": 5,
      "labelMinUpPct": 0.01,
      "stageAFeatureTimeframe": "1d",
      "predictorFeaturesCsv": "gamma_atr_norm,atr_slope_14,atr_14,close_pos_20,macd_delta_ma,rsi_delta_ma,wavelet_curvature",
      "stageADecisionThreshold": 0.5,
      "entryFilters": null,
      "stageALearningRateMin": 0.0001,
      "stageALearningRateMax": 0.05,
      "stageAL2Min": 1e-7,
      "stageAL2Max": 0.1,
      "stageAEpochsMin": 100,
      "stageAEpochsMax": 1200,
      "stageAPosWeightMin": 1,
      "stageAPosWeightMax": 8,
      "tpMin": 0.0005,
      "tpMax": 0.08,
      "slMin": 0.0003,
      "slMax": 0.08,
      "reserveCashPctMin": 0.2,
      "reserveCashPctMax": 0.2,
      "optimizeProbThreshold": true,
      "probThresholdMin": 0.68,
      "probThresholdMax": 0.75,
      "executionMode": "capital",
      "executionBrokerId": "none",
      "leverageMode": "cash",
      "requestedLeverage": 1,
      "marginInterestAnnualRatePct": null,
      "marginInterestDayCountBasis": null,
      "marginInterestRateSource": null,
      "marginInterestBenchmarkId": null,
      "marginInterestBenchmarkRatePct": null,
      "marginInterestBenchmarkRateSeries": null,
      "marginInterestSpreadPct": null,
      "initialMarginRequirementPct": null,
      "maintenanceMarginRequirementPct": null,
      "marketFeeProfile": null,
      "initialCapital": 5000,
      "riskPerTradePct": 0.02,
      "maxPositionPctEquity": 0.05,
      "maxGrossExposurePctEquity": 0.5,
      "allowFractionalShares": true,
      "maxTradesPerDay": null,
      "commissionBps": 1,
      "slippageBps": 2,
      "halfSpreadBps": 0,
      "borrowBpsPerBar": 0,
      "minTrades": 30,
      "maxDrawdown": 0.25,
      "drawdownGateMetric": "max_drawdown_stitched",
      "maxSymbolConcentration": 0.25,
      "minRiskAdjusted": 0,
      "maxTurnover": null,
      "maxCvar95": null,
      "lambdaReturn": 1,
      "lambdaStability": 0.25,
      "lambdaTail": 0.75,
      "lambdaDrawdown": 1,
      "lambdaConcentration": 0.5,
      "lambdaTurnover": 0.1,
      "negativeRiskAdjustedPenalty": 1,
      "saveValidationTrades": false,
      "stageASeedBase": 701,
      "stageBSeedBase": 1701
    },
    "executionPlan": {
      "mode": "stage_a_to_b",
      "stageASourceRunId": null,
      "stageAComponent": {
        "sourceKind": "weavers_preset",
        "componentType": "stage_a",
        "componentKey": "weavers.tp_sl.stage_a.xgb.v1"
      },
      "stageBComponent": {
        "sourceKind": "weavers_preset",
        "componentType": "stage_b",
        "componentKey": "weavers.tp_sl.stage_b.nsga2.v1"
      },
      "stageAUniverseSource": {
        "type": "base"
      },
      "stageADataSelectors": null,
      "canvas": {
        "version": 1,
        "nodes": [
          {
            "id": "stage-a",
            "kind": "stage_a_trainer",
            "x": 56,
            "y": 84
          },
          {
            "id": "stage-b-entry-gate",
            "kind": "stage_b_entry_gate",
            "x": 312,
            "y": 84
          },
          {
            "id": "stage-b-feasibility-gate",
            "kind": "stage_b_feasibility_gate",
            "x": 568,
            "y": 84
          },
          {
            "id": "stage-b",
            "kind": "stage_b_optimizer",
            "x": 824,
            "y": 84
          }
        ],
        "edges": [
          {
            "id": "edge-stage-a-stage-b",
            "source": "stage-a",
            "target": "stage-b"
          }
        ]
      }
    }
  }
}
cURL (POSIX shell)
curl --include \
  --request POST \
  'https://api.weavers.app/api/eureka/notebooks/strategy-11111111-1111-4111-8111-111111111111/strategy-runs' \
  --cookie cookies.txt --cookie-jar cookies.txt \
  --header 'x-idempotency-key: example-request-0001' \
  --header "X-Request-Nonce: $(openssl rand -hex 16)" \
  --header "X-Request-Timestamp: $(date +%s)" \
  --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
{
  "schema": "weavers.notebook.strategy_run.v1",
  "version": 1,
  "notebookKey": "strategy-11111111-1111-4111-8111-111111111111",
  "notebookSavedAt": "2025-01-01T00:00:00.000Z",
  "engine": "local",
  "selectedCellIds": [],
  "selectedCells": [],
  "runId": "1",
  "status": "example",
  "createdAt": "2025-01-01T00:00:00.000Z",
  "idempotentReplay": false,
  "message": "Explain the data used in this research."
}
View response model
schema required · "weavers.notebook.strategy_run.v1"
version required · 1
notebookKey required · string
notebookSavedAt required · string
engine required · "local" | "cloud"
selectedCellIds required · array of string
View selectedCellIds model

Array items:

string

selectedCells required · array of object
View selectedCells model

Array items:

cellId required · string
sourceSha256 required · string
sourceBytes required · number
sourceUpdatedAt required · string

Additional fields: JSON values.

runId required · string
status required · string
createdAt required · string
idempotentReplay required · boolean
message required · string

Additional fields: JSON values.

202 · Work accepted. Poll the returned job or request identifier.

application/json

202 example · synthetic data
{
  "schema": "weavers.notebook.strategy_run.v1",
  "version": 1,
  "notebookKey": "strategy-11111111-1111-4111-8111-111111111111",
  "notebookSavedAt": "2025-01-01T00:00:00.000Z",
  "engine": "local",
  "selectedCellIds": [],
  "selectedCells": [],
  "runId": "1",
  "status": "example",
  "createdAt": "2025-01-01T00:00:00.000Z",
  "idempotentReplay": false,
  "message": "Explain the data used in this research."
}
View response model
schema required · "weavers.notebook.strategy_run.v1"
version required · 1
notebookKey required · string
notebookSavedAt required · string
engine required · "local" | "cloud"
selectedCellIds required · array of string
View selectedCellIds model

Array items:

string

selectedCells required · array of object
View selectedCells model

Array items:

cellId required · string
sourceSha256 required · string
sourceBytes required · number
sourceUpdatedAt required · string

Additional fields: JSON values.

runId required · string
status required · string
createdAt required · string
idempotentReplay required · boolean
message required · string

Additional fields: JSON values.

400 · Invalid request.

application/json

400 example · synthetic data
{
  "error": "example",
  "code": "example"
}
View response model
error required · string
code 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
{}
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.

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
{}
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.

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

application/json

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

Additional fields: JSON values.