Skip to documentation
Weavers Docs

Pages and endpoints

Tab to navigate · Enter to openEsc to close

POST /api/strategies/:strategyId/fork

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.
  • The published source must be forkable. The returned draft belongs to the requesting account; this does not modify the published source.
  • Protected writes require an allowed Origin, the CSRF cookie and matching X-CSRF-Token header.

Request

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

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

Originheaderstring · required

An origin allowed by this deployment.

X-CSRF-Tokenheaderstring · required

Must match the CSRF cookie issued to this browser.

Body · application/json

templateKey optional · "tp_sl_two_stage_nsga2_v1"
cluster optional · "dev"
executionPlan optional · 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"
parameters optional · 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

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
{}
cURL (POSIX shell)
curl --include \
  --request POST \
  'https://api.weavers.app/api/strategies/11111111-1111-4111-8111-111111111111/fork' \
  --cookie cookies.txt --cookie-jar cookies.txt \
  --header 'x-idempotency-key: example-request-0001' \
  --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
{
  "runId": "1",
  "createdAt": "2025-01-01T00:00:00.000Z",
  "idempotentReplay": false,
  "parentStrategyId": "1",
  "parentStrategyAlias": "example",
  "childStrategyId": "1",
  "childStrategyAlias": "example"
}
View response model
runId required · string
createdAt required · string
idempotentReplay required · boolean
parentStrategyId required · string
parentStrategyAlias required · string
childStrategyId required · string
childStrategyAlias required · string

Additional fields: JSON values.

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

application/json

202 example · synthetic data
{
  "runId": "1",
  "createdAt": "2025-01-01T00:00:00.000Z",
  "idempotentReplay": false,
  "parentStrategyId": "1",
  "parentStrategyAlias": "example",
  "childStrategyId": "1",
  "childStrategyAlias": "example"
}
View response model
runId required · string
createdAt required · string
idempotentReplay required · boolean
parentStrategyId required · string
parentStrategyAlias required · string
childStrategyId required · string
childStrategyAlias required · string

Additional fields: JSON values.

400 · Invalid request.

application/json

400 example · synthetic data
{
  "error": "invalid_strategy_id"
}
View response model
Variant 1: object
error required · "invalid_strategy_id" | "strategy_id_required"

Additional fields: JSON values.

Variant 2: object
error required · string

Additional fields: JSON values.

Variant 3: object
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.

404 · Resource or enabled capability not found.

application/json

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