Skip to main content
After completing this workflow, you can export Channel data from any Run into the tool or pipeline your team uses for analysis. Sift’s REST API and client libraries let you export telemetry data from Runs programmatically for use in external tools, custom pipelines, and downstream analysis environments such as MATLAB or Python.

Before you export

How does programmatic export work

Sift provides two programmatic export methods, data querying and export data to file, each available through the REST API and official client libraries (Python, Rust, and Go). Clients for other languages can be generated using Buf.

Query Channel data

Use the REST API

To query Channel data, call the GetData endpoint.
  1. Query Channel data
    endTime: This field is exclusive, so a sample that falls exactly at or after endTime is not included in the response. If a value you expect to see is missing, try extending endTime slightly past the boundary you actually want.
    sampleMs: Set sampleMs to 0, or omit it, to return the full, unsampled dataset, recommended for external data analysis. Any other value downsamples the response using LTTB, a shape-preserving algorithm intended for plotting rather than analysis; it returns approximately one representative point per that many milliseconds rather than sampling at a literal fixed interval.
    Timeseries Panel: The Sift app’s Timeseries Panel offers a choice of sampling methods (LTTB, Min/Max, and Changed Only), but GetData only supports LTTB; the other methods are not currently available through this endpoint.
  2. Paginate if needed If the response includes a non-empty nextPageToken, resend the same request with pageToken set to that value to retrieve the next batch. Repeat until nextPageToken comes back empty.

Use the Python client

The official Python client provides two methods for querying Channel data:
  1. Initialize the client
  2. Retrieve the data Fetch the Channel object using its ID, then call client.channels.get_data_as_arrow(). The method returns a dict where each key is a Channel name and the value is an Apache Arrow table.
    Or using client.channels.get_data(), which returns a dict[str, pd.DataFrame] directly with no conversion needed:

Export data to file

Use the REST API

To export data to a file, call the ExportData and GetDownloadUrl endpoints.
  1. Submit the export job
    outputFormat: This is a fixed value to select, not a placeholder to replace with your own text.
  2. Retrieve the download link If the response includes a presignedUrl, the export completed immediately and the file is ready to download. If the response includes a jobId instead, poll this endpoint until presignedUrl is populated:

Use the Python client

The official Python client provides two methods for exporting data to file:
  1. Initialize the client
  2. Submit the export job and download the result