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
| Parameter | Location | Type and requirement |
|---|---|---|
strategyId | path | string · required |
x-idempotency-key | header | string · required Pattern: |
Origin | header | string · required An origin allowed by this deployment. |
X-CSRF-Token | header | string · 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 · objectView executionPlan model
mode required · "stage_a_only" | "stage_b_only" | "stage_a_to_b"stageASourceRunId required · null | stringView stageASourceRunId model
Variant 1: null
null
Variant 2: string
string
stageAStudyName optional · null | stringView stageAStudyName model
Variant 1: null
null
Variant 2: string
string
stageAComponent optional · null | objectView stageAComponent model
Variant 1: null
null
Variant 2: object
sourceKind required · "weavers_preset"componentType required · "stage_a" | "stage_b"componentKey required · stringVariant 3: object
sourceKind required · "notebook_component"componentType required · "stage_a" | "stage_b"componentKey required · stringstageBComponent optional · null | objectView stageBComponent model
Variant 1: null
null
Variant 2: object
sourceKind required · "weavers_preset"componentType required · "stage_a" | "stage_b"componentKey required · stringVariant 3: object
sourceKind required · "notebook_component"componentType required · "stage_a" | "stage_b"componentKey required · stringcanvas required · null | objectView canvas model
Variant 1: null
null
Variant 2: object
version required · 1nodes required · array of objectView nodes model
Array items:
id required · stringkind required · "stage_a_trainer" | "stage_b_entry_gate" | "stage_b_feasibility_gate" | "stage_b_optimizer"x required · numbery required · numberedges required · array of objectView edges model
Array items:
id required · stringsource required · stringtarget required · stringstageAUniverseSource optional · null | objectView stageAUniverseSource model
Variant 1: null
null
Variant 2: object
type required · "base"Variant 3: object
type required · "platform_niche"nicheId required · numbernicheKey required · stringVariant 4: object
type required · "ticker_pool"symbols required · array of stringView symbols model
Array items:
string
stageADataSelectors optional · null | objectView stageADataSelectors model
Variant 1: null
null
Variant 2: object
matchMode required · "all" | "any"selectors required · array of objectView selectors model
Array items:
Variant 1: object
type required · "channel"timeframe required · "1d" | "4h" | "1h"windowDays required · numberdirections required · array of "ascending" | "descending"View directions model
Array items:
"ascending" | "descending"
requireValid required · booleanalgoVersion optional · stringcharacteristics optional · objectView characteristics model
states optional · array of "new" | "continuing"View states model
Array items:
"new" | "continuing"
minR2 optional · numbermaxR2 optional · numberminBandPosition optional · numbermaxBandPosition optional · numberminBandWidthRatio optional · numbermaxBandWidthRatio optional · numberminNormalizedSlope optional · numbermaxNormalizedSlope optional · numberminConsecutiveRuns optional · numbermaxConsecutiveRuns optional · numbermissingDataPolicy required · "skip_and_log"Variant 2: object
type required · "regime"source required · "snapshot"regime required · "bull" | "bear" | "stable"minConfidence required · numbermissingDataPolicy required · "skip_and_log"parameters optional · objectView parameters model
dataProvider required · "alpaca"publishBenchmarkSymbol required · "SPY"objectivePreset required · "balanced" | "return_focus" | "risk_focus"workerCount required · numberstartDate required · null | stringView startDate model
Variant 1: null
null
Variant 2: string
string
endDate required · null | stringView endDate model
Variant 1: null
null
Variant 2: string
string
equitiesOnly required · booleanexcludeEtfs required · booleanexcludeIndiaEtfs required · booleanstageATrials required · numberstageA2Mode required · "disabled" | "auto"stageA2Trials required · numberstageAToA2Threshold required · numberstageA2HorizonBars required · numberstageA2LabelMinUpPct required · numberstageA2PredictorFeaturesCsv required · stringstageBTrials required · numberstageBExecutionTimeframe required · "1d" | "4h" | "1h"stageBMaxHoldingBars required · numberlookbackYears required · numbertrainMonths required · numbervalMonths required · numberstepMonths required · numberpurgeDays required · numberholdoutMonths required · numberholdoutStartDate optional · null | stringView holdoutStartDate model
Variant 1: null
null
Variant 2: string
string
horizonBars required · numberlabelMinUpPct required · numberstageAFeatureTimeframe required · "1d"predictorFeaturesCsv required · stringstageADecisionThreshold required · numberentryFilters optional · null | objectView entryFilters model
Variant 1: null
null
Variant 2: object
schema_version required · 1bar required · "1d"condition required · objectView condition model
Variant 1: object
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"left required · number | objectView left model
Variant 1: number
number
Variant 2: object
field required · "close" | "volume"Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"period required · numberVariant 4: object
indicator required · "macd"fast required · numberslow required · numbersignal required · numbercomponent required · "line" | "signal" | "histogram"right required · number | objectView right model
Variant 1: number
number
Variant 2: object
field required · "close" | "volume"Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"period required · numberVariant 4: object
indicator required · "macd"fast required · numberslow required · numbersignal required · numbercomponent required · "line" | "signal" | "histogram"Variant 2: object
op required · "and" | "or"conditions required · array of objectView conditions model
Array items:
op required · "cross_above" | "cross_below" | "gt" | "gte" | "lt" | "lte"left required · number | objectView left model
Variant 1: number
number
Variant 2: object
field required · "close" | "volume"Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"period required · numberVariant 4: object
indicator required · "macd"fast required · numberslow required · numbersignal required · numbercomponent required · "line" | "signal" | "histogram"right required · number | objectView right model
Variant 1: number
number
Variant 2: object
field required · "close" | "volume"Variant 3: object
indicator required · "sma" | "ema" | "rsi" | "atr"period required · numberVariant 4: object
indicator required · "macd"fast required · numberslow required · numbersignal required · numbercomponent required · "line" | "signal" | "histogram"stageALearningRateMin required · numberstageALearningRateMax required · numberstageAL2Min required · numberstageAL2Max required · numberstageAEpochsMin required · numberstageAEpochsMax required · numberstageAPosWeightMin required · numberstageAPosWeightMax required · numbertpMin required · numbertpMax required · numberslMin required · numberslMax required · numberreserveCashPctMin required · numberreserveCashPctMax required · numberoptimizeProbThreshold required · booleanprobThresholdMin required · numberprobThresholdMax required · numberexecutionMode required · "notional" | "capital"executionBrokerId required · stringleverageMode required · "cash" | "reg_t"requestedLeverage required · 1 | 2marginInterestAnnualRatePct required · null | numberView marginInterestAnnualRatePct model
Variant 1: null
null
Variant 2: number
number
marginInterestDayCountBasis required · null | numberView marginInterestDayCountBasis model
Variant 1: null
null
Variant 2: number
number
marginInterestRateSource required · null | stringView marginInterestRateSource model
Variant 1: null
null
Variant 2: string
string
marginInterestBenchmarkId required · null | stringView marginInterestBenchmarkId model
Variant 1: null
null
Variant 2: string
string
marginInterestBenchmarkRatePct required · null | numberView marginInterestBenchmarkRatePct model
Variant 1: null
null
Variant 2: number
number
marginInterestBenchmarkRateSeries required · null | array of objectView marginInterestBenchmarkRateSeries model
Variant 1: null
null
Variant 2: array of object
Array items:
date required · stringrate_pct required · numbermarginInterestSpreadPct required · null | numberView marginInterestSpreadPct model
Variant 1: null
null
Variant 2: number
number
initialMarginRequirementPct required · null | numberView initialMarginRequirementPct model
Variant 1: null
null
Variant 2: number
number
maintenanceMarginRequirementPct required · null | numberView maintenanceMarginRequirementPct model
Variant 1: null
null
Variant 2: number
number
marketFeeProfile required · null | objectView marketFeeProfile model
Variant 1: null
null
Variant 2: object
Additional fields: JSON value.
initialCapital required · numberriskPerTradePct required · numbermaxPositionPctEquity required · numbermaxGrossExposurePctEquity required · numberallowFractionalShares required · booleanmaxTradesPerDay required · null | numberView maxTradesPerDay model
Variant 1: null
null
Variant 2: number
number
commissionBps required · numberslippageBps required · numberhalfSpreadBps required · numberborrowBpsPerBar required · numberminTrades required · numbermaxDrawdown required · numberdrawdownGateMetric required · "max_drawdown_p75" | "max_drawdown_stitched"maxSymbolConcentration required · numberminRiskAdjusted required · numbermaxTurnover required · null | numberView maxTurnover model
Variant 1: null
null
Variant 2: number
number
maxCvar95 required · null | numberView maxCvar95 model
Variant 1: null
null
Variant 2: number
number
lambdaReturn required · numberlambdaStability required · numberlambdaTail required · numberlambdaDrawdown required · numberlambdaConcentration required · numberlambdaTurnover required · numbernegativeRiskAdjustedPenalty required · numbersaveValidationTrades required · booleanstageASeedBase required · numberstageBSeedBase required · numberExample
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.
{}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.jsonResponses
200 · Successful response.
application/json
{
"runId": "1",
"createdAt": "2025-01-01T00:00:00.000Z",
"idempotentReplay": false,
"parentStrategyId": "1",
"parentStrategyAlias": "example",
"childStrategyId": "1",
"childStrategyAlias": "example"
}View response model
runId required · stringcreatedAt required · stringidempotentReplay required · booleanparentStrategyId required · stringparentStrategyAlias required · stringchildStrategyId required · stringchildStrategyAlias required · stringAdditional fields: JSON values.
202 · Work accepted. Poll the returned job or request identifier.
application/json
{
"runId": "1",
"createdAt": "2025-01-01T00:00:00.000Z",
"idempotentReplay": false,
"parentStrategyId": "1",
"parentStrategyAlias": "example",
"childStrategyId": "1",
"childStrategyAlias": "example"
}View response model
runId required · stringcreatedAt required · stringidempotentReplay required · booleanparentStrategyId required · stringparentStrategyAlias required · stringchildStrategyId required · stringchildStrategyAlias required · stringAdditional fields: JSON values.
400 · Invalid request.
application/json
{
"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 · stringAdditional fields: JSON values.
Variant 3: object
error required · stringcode required · stringAdditional fields: JSON values.
401 · Authentication is missing or invalid.
application/json
{}View response model
Error envelopes can include resource-specific details. Check the status before reading these fields.
error optional · stringcode optional · stringmessage optional · stringAdditional fields: JSON values.
403 · Permission, origin or CSRF check failed.
application/json
{}View response model
Error envelopes can include resource-specific details. Check the status before reading these fields.
error optional · stringcode optional · stringmessage optional · stringAdditional fields: JSON values.
404 · Resource or enabled capability not found.
application/json
{
"error": "example",
"code": "example"
}View response model
error required · stringcode required · stringAdditional fields: JSON values.
429 · Rate limit reached; honor Retry-After when supplied.
application/json
{}View response model
Error envelopes can include resource-specific details. Check the status before reading these fields.
error optional · stringcode optional · stringmessage optional · stringAdditional fields: JSON values.
500 · Server failure.
application/json
{
"error": "example",
"code": "example"
}View response model
error required · stringcode required · stringAdditional fields: JSON values.
default · Operation-specific error. Inspect error/code before deciding whether to retry.
application/json
{
"error": "example",
"code": "example"
}View response model
error required · stringcode required · stringAdditional fields: JSON values.