Skip to content

Older hosts

Before api.satellitedata.net, the service ran on two hosts. They keep working unchanged, and the web map uses them. They take the same keys as lean v1, sent as x-api-key, and count against the same limits. New code should use api.satellitedata.net/v1.

Scene search, passed through to Element 84’s Earth Search catalog. It speaks STAC API with Earth Search’s collection ids: sentinel-2-c1-l2a and landsat-c2-l2.

Terminal window
curl -s -X POST https://stac.satellitedata.net/search \
-H "x-api-key: $SDN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"collections":["sentinel-2-c1-l2a"],"bbox":[0.6,40.55,1.0,40.85],"datetime":"2026-08-20T00:00:00Z/2026-08-31T23:59:59Z","limit":3,"query":{"eo:cloud_cover":{"lte":20}}}'

Earth Search filters cloud cover only through the query extension and silently ignores CQL2 filter parameters.

tiles.satellitedata.net runs TiTiler (titiler-stacapi) on AWS Lambda. It renders single scenes and mosaics by asset name:

Terminal window
curl -s -H "x-api-key: $SDN_API_KEY" -o s2.png \
"https://tiles.satellitedata.net/collections/sentinel-2-c1-l2a/items/S2A_T31TCF_20260829T105044_L2A/tiles/WebMercatorQuad/12/2056/1540.png?assets=visual"

The display settings the web map uses:

Preset Sentinel-2 (sentinel-2-c1-l2a) Landsat (landsat-c2-l2)
True colour assets=visual assets=red&assets=green&assets=blue&rescale=7273,18182
False colour assets=nir&assets=red&assets=green&rescale=1000,5000 assets=nir08&assets=red&assets=green&rescale=7273,21818
NDVI assets=nir&assets=red&expression=(b1-b2)/(b1%2Bb2-2000)&rescale=-0.2,0.8&colormap_name=rdylgn assets=nir08&assets=red&expression=(b1-b2)/(b1%2Bb2-14545.45)&rescale=-0.2,0.8&colormap_name=rdylgn
  • Band math names bands b1, b2 and so on, in the order the assets are listed.
  • The NDVI expressions subtract each collection’s offset from the denominator (2 × 1,000 for Sentinel-2, 2 × 7,272.7 for Landsat), so Sentinel-2 and Landsat NDVI agree. A plain (b1-b2)/(b1+b2) would be biased.
  • Mosaics are built from scene ids a search has already filtered (ids=ID1,ID2,...), not from a cloud filter in the tile URL. Avoid sortby on mosaic tiles.
  • GET /healthz reports whether the STAC API behind it is online.

The first request after a quiet spell takes 5 to 10 seconds while Lambda starts; later ones take 1 to 3 seconds.

POST https://tiles.satellitedata.net/downloads writes a GeoTIFF of one scene, or a mosaic of up to 6 scenes, over a box and returns links. POST /downloads/jobs and GET /downloads/jobs/{id} run larger requests in the background. The body, options and limits are in Download an area as GeoTIFF.

Field Meaning
collection sentinel-2-c1-l2a or landsat-c2-l2
item one scene id, or
items 1 to 6 scene ids of one pass, or
datetime a start/end window; every scene over the box from the clearest scene’s platform, at most 6
order least_cloud (default) or as_given
bbox west, south, east, north in degrees
bands, crs, resolution, resolution_deg, size what to read and the output grid
units, harmonize, clamp see Values
output multiband or per_band
preview {"width": 64-2500} for a true-colour PNG
Member Meaning
files one entry per file: url, filename, bytes, and band details (bands, scales, offsets, dtype, nodata; or per band band, scale, offset, valid_fraction, items_used)
preview url, width, height, valid_fraction, when asked
items_used, items_considered the scenes that supplied pixels, and the scenes read
width, height, crs, bounds, transform, resolution the output grid
units, harmonize, clamp, output the options applied
seconds render time
expires_in link lifetime in seconds (3600)

A multiband answer also repeats the single file’s url, filename, bytes, bands, dtype, nodata, scales and offsets at the top level.

The older hosts do not return problem documents:

Status When
403 Forbidden missing or wrong key (from API Gateway)
429 Too Many Requests over the per-second or monthly limit
400 unknown bands, a band asked for twice, an unknown crs, or a box that misses the scenes
404 no scenes over the box in the datetime window, or an unknown job id
413 over the size cap, with the numbers; or more than 6 scenes in the datetime window
422 a body that fails validation, or band-unavailable when a scene lacks a band (some Landsat Tier 2 scenes have no B10)
502, 504 a render failure, or a render past about 29 seconds

Download API errors are JSON with a detail member.