Dash0 acquires Polar Signals

Query Telemetry

Download OTLP log records as a file

post/api/logs/download

Returns the log records matching the given query as a downloadable file in the requested format (txt, ndjson, yaml or csv).

A single export is capped at 5000 log records. A limit above that cap is rejected rather than silently clamped: the response is a client error naming the cap. When the query matches more than 5000 records, the export carries the first 5000 in result-set order. Use the Dash0 CLI (dash0 logs query) to export larger volumes.

The records are the same ones POST /api/logs returns for the same query, except that adaptive sampling is always disabled for exports: an exported file is never a sample, whatever the query and whatever the data volume.

The response is streamed as pages are retrieved and therefore carries no Content-Length. Because the response headers are committed before the first record is written, a failure partway through cannot be reported as a status code — it terminates the transfer instead. Clients MUST confirm the body was received completely before treating the download as a successful export.

bash
Sample request
1234567891011121314151617
curl --request POST 'https://api.eu-west-1.aws.dash0.com/api/logs/download' \
--header "Authorization: Bearer ${DASH0_AUTH_TOKEN}" \
--header 'Content-Type: application/json' \
--data-raw '{
"timeRange": {
"from": "now-10m",
"to": "now"
},
"format": "txt",
"filter": [
{
"key": "service.name",
"operator": "is",
"value": "shop"
}
]
}'

Request body required

Request for the LogRecordsDownload API. Accepts the same query as GetLogRecords (filter, timeRange, dataset, ordering) and returns the matching records serialized as a downloadable file rather than as a JSON page.

The response is streamed, so the export is not paginated: a single request returns up to limit records, capped at 5000. Adaptive sampling is always disabled for exports, so an exported file is never a sample.

TimeReferenceRangerequired

A range of time between two time references.

Dataset

Optional dataset to query across. Defaults to whatever is configured to be the default dataset for the organization.

The ordering criteria for the exported logs. Records are written to the file in this order. Supported ordering key: otel.log.time (log timestamp, defaults to descending)

LogRecordExportFormatrequired

The serialization format of the exported file.

  • txt: One rendered log line per record, carrying a fixed field set of timestamp, severity, resource, body and trace ID. Ignores columns.
  • ndjson: One OTLP JSON payload per line, each carrying a single log record inside the same resourceLogs envelope GetLogRecords returns, so each line is independently parseable by any OTLP JSON consumer.
  • yaml: The same per-record OTLP payloads as ndjson, as a multi-document YAML stream with documents separated by ---.
  • csv: A header row plus one row per record, flattened to the requested columns.
"txt""ndjson""yaml""csv"
integer

The maximum number of log records to export. Defaults to, and is capped at, 5000. A larger value is rejected rather than silently clamped. Use the Dash0 CLI (dash0 logs query) to export volumes beyond this cap.

string[]

Attribute keys to emit as columns, in order, for the csv format — resource, scope, or log record attributes (e.g. service.name, otel.log.body). Ignored by the other formats, which have a fixed field set.

Responses

The exported log records. The body's actual content type matches the requested format (text/plain for txt, application/x-ndjson for ndjson, application/yaml for yaml, text/csv for csv).

stringformat "binary"
Content-Type
stringexample "text/csv"
Content-Disposition
stringexample "attachment; filename=\"logs-2026-07-27T10-15-00Z.csv\""