Signals, segments & time series
How your data is represented — and what models actually train on.
Signals
A signal is a named time series: a key plus a stream of timestamped values.
daily_sales → (2026-07-13, 12100.0), (2026-07-14, 12841.5), …
web_traffic → (2026-07-13, 48211), (2026-07-14, 51037), …
machine_temp_c → (2026-07-14T09:00, 61.2), (2026-07-14T09:05, 61.9), …Signals are created implicitly: push a value to a new key and the signal exists. There's no schema to declare. Data arrives three ways:
- Push —
POST /v1/signal/push, one value at a time (great for live data). - Ingestion — connectors, file uploads, and scheduled jobs that map columns to signal keys (Ingestion).
- Webhooks — external providers push to a per-source HMAC-verified URL.
Signals carry lightweight metadata you can manage through the API: display names, units, and group assignments — all covered in Signals.
Segments
A segment is a curated view over signals: which keys, over what window, at what resolution, with what normalization. It's the exact table a model sees at training time.
Segments matter because raw signals are rarely model-ready. A segment pins down the decisions — alignment, interpolation, scaling — so that training and inference see the same data shape.
You'll meet segments in three places:
- Pipelines bind a segment to a model — "train this model on this data."
- Goals build and maintain their own segment automatically.
- Segments is where you create and manage them directly — including normalization strategies and engineered features.
Analysis
Signals support built-in analysis before you ever train anything: correlation between signals, relevance ranking against a target, causality tests, and workspace-wide analysis jobs. Use these to understand your data — or skip straight to a goal, which runs discovery for you.

