Skip to content

Sandbox

This content is not available in your language yet.

The sandbox is free, needs no card, has sandbox-level rate limits and is never billed: every metered operation is recorded with billable: false. It exists so that an integration can be built and certified end to end before a live key is issued - and most teams keep running their CI against it after going live.

sk_test_ keys are issued in the client portal. In a development environment scripts/publicapi_sandbox_seed.py prints the deployment’s demo key (derived from the deployment secret, so every deployment has its own); the quickstart uses the one this site was verified with. The demo key belongs to the account that owns the shared parcels - see shared below for what that changes.

All are real Lithuanian field boundaries from public LPIS data, chosen without any link to an owner or a holding. Each carries five years of Sentinel-1, Sentinel-2 and (where large enough) Sentinel-3 history, so every endpoint answers on the first call.

external_ref Crop / land use Area Scenario Use it to see
SBX-LODGING-1 winter wheat, arable 21.6 ha lodging a lodging event (confidence 0.80) in GET .../sar/events for the window 2025-06-29 to 2025-07-05; damage assess for 2025-07-04 / storm returns damage_pct: 85.0 (CI 50-85) at confidence 0.405 - damage beyond doubt, direction_not_confirmed, no certificate (billed on a live key, not certified)
SBX-LODGING-2 winter wheat, arable 18.4 ha lodging a second lodging case with a different orbit geometry
SBX-LODGING-3 winter rapeseed, arable 28.1 ha lodging lodging on rapeseed, where the phenology window differs; damage assess for 2024-07-03 / storm returns damage_pct: 50.0 (CI 50-51.75) at confidence 0.5113 - the one storm case that is certified, by one hundredth
SBX-MOWING-1 permanent grassland 13.3 ha mowing two mowing events per season in GET .../sar/events (2025: 11 June and 29 July)
SBX-MOWING-2 permanent grassland 6.4 ha mowing grassland just above the 5 ha Sentinel-3 limit: thermal answers carry the resolution note (values below 20 ha mix in surrounding land cover)
SBX-DROUGHT-1 spring barley, arable 17.3 ha drought 2023 water-stress?season=2023 peaks at WSI 0.7353, stress_class: high, 21 consecutive stress days, LST anomaly +11 C; damage assess for 2023-07-20 / drought currently completes as status: insufficient_data (reason: no_ndvi_observations, confidence: null, billable: false) - the honest-failure path
SBX-DROUGHT-2 winter wheat, arable 16.9 ha drought 2023 the same drought on winter wheat
SBX-SMALL-1 spring barley, arable 1.7 ha small Sentinel-3 products answer 422 insufficient_resolution (detail.area_ha: 1.68, min_area_ha: 5.0); S1 and S2 products still work
SBX-NEW-1 winter wheat, arable 12.5 ha no history 422 baseline_not_ready on every anomaly; baseline=false answers 200 with series: [], observations: 0, because there are no scenes yet
SBX-FIELD-01 winter wheat 11.8 ha normal the quickstart parcel; damage assess for 2025-07-04 / storm returns damage_pct: 0.0 at confidence 0.58 with a certificate - the “nothing happened” proof
SBX-FIELD-02 spring barley 11.7 ha normal
SBX-FIELD-03 winter rapeseed 12.7 ha normal
SBX-FIELD-04 maize 13.8 ha normal a late crop: different phenology windows
SBX-FIELD-05 winter wheat 26.5 ha normal damage assess for 2024-07-19 / storm returns damage_pct: 0.0 at confidence 0.46 - no damage, but no_sar_baseline and direction_not_confirmed keep it below the certificate bar: billed, certificate: null
SBX-FIELD-06 oats 8.2 ha normal
SBX-FIELD-07 winter wheat 22.6 ha normal
SBX-FIELD-08 spring barley 10.7 ha normal
SBX-FIELD-09 winter rapeseed 11.3 ha normal
SBX-FIELD-10 winter wheat 46.7 ha normal the largest parcel; a good batch and portfolio member
SBX-FIELD-11 maize 11.3 ha normal

Areas are from the LPIS geometry and can shift slightly when the sandbox is reseeded. parcel_id values are stable across reseeds; look them up once with GET /v1/parcels?limit=25 and filter on external_ref. A sandbox key sees these 20 plus the parcels it created itself - never another client’s - so with a fresh key the list is exactly 20 rows; the shared parcels are the ones whose external_ref starts with SBX-.

