---
title: "Deploy Bulb"
method: POST
path: "/v1/accounts/{account_id}/deploy"
---

# Deploy Bulb

`POST /v1/accounts/{account_id}/deploy`

## Request

- Base URL: `https://api.quantradin.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.quantradin.com/v1/accounts/{account_id}/deploy`
- Auth: none declared

Deploy a validated bulb onto a paper account: create the deployment and
kick a background forward-walk sync (positions appear once it completes).

Accepts an inline ``strategy_spec`` OR a saved ``strategy_id`` (resolved by
id — paper accounts are standalone principals, not users, so the saved
strategy is NOT user-scoped here).  The spec is validated synchronously —
400 on a bad spec, before anything persists.

Auth: the X-Vega-Key header must resolve to THIS account_id.

## Path parameters

- `account_id` integer, required

## Headers

- `x-vega-key` string, nullable

## Request body

- DeployRequest: POST /v1/accounts/{id}/deploy — deploy a validated bulb onto a paper account. Provide exactly ONE source for the spec: - ``strategy_spec``: an inline strategy spec dict (validated server-side), or - ``strategy_id``: id of a strategy previously saved by the SAME principal. ``name`` is an optional human label for the deployment (e.g. "oversold-bounce"). Deploys are FORWARD-ONLY (founder rule, 2026-07-17): the desk starts trading at the moment of deployment and only ever shows trades that happened while it was deployed. Historical performance lives in the strategy's BACKTEST report (stored per deployment, shown separately) — it is never replayed onto the desk as if the desk had traded it. The old ``backfill_days`` field (default 60!) silently pre-filled two months of simulated trades on every deploy and was removed for exactly that reason; unknown fields sent by old clients are ignored by pydantic.
  - `strategy_spec` object, nullable
  - `strategy_id` integer, nullable
  - `name` string, nullable
  - `description` string, nullable
  - `acknowledge_weak` boolean
  - `requires_approval` boolean
  - `preview_id` string, nullable

## Response `200`

Successful Response

- DeployCreated: Response to a deploy: the new deployment id + its lifecycle status. ``warning`` carries an honest advisory (plain-words ``message`` + the verdict / confidence label / provenance caveat) when the deployed strategy has a KNOWN prior backtest that graded SHELF or inconclusive — the deploy still succeeds (paper is for learning), the warning just makes the backtest's "no" loud.
  - `deploy_id` string, required
  - `status` string
  - `warning` object, nullable
  - `disclosures` string[]
  - `defaults_applied` string[]
  - `fire_check` object, nullable
  - `preview_match` boolean, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/quantradin/apis/vega-api.md) · [All operations](https://skmtc.dev/quantradin/apis/vega-api/llms.txt) · [OpenAPI document](https://skmtc.dev/quantradin/apis/vega-api/revisions/47add154ef38?raw)
