Skip to main content

Link SNR

Value
model_familysnr
StatusServed
Current releasesnr-baseline-v1
Forecastssnr_db p10, p50, p90
Horizons1, 3, and 5 minutes
EntityLink

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.

FieldUnitRequiredDescription
snr_dbdBYesObserved signal-to-noise ratio.
elevation_degdegYesSatellite elevation seen from the ground station.
azimuth_degdegYesSatellite azimuth seen from the ground station.
slant_range_kmkmYesDistance between the satellite and the ground station.
frequency_ghzGHzNoDownlink carrier frequency.
bandwidth_mhzMHzNoChannel bandwidth.
g_t_db_kdB/KNoGround station figure of merit (G/T).
eirp_dbwdBWNoSatellite effective isotropic radiated power.
Value
Measurementlink
CadenceOne record every 15 seconds while the link is in view.
Required historyThe model reads the last 4 minutes. A link with no recent samples is declined with no_telemetry or insufficient_telemetry.
FramesElevation 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
}
}

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.

25°
13.6dB SNR
Link closes: +10.6 dB over a 3 dB threshold
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:

FieldUnitDescription
snr_db_p50dBMedian forecast.
snr_db_p10dBLower bound of the 80% interval.
snr_db_p90dBUpper bound of the 80% interval.
Value
Horizons1, 3, and 5 minutes. Restrict with horizon_minutes.
CadenceForecasts are computed on request when no fresh result exists. Check predicted_at for each item's age.
ProvenanceEach 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_db sample. Check predicted_at and 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; a 200 response can carry both results and errors.

Changelog​

ReleaseChange
snr-baseline-v1Current served release. Persistence baseline.