logs.read, or sys.telemetry.read in the system scope.
Each call takes POST with a JSON body, or GET with the same fields in the query string: filters and free_text as the text of a JSON list, and where as the text of a JSON object. Send a query too long for an address as a POST.
What a call matches
A call matches the records of the stream in the window that pass all of these:
A filter is an object with
field, op, value, and quoted. It names its field as the stream names it.
eq, ne, and like are aliases of =, !=, and contains. quoted is true for a value written in quotes: a word, never a number. A JSON field is not filterable here; query it with SQL.
expression takes the text of the Logs page: comparisons, MATCH(field, 'text') and MATCH_TEXT(field, 'words'), words to find, a phrase in quotes, AND and OR in any case with AND binding tighter, and brackets. The server reads it into the filters, free_text, and where the page sends, and checks them as above. The text is at most 8 KiB and nests brackets at most 32 deep. A part it cannot read, such as an unclosed bracket or a comparison with nothing, answers 400 and names the part.
List records
_timestamp is in microseconds. A request with a cursor and a different stream, window, limit, or match answers 400.
Count records over time
A request covers at most 512 buckets from
origin_micros to to.
buckets lists the buckets that hold a record, oldest first. errors counts the records at level ERROR, read from level or body_level. split is false when the stream has neither field or the level is masked for the reader; errors is then 0. When the count is not available, the call answers 200 with empty buckets and unavailable: time_budget, busy, or scan_limit, as for the trace count.
Describe a field
kind is number, time, text, or bool. total counts the matching records and present those with a value. top lists the commonest values, commonest first; top_skipped is true when nearly every value differs and none is listed. range gives the smallest and the largest value as text. A number field adds spread and bars. trend counts the commonest values over the window, and is absent where no value is commoner than the rest.