---
title: "Reproduce Endpoint"
method: POST
path: "/v1/reproduce"
---

# Reproduce Endpoint

`POST /v1/reproduce`

## Request

- Base URL: `https://api.alphaassay.com`
- URL: `https://api.alphaassay.com/v1/reproduce`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string, nullable

## Request body

- ReproduceRequest: Arithmetic audit input: trades + candles + the claimed metrics. Claimed values stay a loose numeric mapping -- the engine grades unknown keys as not assessable instead of bouncing the request.
  - `trades` ReproduceTradeRow[], required
    - `symbol` string, required
    - `side` string, required
    - `entry_time` string, required
    - `exit_time` string, required
    - `entry_price` number, required
    - `exit_price` number, required
    - `exit_order` object, nullable
  - `ohlcv_by_symbol` object, required
  - `claimed` object, required
  - `fee_bps_per_side` number

## Response `200`

Successful Response

- ReproduceOutput
  - `_meta` PublicMeta, required
    - `engine_version` string, required
    - `api_version` string, required
    - `as_of` string, date-time, required
    - `input_digest` string, required
    - `request_digest` string, required
    - `tenant_scope` string, required
    - `tenant_scope_version` string, required
    - `request_id` string, nullable, required
    - `source_identity_digest` string, required
    - `operation` string, required
    - `statefulness` 'pure' | 'public_read' | 'tenant_read' | 'tenant_write', required
    - `not_financial_advice` true, required
    - `disclaimer` string, required
  - `schema` 'reproduce.v1', required
  - `verdict` 'reproduced' | 'not_reproduced' | 'insufficient_evidence', required
  - `reproduced` ReproducedMetrics, required
    - `total_return_pct` union, required
      - integer
      - number
    - `max_drawdown_pct` union, required
      - integer
      - number
    - `win_rate` union, required
      - integer
      - number
    - `n_trades` integer, required
    - `sharpe_annualized` union, required
      - integer
      - number
  - `claimed` ReproduceClaimedMetrics, required
    - `total_return_pct` union
      - integer
      - number
    - `max_drawdown_pct` union
      - integer
      - number
    - `win_rate` union
      - integer
      - number
    - `n_trades` integer, nullable
    - `sharpe_annualized` union
      - integer
      - number
  - `divergence` ReproduceDivergence, required
    - `total_return_pct` MetricDivergence
      - `claimed` union, required
        - integer
        - number
      - `reproduced` union, required
        - integer
        - number
      - `within_tolerance` boolean, nullable, required
      - `abs_diff` union
        - integer
        - number
      - `note` string, nullable
    - `max_drawdown_pct` MetricDivergence
      - `claimed` union, required
        - integer
        - number
      - `reproduced` union, required
        - integer
        - number
      - `within_tolerance` boolean, nullable, required
      - `abs_diff` union
        - integer
        - number
      - `note` string, nullable
    - `win_rate` MetricDivergence
      - `claimed` union, required
        - integer
        - number
      - `reproduced` union, required
        - integer
        - number
      - `within_tolerance` boolean, nullable, required
      - `abs_diff` union
        - integer
        - number
      - `note` string, nullable
    - `n_trades` MetricDivergence
      - `claimed` union, required
        - integer
        - number
      - `reproduced` union, required
        - integer
        - number
      - `within_tolerance` boolean, nullable, required
      - `abs_diff` union
        - integer
        - number
      - `note` string, nullable
    - `sharpe_annualized` MetricDivergence
      - `claimed` union, required
        - integer
        - number
      - `reproduced` union, required
        - integer
        - number
      - `within_tolerance` boolean, nullable, required
      - `abs_diff` union
        - integer
        - number
      - `note` string, nullable
  - `tolerances` ReproduceTolerances, required
    - `total_return_pct` MetricTolerance, required
      - `abs_pp` union, required
        - integer
        - number
      - `rel` union, required
        - integer
        - number
    - `max_drawdown_pct` MetricTolerance, required
      - `abs_pp` union, required
        - integer
        - number
      - `rel` union, required
        - integer
        - number
    - `win_rate` MetricTolerance, required
      - `abs_pp` union, required
        - integer
        - number
      - `rel` union, required
        - integer
        - number
    - `n_trades` MetricTolerance, required
      - `abs_pp` union, required
        - integer
        - number
      - `rel` union, required
        - integer
        - number
    - `sharpe_annualized` MetricTolerance, required
      - `abs_pp` union, required
        - integer
        - number
      - `rel` union, required
        - integer
        - number
  - `findings` AuditFinding[], required
    - `code` string, required
    - `severity` 'hard_fail' | 'warn' | 'info', required
    - `detail` string, required
  - `failure_codes` string[], required
  - `fill_ambiguity` FillAmbiguity, required
    - `ambiguous_trades` integer, required
    - `haircut_pp` union, required
      - integer
      - number
    - `worst_case_total_return_pct` union, required
      - integer
      - number
    - `flips_sign` boolean, required
  - `implementation_uncertainty` ImplementationUncertainty, required
    - `worst_case_total_return_pct` union, required
      - integer
      - number
    - `best_case_total_return_pct` union, required
      - integer
      - number
    - `engine_spread_pp` union, required
      - integer
      - number
    - `claimed_within_any_convention` boolean, required
  - `n_trades` integer, required
  - `fee_bps_per_side` union, required
    - integer
    - number
  - `disclaimer` string, required

## Other responses

- `400`: Request could not be completed
- `401`: Request could not be completed
- `402`: Request could not be completed
- `403`: Request could not be completed
- `409`: Request could not be completed
- `413`: Request could not be completed
- `422`: Request could not be completed
- `429`: Request rate limit exceeded
- `500`: Internal execution failure
- `503`: Request could not be completed

---

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