---
title: "Closed trades — one row per round trip with realised P&L net of fees and funding. Cursor-paged: echo BOTH nextCursor (as before) and nextCursorId (as before_id), or trades sharing a close time are skipped across the page boundary (scope: trading:read)"
method: GET
path: "/v1/trading/trades"
---

# Closed trades — one row per round trip with realised P&L net of fees and funding. Cursor-paged: echo BOTH nextCursor (as before) and nextCursorId (as before_id), or trades sharing a close time are skipped across the page boundary (scope: trading:read)

`GET /v1/trading/trades`

## Request

- Base URL: `https://app.texttoquant.com/api`
- URL: `https://app.texttoquant.com/api/v1/trading/trades`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Query parameters

- `source` 'live' | 'paper' | 'manual' | 'all'
- `deployment_id` string, uuid
- `limit` integer
- `before` string, date-time
- `before_id` string, uuid
- `from` string, date-time
- `to` string, date-time
- `symbols` string
- `direction` 'long' | 'short'
- `result` 'win' | 'loss'
- `dows` string
- `hour_from` integer
- `hour_to` integer
- `tz` string

## Response `200`

Success

- object
  - `success` true, required
  - `data` object, required
    - `trades` object[]
    - `nextCursor` string, nullable
    - `nextCursorId` string, nullable

## Other responses

- `403`: insufficient_scope — the key lacks trading:read/trading:write; or upgrade_required — the plan has no live trading
- `429`: rate_limited
- `503`: plan_unavailable — the plan could not be resolved; retry

---

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