Link SNR
| Value | |
|---|---|
model_family | snr |
| Status | Served |
| Current release | snr-baseline-v1 |
| Forecasts | snr_db p10, p50, p90 |
| Horizons | 1, 3, and 5 minutes |
| Entity | Link |
Overview
Forecasts a link's signal-to-noise ratio (snr_db, in dB) at 1, 3, and 5 minutes ahead, with an 80% interval around the median. It reads the link's recent observations, pass geometry, and RF configuration from the telemetry you write with POST /telemetry, and returns forecasts through GET /predictions with model_family=snr.
Intended use and out-of-scope use
Intended use:
- A reference forecast for live links: what the link is expected to read over the next few minutes, given what it reads now.
- A baseline that more capable releases are compared against.
- Flagging links that are already weak, through the median and the lower bound of the interval.
Out of scope:
- Predicting a fade or recovery the link has not shown yet. The current release does not extrapolate a trend (see Method and version).
- Horizons beyond 5 minutes, or links not yet in view.
- Link budget design. The forecast describes the link you report, not a link you plan to build.
- Links with no recent telemetry. They are declined, never forecast as zero.
Inputs
Write one link record per link, tagged entity_id with the link ID you later pass in link_ids.
| Field | Unit | Required | Description |
|---|---|---|---|
snr_db | dB | Yes | Observed signal-to-noise ratio. |
elevation_deg | deg | Yes | Satellite elevation seen from the ground station. |
azimuth_deg | deg | Yes | Satellite azimuth seen from the ground station. |
slant_range_km | km | Yes | Distance between the satellite and the ground station. |
frequency_ghz | GHz | No | Downlink carrier frequency. |
bandwidth_mhz | MHz | No | Channel bandwidth. |
g_t_db_k | dB/K | No | Ground station figure of merit (G/T). |
eirp_dbw | dBW | No | Satellite effective isotropic radiated power. |
| Value | |
|---|---|
| Measurement | link |
| Cadence | One record every 15 seconds while the link is in view. |
| Required history | The model reads the last 4 minutes. A link with no recent samples is declined with no_telemetry or insufficient_telemetry. |
| Frames | Elevation and azimuth are in the ground station's local horizon frame. |
Omitted geometry and RF fields are filled with fixed defaults (elevation 30°, 20 GHz, 36 MHz, G/T 20 dB/K, EIRP 50 dBW), so the forecast then describes a generic link rather than yours.
{
"measurement": "link",
"time": "2026-10-04T12:00:00Z",
"tags": { "entity_id": "sat-1-gs-1" },
"fields": {
"snr_db": 12.5,
"elevation_deg": 45.0,
"azimuth_deg": 180.0,
"slant_range_km": 1200.0,
"frequency_ghz": 20.0,
"bandwidth_mhz": 36.0,
"g_t_db_k": 20.0,
"eirp_dbw": 50.0
}
}
Explore the link budget
Geometry and RF configuration bound what any SNR forecast can be. Drag the fields below to see how elevation, frequency, power, and rain move a clear-sky free-space budget.
- Slant range
- 1123 km
- Free-space loss
- 179.5 dB
- C/N₀
- 89.1 dB-Hz
A clear-sky free-space budget. The SNR model reads these same fields from your telemetry and learns what this formula misses.
Outputs
One item per link and horizon:
| Field | Unit | Description |
|---|---|---|
snr_db_p50 | dB | Median forecast. |
snr_db_p10 | dB | Lower bound of the 80% interval. |
snr_db_p90 | dB | Upper bound of the 80% interval. |
| Value | |
|---|---|
| Horizons | 1, 3, and 5 minutes. Restrict with horizon_minutes. |
| Cadence | Forecasts are computed on request when no fresh result exists. Check predicted_at for each item's age. |
| Provenance | Each item carries model_version, feature_view_id, and model_release_id. Keep them with exported results. |
Request forecasts
curl --fail-with-body -sS \
-H "x-api-key: $CONSTELLATION_API_TOKEN" \
"https://api.constellation.space/predictions?model_family=snr&link_ids=sat-1-gs-1"
From an AI agent, call get_predictions on the MCP server with model_family set to snr and the same IDs in link_ids. Both need a key with predictions:read. GET /predictions describes the response and per-entity errors.
Tiers
A fidelity tier labels how a model is served, not what a plan includes. This model is served at Bronze, by snr-baseline-v1. Silver and Gold are not served yet.
Every plan calls the same release: plans differ in allowance, not in tier. GET /predictions takes no tier parameter.
Method and version
The current release, snr-baseline-v1, is a persistence baseline. Its median at every horizon is the link's last observed snr_db, carried forward unchanged, and the interval around it widens with the horizon. It does not extrapolate a trend, and it does not yet use the geometry and RF fields to move the median. Use it as a reference forecast.
Limitations and known failure modes
- No trend. A link that is fading or recovering is forecast flat at its last value, so the median lags real change. The lag grows with the horizon.
- Stale input. The forecast is only as recent as the last
snr_dbsample. Checkpredicted_atand your own write cadence. - Defaults hide missing fields. A record without geometry or RF fields forecasts against fixed defaults without failing.
- Sparse samples. Fewer samples in the 4 minute window still forecast, with less evidence behind them.
- Declines are not zeros. Links without usable input appear in
entity_errors; a200response can carry both results and errors.
Changelog
| Release | Change |
|---|---|
snr-baseline-v1 | Current served release. Persistence baseline. |