Skip to main content
Every error response is JSON with a top-level detail field. We don’t use opaque error codes — the status code + detail string are the full contract.

Response shape

For validation errors emitted by FastAPI’s request parsing, detail is an array of field-level reports:

Status code reference

Idempotency

GET is always safe to retry. POST /v1/backtest and POST /v1/backtest/sweep are not idempotent — retrying creates a second job. If your backtest POST timed out, query GET /v1/backtest to see whether the first one took.

Reporting a bug

If you hit a 500 you think shouldn’t exist, or a response that disagrees with the dashboard, email contact@polyquantlab.com with:
  • the request URL + headers (minus the Authorization)
  • the request body (for POST)
  • the response status + body
  • approximate UTC timestamp
We can correlate logs back to nanoseconds if you give us a UTC time.