Polyrankdocs
ApiLab

POST /v1/lab/strategies/{id}/paper

Start paper trading one of the caller’s strategies: from now on, every signal of its wallets is scored against the real order book (no orders, no keys). The spec and a Builder source’s config are frozen into the run; wallets are seated as-of today and re-seated every rerank_days. One active run per strategy (409 `paper_run_active`); a strategy that copies no wallet has its rules evaluated on the live order-book stream with the backtest’s own decisions, once per market, each entry filled on the live book (400 `rules_paper_not_yet` while LAB_RULES_PAPER_ENABLED is off); 400 `limit_orders_paper_not_yet` for a strategy whose entry rests a limit order (backtests only, for now); 400 `lab_paper_runs_max` at the plan’s limit; 403 `plan_required` (paper_trading). 404 `lab_paper_disabled` while LAB_PAPER_ENABLED is off.

POST
/v1/lab/strategies/{id}/paper

Start paper trading one of the caller’s strategies: from now on, every signal of its wallets is scored against the real order book (no orders, no keys). The spec and a Builder source’s config are frozen into the run; wallets are seated as-of today and re-seated every rerank_days. One active run per strategy (409 paper_run_active); a strategy that copies no wallet has its rules evaluated on the live order-book stream with the backtest’s own decisions, once per market, each entry filled on the live book (400 rules_paper_not_yet while LAB_RULES_PAPER_ENABLED is off); 400 limit_orders_paper_not_yet for a strategy whose entry rests a limit order (backtests only, for now); 400 lab_paper_runs_max at the plan’s limit; 403 plan_required (paper_trading). 404 lab_paper_disabled while LAB_PAPER_ENABLED is off.

AuthorizationBearer <token>

API key: Authorization: Bearer pk_live_… (mint at polyrank.app/api-keys)

In: header

Path Parameters

id*string

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/lab/strategies/497f6eca-6276-4993-bfeb-53cbbbba6f08/paper"
{  "id": "string",  "strategy_id": "string",  "status": "active",  "wallets": [    "string"  ],  "wallets_refreshed_at": "string",  "started_at": "string",  "stopped_at": "string",  "graded_at": "string",  "resolved_copies": 0,  "promotable": true,  "stats": {    "property1": null,    "property2": null  },  "notes": [    "string"  ],  "known_issues": [    "string"  ],  "kind": "copy"}
{  "error": "string",  "message": "string",  "feature": "string",  "field": "string",  "plan": "string",  "retry_after_sec": 0,  "retry_after_seconds": 0,  "reason": "string",  "issues": [    null  ],  "trace_id": "string"}
{  "error": "string",  "message": "string",  "feature": "string",  "field": "string",  "plan": "string",  "retry_after_sec": 0,  "retry_after_seconds": 0,  "reason": "string",  "issues": [    null  ],  "trace_id": "string"}
{  "error": "string",  "message": "string",  "feature": "string",  "field": "string",  "plan": "string",  "retry_after_sec": 0,  "retry_after_seconds": 0,  "reason": "string",  "issues": [    null  ],  "trace_id": "string"}
{  "error": "string",  "message": "string",  "feature": "string",  "field": "string",  "plan": "string",  "retry_after_sec": 0,  "retry_after_seconds": 0,  "reason": "string",  "issues": [    null  ],  "trace_id": "string"}
{  "error": "string",  "message": "string",  "feature": "string",  "field": "string",  "plan": "string",  "retry_after_sec": 0,  "retry_after_seconds": 0,  "reason": "string",  "issues": [    null  ],  "trace_id": "string"}
{  "error": "string",  "message": "string",  "feature": "string",  "field": "string",  "plan": "string",  "retry_after_sec": 0,  "retry_after_seconds": 0,  "reason": "string",  "issues": [    null  ],  "trace_id": "string"}
{  "error": "string",  "message": "string",  "feature": "string",  "field": "string",  "plan": "string",  "retry_after_sec": 0,  "retry_after_seconds": 0,  "reason": "string",  "issues": [    null  ],  "trace_id": "string"}