Harmonization levels
Sentinel-2 and Landsat measure slightly different wavelengths, and Sentinel-2’s stored integers changed meaning at processing baseline 04.00. The harmonize option says how much of that the API corrects. Schema v1 defines four ordered levels; each includes the ones before it.
| Level | Status | What it does |
|---|---|---|
none |
Available now | No adjustment. DN output returns stored integers unchanged, including the +1,000 Sentinel-2 offset from baseline 04.00 on. Reflectance output applies each product’s published conversion. |
offset_removed |
Available now | Sentinel-2 DN from baseline 04.00 on are shifted so every baseline shares DN = 10,000 × reflectance. DN output becomes int16 so negative values survive. Reflectance output equals none. Landsat is unchanged. |
bandpass_adjusted |
Coming later | offset_removed plus the HLS v2.0 linear coefficients, adjusted = a × MSI + b per platform, which map Sentinel-2 onto Landsat 8 OLI. |
nbar |
Coming later | Bandpass-adjusted and normalized to a nadir view. Only HLS supplies it in v1. |
Available now
Section titled “Available now”offset_removed is the default in POST /v1/process and the only level map tiles accept (?harmonize=offset_removed; others answer 422 harmonize-unavailable). Use it with units: "DN" when you want Sentinel-2 integers that mean the same thing on every baseline. Add clipNegative: true (process) or clamp: true (download API) to set below-zero values to zero, which matches Sentinel Hub’s harmonizeValues. See Values, scale and offset for the full set of options and the output types.
Without bandpass_adjusted, Sentinel-2 and Landsat reflectance are each correct for their own sensor but not adjusted to each other. For indices such as NDVI the difference is small; for band-by-band comparisons it can matter.
Coming later
Section titled “Coming later”bandpass_adjusted
Section titled “bandpass_adjusted”The HLS v2.0 coefficients cover Sentinel-2 coastal, blue, green, red, nir08, swir16 and swir22, per platform. Landsat OLI is the reference and is unchanged. For Sentinel-2C, for example, red uses a = 0.9718 and b = 0.0011, and nir08 uses a = 0.9995 and b = −0.0003.
The coefficients do not cover everything, and the API will say so instead of guessing: Sentinel-2D has no published coefficients, red-edge and broad NIR have none, and Landsat TM and ETM+ have no HLS transform. Those scenes and bands are returned at offset_removed and flagged per scene. Responses that combine scenes report the level each one received (scenes[].harmonization in process JSON, sdn:harmonization on items).
bandpass_adjusted will be the default on the cross-sensor optical-sr collection; offset_removed stays the default on native collections.
On optical-sr, nbar restricts the members to HLS. On any collection that has no NBAR source it fails with harmonize-unavailable.
Open check
Section titled “Open check”Schema v1 lists the HLS coefficient column alignment as an open check to close before the schema is frozen. Until then, bandpass_adjusted values may change once, and the changelog will record it.