Models

Rebuild Model

Regenerate the model's implementation.

With prompt, the model is rewritten to the new description. With script, your implementation replaces the stored one (validated and smoke-run, no generation). With neither, the stored prompt is used again: a failed model is rebuilt from its own failure (the generator sees the script that broke and the error), a built model is simply regenerated. A built model keeps serving its current implementation until the new one succeeds; existing runs keep the script_hash they ran under. Answers 202 with run.kind rebuild; the model's run becomes null when work ends. Metered like a create. 409 rebuild_conflict while a build owns the model.

post/v1/models/{model}/rebuild

Request

  • Base URL: https://api.ensemble.markets (the document declares no server; this is the origin it was published from)
  • URL: https://api.ensemble.markets/v1/models/{model}/rebuild
  • Auth: HTTP bearer

Path parameters

modelstring required

Model ID (model_... or legacy m-...), slug, symbol or exact name

Request body

promptstring nullable

New description. Omit to rebuild from the stored prompt. Members may change; a model can never hold one of its own parents.

scriptstring nullable

Your own implementation instead of a prompt. Validated against the same contract as generated code, smoke-run in the sandbox, and stored verbatim. Billed as a build without generation tokens.

namestring nullable

Rename the model (defaults to keeping the current name)

symbolstring nullable

Change the model symbol (defaults to keeping the current one)

effort'min' | 'mid' | 'max' nullable

How hard the generator works. min (default, all plans): a fast single-shot build. mid (Hobby and Business): a stronger model plus a fidelity review of the script against your description. max (Business): additionally inspects results and refines the implementation. Higher effort bills more per token. Defaults to the effort of the previous build when the prompt is omitted, otherwise min.

start_datestring date nullable

Where the default view of the history begins (YYYY-MM-DD). The full history is always computed and full_history=true on any history read reveals it; omission lets start_rule choose. The backtest's start date is an execution input, separate from this view window. Omitted: a new prompt is read for a date or period, otherwise the stored setting is kept.

start_rule'two_members' | 'all_members' | 'first_member' nullable

Where the default view begins when no start_date is set. two_members (default): the first day two universe members have data, the earliest a rebalance between them means anything. all_members: the first day every member has data. first_member: the first day any member has data, the full history. Omitted: the stored rule is kept.

Example request

{
  "prompt": "Buy and hold SPY, rebalanced monthly",
  "name": "My SPY Strategy",
  "symbol": "SPY-BH",
  "start_date": "2020-01-01"
}

Response

Successful Response

idstring required

Model ID (model_... or legacy m-...)

namestring nullable

May be null if the build failed before naming

symbolstring nullable

May be null if the build failed before naming

status'building' | 'active' | 'updating' | 'paused' | 'blocked' | 'failed' required

building: no results yet; active: results served and refreshed nightly; updating: a rebuild or refresh is running (results keep serving); blocked: updates await a failed or unavailable dependency; paused: results served, nightly refresh off; failed: the build never produced a usable model

warningstring nullable

Something went wrong without changing the status: a failed rebuild, a paused auto-update, or overdue data

depthinteger

0 when the model holds assets only; otherwise one more than its deepest member

as_ofstring date nullable

Last market session covered by the results

auto_updateboolean

Whether the nightly refresh is on

is_publicboolean required
is_favoriteboolean nullable

Owner's favorite state; null for non-owner readers

labelsstring[] nullable

Owner's private organizational labels; null for non-owner readers

urlstring nullable

Tear sheet URL; set once the model has built

created_atstring date-time required
updated_atstring date-time required
descriptionstring nullable
approved_revision_idstring nullable
editing_availableboolean
promptstring required
universestring[] nullable

Symbols the model's code actually trades, as recorded by the runtime: tickers, member model IDs, or both. Null until a run has succeeded.

script_urlstring nullable

Download URL for the standalone Python implementation (runtime harness inlined, served as text/x-python). Null until code exists.

start_datestring date nullable

Where the default view of the history begins (YYYY-MM-DD). The full history is always computed and full_history=true on any history read reveals it; omission lets start_rule choose. The backtest's start date is an execution input, separate from this view window.

start_rule'two_members' | 'all_members' | 'first_member'

Where the default view begins when no start_date is set. two_members (default): the first day two universe members have data, the earliest a rebalance between them means anything. all_members: the first day every member has data. first_member: the first day any member has data, the full history.

inputs_schemaobject nullable

JSON Schema for inputs on a run, with defaults: the script's declared inputs followed by the platform's start_date (format date, default null). A run at the defaults computes the full history and goes live; a run with a start_date trades nothing before it and is a snapshot.

live_run_idstring nullable

The default run whose result is the live history

estimate_centsinteger nullable

On the 202 from create and rebuild: what the queued build holds against the balance, in cents. The charge that lands when it finishes replaces this figure. Null on every other read.

build_idstring nullable

The build that produced the current script; on a failed program, the failed build, so getBuild shows what was billed. getBuild returns it.

is_ownerboolean

True when the caller owns this model

Changes

No recorded changes to this operation across all 1 revision of this API.