Read a run's signals
Changed onReturns one page of the signals a run has already produced, newest-last, optionally from a given time and narrowed to one or more instruments.
This is the counterpart to the real-time WebSocket channel: that channel only carries what happens while you are connected, and only for a run that asked for relay. A run's signals are recorded either way, so this endpoint serves them whether or not relay was ever on, in both the sandbox and live stages — use it to catch up after a disconnect, to read a run you never relayed, or to page back over what has already happened.
The available window moves. Signals are kept for a limited span, and the oldest are continuously discarded as new ones arrive, so how far back you can read is not a fixed number of hours: on a busy run it can be a good deal shorter. Every response carries availableSinceMs, the oldest moment that can still be answered for. Asking for a sinceMs older than that is not an error — you get everything from availableSinceMs onwards, and that field tells you it happened.
A cursor can expire, and on a busy run it expires quickly. If the position a cursor points at has since been discarded, the next page answers 410 rather than silently serving a shortened page that looks complete. Treat that as a normal outcome: read availableSinceMs from the error and start again from there.
Readable by the run's owner, and by anyone if the run is public and has reached the live stage — the same rule the signal channel applies to a subscription. A sandbox run is read by its owner only, whatever visibility it asked for.
Request
- Base URL: https://api.qtsurfer.net/v1
- URL: https://api.qtsurfer.net/v1/live/{runId}/signals
- Auth: HTTP bearer
Path parameters
The run whose signals to read.
Query parameters
Start from this moment (epoch ms). Omitted, or older than the available window, starts at availableSinceMs. Ignored when cursor is given.
Narrow to one or more instruments. Omitted, or *, returns every instrument the run covers. Accepts a single pair (BTC/USDT), either half as a wildcard (any base paired with that quote, or BTC paired with any quote), or a comma-separated list of pairs (BTC/USDT,ETH/EUR). Symbols are matched exactly, case included — pass them as this API reports them.
Narrow to one or more signal types, comma-separated (hint, info, marker, command, paper). Combines with instrument.
Continue from a previous page's _links.next. Takes precedence over sinceMs.
Page size.
Response
One page of signals
Changes
- breaking
the
//response's property type changed fromobjectto no type for status - warning
removed the optional property
///from the response with the status - warning
removed the optional property
///from the response with the status - warning
removed the optional property
///from the response with the status - warning
added the new
paperenum value to the//response property for the response status - info
added the new optional
queryrequest parametertype - info
added
subschema #2to the//response propertyanyOflist for the response status
- breaking
- info
endpoint added
- info