Every parcel carries a shared flag: true when the parcel belongs to another account than your key’s. For a sandbox key you registered in the portal that is every SBX-* parcel; they are read-only for you (DELETE answers 404, as for any resource that is not yours) and are rebuilt every night. The demo key printed by the seed script is the account that owns the set, so it sees the same parcels with shared: false and GET /v1/account reports parcels_in_environment: 20 for it (a key of your own starts at 0). Do not delete shared parcels with the demo key; the reseed restores them, but every other sandbox user loses the parcel until then.

The damage figures in the table are from fresh assessments run on 2026-10-03 (damage-1.0, config_hash e3f43ecf61375aa8) and are what the API answered that day; a retuned method configuration gets a new config_hash and may move a confidence by a few hundredths.

In the sandbox scene_id starts with SBX_ and satellite is the collection name (sentinel-2-l2a, …): the history is modelled from the real seasonal shape of each scenario so that the free sandbox does not spend Copernicus processing units. Shapes, thresholds and code paths are identical to live.

The seed also creates five assessments with claim references SBX-CLAIM-2025-001 … SBX-CLAIM-2023-005 - the storm on SBX-LODGING-1 and the hail on SBX-LODGING-2 (both 2025-07-04), the storm on SBX-LODGING-3 (2024-07-03), the no-damage storm on SBX-FIELD-05 (2024-07-19) and the 2023 drought on SBX-DROUGHT-1 (2023-07-20). They are stored results from the last reseed, and they can differ from what the same request answers today: at the time of writing the stored SBX-CLAIM-2024-003 carries confidence 0.345 while a fresh LODGING-3 assessment answers 0.5113 with a certificate, and the stored SBX-CLAIM-2023-005 carries 43.45 % at 0.7694 while a fresh DROUGHT-1 assessment ends as insufficient_data. There is no list endpoint for assessments; the seed script prints their ids.

The cases span the confidence scale on purpose. A storm assessment whose optical series does not confirm the radar signal carries direction_not_confirmed and a 0.8 confidence multiplier: on SBX-LODGING-1 that leaves 0.405 - above the 0.40 billing floor, below the confidence >= 0.50 certificate bar, so a live key pays for an uncertified number; on SBX-LODGING-3 it leaves 0.5113, one hundredth above the bar. Run the requests fresh rather than trusting a stored SBX-CLAIM-* number. The lesson is the same either way: your code must branch on certificate being present, never assume the PDF.

A sandbox key may create up to 10 additional parcels, with 24 months of history. Two things to expect:

  • A parcel only has history if its geometry is one we already hold - parcels are cached by geometry hash, so a re-drawn version of a shared parcel inherits its data. A brand new field answers baseline_not_ready and empty series, because the sandbox deliberately never triggers satellite processing. Live keys do trigger it.
  • The eleventh parcel answers 429 parcel_quota_exceeded with detail {plan: "sandbox", quota: 10, active: 10, requested: 1}. A bulk import counts only the rows that would create a parcel - re-importing a file you already loaded is accepted at the limit.
  • GET /v1/account shows parcel_quota: 10; parcels_active and parcels_peak stay 0 because sandbox parcels are never billable.

Every night the 20 shared parcels and their history are rebuilt and the parcels you created with a sandbox key are cleared, together with their jobs and assessments. The synthetic history is anchored to a fixed epoch, so a reseed reproduces the same scenes on the same dates: the values you saw yesterday are the values you see tomorrow, and a demo result only moves when a method configuration (config_hash) changes. Nothing a sandbox client does can damage the shared set, and nothing you store there survives more than a day - treat the sandbox as disposable and keep your fixtures in your own repository.

Sandbox (sk_test_) Live (sk_live_)
Data 20 shared LT parcels, 5 years of history your parcels
Your own parcels up to 10 extra, 24 months of history plan quota
Copernicus calls none - history is pre-seeded real, queued and backfilled
Damage assessment finishes in seconds (precomputed) minutes, real processing
Billing usage_event written, billable: false always billed
Rate limits 60 standard / 10 write / 2 expensive per minute per plan
Webhooks delivered for real, signed delivered, signed
Nightly shared parcels rebuilt; your sandbox parcels cleared untouched

Test and live are separate worlds: a live key cannot see sandbox parcels and a test key cannot see live ones. When you activate live in the portal your sandbox key keeps working alongside the new sk_live_ key.