{"openapi":"3.1.0","info":{"title":"sentbot","version":"1.0.0","summary":"Sentinel-1 and Sentinel-2 imagery and analysis, paid per request with x402","description":"Buy a satellite image or an analysis of any area on Earth for a few cents in USDC. Every paid endpoint answers 402 with x402 payment requirements when no payment is attached; x402 clients handle this automatically. Catalog search, quotes and docs are free.","x-payment-protocol":"x402","x-payment-networks":["eip155:8453","eip155:137","eip155:42161","eip155:43114","eip155:1329"],"x-llms-txt":"https://sentbot.fly.dev/llms.txt","x-mcp-server":"https://sentbot.fly.dev/mcp"},"servers":[{"url":"https://sentbot.fly.dev"}],"tags":[{"name":"paid","description":"Requires an x402 payment (USDC). Prices are cents."},{"name":"free","description":"No payment."}],"paths":{"/v1/imagery":{"get":{"tags":["paid"],"operationId":"getImagery","x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.01","max":"0.24"},"networks":["eip155:8453","eip155:137","eip155:42161","eip155:43114","eip155:1329"],"asset":"USDC"},"summary":"Satellite image of an area","description":"PNG (with transparency for no data), JPEG or GeoTIFF. Index presets return a colour-mapped image; as GeoTIFF they return raw FLOAT32 index values with -9999 as no data.","parameters":[{"name":"bbox","in":"query","required":false,"description":"west,south,east,north in decimal degrees (EPSG:4326). Either bbox or lat+lon is required.","schema":{"type":"string","example":"13.35,52.48,13.45,52.55"}},{"name":"lat","in":"query","required":false,"description":"Centre latitude, used with lon and km instead of bbox.","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Centre longitude.","schema":{"type":"number"}},{"name":"km","in":"query","required":false,"description":"Side length in km of the square around lat/lon.","schema":{"type":"number","default":5,"maximum":100}},{"name":"collection","in":"query","required":false,"description":"s2 = Sentinel-2 L2A optical (10 m). s1 = Sentinel-1 GRD radar (10 m, sees through cloud).","schema":{"type":"string","enum":["s2","s1"],"default":"s2"}},{"name":"preset","in":"query","required":false,"description":"Visual composite or index. s2: true-color, false-color, swir, agriculture, ndvi, ndwi, ndmi, nbr, evi, savi, ndsi, scl. s1: vv, vh, rgb, water.","schema":{"type":"string","enum":["true-color","false-color","swir","agriculture","ndvi","ndwi","ndmi","nbr","evi","savi","ndsi","scl","vv","vh","rgb","water"],"default":"true-color"}},{"name":"format","in":"query","required":false,"description":"Output format.","schema":{"type":"string","enum":["png","jpeg","tiff"],"default":"png"}},{"name":"width","in":"query","required":false,"description":"Output width in pixels.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"height","in":"query","required":false,"description":"Output height in pixels. Defaults to width when only width is given.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"res","in":"query","required":false,"description":"Metres per pixel. Overrides width and height. 10 is native for both sensors.","schema":{"type":"number","minimum":10}},{"name":"date","in":"query","required":false,"description":"YYYY-MM-DD. The best scene from the 30 days up to and including this date is used.","schema":{"type":"string","format":"date"}},{"name":"from","in":"query","required":false,"description":"Start of the search window (YYYY-MM-DD). Use with `to` instead of `date`.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"End of the search window (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"maxCloud","in":"query","required":false,"description":"Sentinel-2 only. Scenes with more cloud than this are skipped.","schema":{"type":"integer","minimum":0,"maximum":100,"default":30}},{"name":"mosaicking","in":"query","required":false,"description":"Which scene wins where several overlap. Default leastCC for s2, mostRecent for s1.","schema":{"type":"string","enum":["leastCC","mostRecent","leastRecent"]}},{"name":"cloudMask","in":"query","required":false,"description":"Sentinel-2 only. Make cloud, shadow and cirrus pixels transparent and exclude them from statistics.","schema":{"type":"boolean","default":true}},{"name":"orbit","in":"query","required":false,"description":"Sentinel-1 only. Keep one orbit direction for consistent geometry between dates.","schema":{"type":"string","enum":["ascending","descending"]}}],"responses":{"200":{"description":"The image. Headers x-sentbot-bbox, x-sentbot-time-range, x-sentbot-size, x-sentbot-price-usd describe it.","content":{"image/png":{},"image/jpeg":{},"image/tiff":{}}},"400":{"description":"Invalid parameters. The message says what to change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body and the PAYMENT-REQUIRED header carry x402 payment requirements. Retry with a PAYMENT-SIGNATURE header from an x402 client.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"The Copernicus Data Space request failed. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/analyze":{"get":{"tags":["paid"],"operationId":"analyzeIndex","x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.03","max":"0.26"},"networks":["eip155:8453","eip155:137","eip155:42161","eip155:43114","eip155:1329"],"asset":"USDC"},"summary":"Index statistics and map for one date","description":"Runs the index over the area on Sentinel Hub, returns mean, min, max, standard deviation, percentiles, a histogram, class fractions and a colour-mapped PNG (base64 data URL). Cloud pixels are excluded for Sentinel-2.","parameters":[{"name":"index","in":"query","required":false,"schema":{"type":"string","enum":["ndvi","ndwi","ndmi","nbr","evi","savi","ndsi","vv","vh","water"],"default":"ndvi"},"description":"s2: ndvi, ndwi, ndmi, nbr, evi, savi, ndsi. s1: vv, vh (dB), water (fraction)."},{"name":"bbox","in":"query","required":false,"description":"west,south,east,north in decimal degrees (EPSG:4326). Either bbox or lat+lon is required.","schema":{"type":"string","example":"13.35,52.48,13.45,52.55"}},{"name":"lat","in":"query","required":false,"description":"Centre latitude, used with lon and km instead of bbox.","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Centre longitude.","schema":{"type":"number"}},{"name":"km","in":"query","required":false,"description":"Side length in km of the square around lat/lon.","schema":{"type":"number","default":5,"maximum":100}},{"name":"collection","in":"query","required":false,"description":"s2 = Sentinel-2 L2A optical (10 m). s1 = Sentinel-1 GRD radar (10 m, sees through cloud).","schema":{"type":"string","enum":["s2","s1"],"default":"s2"}},{"name":"format","in":"query","required":false,"description":"json returns stats and the image; png or tiff return only the image.","schema":{"type":"string","enum":["json","png","tiff"],"default":"json"}},{"name":"width","in":"query","required":false,"description":"Output width in pixels.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"height","in":"query","required":false,"description":"Output height in pixels. Defaults to width when only width is given.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"res","in":"query","required":false,"description":"Metres per pixel. Overrides width and height. 10 is native for both sensors.","schema":{"type":"number","minimum":10}},{"name":"date","in":"query","required":false,"description":"YYYY-MM-DD. The best scene from the 30 days up to and including this date is used.","schema":{"type":"string","format":"date"}},{"name":"from","in":"query","required":false,"description":"Start of the search window (YYYY-MM-DD). Use with `to` instead of `date`.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"End of the search window (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"maxCloud","in":"query","required":false,"description":"Sentinel-2 only. Scenes with more cloud than this are skipped.","schema":{"type":"integer","minimum":0,"maximum":100,"default":30}},{"name":"mosaicking","in":"query","required":false,"description":"Which scene wins where several overlap. Default leastCC for s2, mostRecent for s1.","schema":{"type":"string","enum":["leastCC","mostRecent","leastRecent"]}},{"name":"cloudMask","in":"query","required":false,"description":"Sentinel-2 only. Make cloud, shadow and cirrus pixels transparent and exclude them from statistics.","schema":{"type":"boolean","default":true}},{"name":"orbit","in":"query","required":false,"description":"Sentinel-1 only. Keep one orbit direction for consistent geometry between dates.","schema":{"type":"string","enum":["ascending","descending"]}}],"responses":{"200":{"description":"Analysis result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analysis"}},"image/png":{},"image/tiff":{}}},"400":{"description":"Invalid parameters. The message says what to change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body and the PAYMENT-REQUIRED header carry x402 payment requirements. Retry with a PAYMENT-SIGNATURE header from an x402 client.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"The Copernicus Data Space request failed. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/timeseries":{"get":{"tags":["paid"],"operationId":"timeseriesIndex","x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.02","max":"0.25"},"networks":["eip155:8453","eip155:137","eip155:42161","eip155:43114","eip155:1329"],"asset":"USDC"},"summary":"Index statistics per interval over a period","parameters":[{"name":"index","in":"query","required":false,"schema":{"type":"string","enum":["ndvi","ndwi","ndmi","nbr","evi","savi","ndsi","vv","vh","water"],"default":"ndvi"},"description":"Index. Default ndvi for s2, vv for s1."},{"name":"bbox","in":"query","required":false,"description":"west,south,east,north in decimal degrees (EPSG:4326). Either bbox or lat+lon is required.","schema":{"type":"string","example":"13.35,52.48,13.45,52.55"}},{"name":"lat","in":"query","required":false,"description":"Centre latitude, used with lon and km instead of bbox.","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Centre longitude.","schema":{"type":"number"}},{"name":"km","in":"query","required":false,"description":"Side length in km of the square around lat/lon.","schema":{"type":"number","default":5,"maximum":100}},{"name":"collection","in":"query","required":false,"description":"s2 = Sentinel-2 L2A optical (10 m). s1 = Sentinel-1 GRD radar (10 m, sees through cloud).","schema":{"type":"string","enum":["s2","s1"],"default":"s2"}},{"name":"from","in":"query","required":true,"description":"Start date (YYYY-MM-DD). Required.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"End date. Defaults to today. Max span 3 years.","schema":{"type":"string","format":"date"}},{"name":"interval","in":"query","required":false,"description":"ISO 8601 day period per sample. Max 60 intervals per request.","schema":{"type":"string","default":"P10D","example":"P10D"}},{"name":"width","in":"query","required":false,"description":"Output width in pixels.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"height","in":"query","required":false,"description":"Output height in pixels. Defaults to width when only width is given.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"maxCloud","in":"query","required":false,"description":"Sentinel-2 only. Scenes with more cloud than this are skipped.","schema":{"type":"integer","minimum":0,"maximum":100,"default":30}},{"name":"mosaicking","in":"query","required":false,"description":"Which scene wins where several overlap. Default leastCC for s2, mostRecent for s1.","schema":{"type":"string","enum":["leastCC","mostRecent","leastRecent"]}},{"name":"cloudMask","in":"query","required":false,"description":"Sentinel-2 only. Make cloud, shadow and cirrus pixels transparent and exclude them from statistics.","schema":{"type":"boolean","default":true}},{"name":"orbit","in":"query","required":false,"description":"Sentinel-1 only. Keep one orbit direction for consistent geometry between dates.","schema":{"type":"string","enum":["ascending","descending"]}}],"responses":{"200":{"description":"Series","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Timeseries"}}}},"400":{"description":"Invalid parameters. The message says what to change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body and the PAYMENT-REQUIRED header carry x402 payment requirements. Retry with a PAYMENT-SIGNATURE header from an x402 client.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"The Copernicus Data Space request failed. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/change":{"get":{"tags":["paid"],"operationId":"changeIndex","x-payment-info":{"protocols":["x402"],"price":{"mode":"dynamic","currency":"USD","min":"0.05","max":"0.51"},"networks":["eip155:8453","eip155:137","eip155:42161","eip155:43114","eip155:1329"],"asset":"USDC"},"summary":"Difference between two dates","description":"Picks the best scene up to `window` days before dateA and before dateB, computes after minus before per pixel, and reports loss, gain and stable fractions with a red/green PNG.","parameters":[{"name":"index","in":"query","required":false,"schema":{"type":"string","enum":["ndvi","ndwi","ndmi","nbr","evi","savi","ndsi","vv","vh","water"],"default":"ndvi"}},{"name":"bbox","in":"query","required":false,"description":"west,south,east,north in decimal degrees (EPSG:4326). Either bbox or lat+lon is required.","schema":{"type":"string","example":"13.35,52.48,13.45,52.55"}},{"name":"lat","in":"query","required":false,"description":"Centre latitude, used with lon and km instead of bbox.","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Centre longitude.","schema":{"type":"number"}},{"name":"km","in":"query","required":false,"description":"Side length in km of the square around lat/lon.","schema":{"type":"number","default":5,"maximum":100}},{"name":"collection","in":"query","required":false,"description":"s2 = Sentinel-2 L2A optical (10 m). s1 = Sentinel-1 GRD radar (10 m, sees through cloud).","schema":{"type":"string","enum":["s2","s1"],"default":"s2"}},{"name":"dateA","in":"query","required":true,"description":"Earlier date (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"dateB","in":"query","required":true,"description":"Later date (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"window","in":"query","required":false,"description":"Days before each date to look for a usable scene.","schema":{"type":"integer","default":15,"minimum":1,"maximum":60}},{"name":"format","in":"query","required":false,"description":"json returns stats and the image; png or tiff return only the difference image.","schema":{"type":"string","enum":["json","png","tiff"],"default":"json"}},{"name":"width","in":"query","required":false,"description":"Output width in pixels.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"height","in":"query","required":false,"description":"Output height in pixels. Defaults to width when only width is given.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"res","in":"query","required":false,"description":"Metres per pixel. Overrides width and height. 10 is native for both sensors.","schema":{"type":"number","minimum":10}},{"name":"maxCloud","in":"query","required":false,"description":"Sentinel-2 only. Scenes with more cloud than this are skipped.","schema":{"type":"integer","minimum":0,"maximum":100,"default":30}},{"name":"mosaicking","in":"query","required":false,"description":"Which scene wins where several overlap. Default leastCC for s2, mostRecent for s1.","schema":{"type":"string","enum":["leastCC","mostRecent","leastRecent"]}},{"name":"cloudMask","in":"query","required":false,"description":"Sentinel-2 only. Make cloud, shadow and cirrus pixels transparent and exclude them from statistics.","schema":{"type":"boolean","default":true}},{"name":"orbit","in":"query","required":false,"description":"Sentinel-1 only. Keep one orbit direction for consistent geometry between dates.","schema":{"type":"string","enum":["ascending","descending"]}}],"responses":{"200":{"description":"Change result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Change"}},"image/png":{},"image/tiff":{}}},"400":{"description":"Invalid parameters. The message says what to change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body and the PAYMENT-REQUIRED header carry x402 payment requirements. Retry with a PAYMENT-SIGNATURE header from an x402 client.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"The Copernicus Data Space request failed. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/catalog/search":{"get":{"tags":["free"],"operationId":"searchCatalog","summary":"List available scenes for an area and period","description":"Free. Use it to pick a date with low cloud cover before buying.","parameters":[{"name":"bbox","in":"query","required":false,"description":"west,south,east,north in decimal degrees (EPSG:4326). Either bbox or lat+lon is required.","schema":{"type":"string","example":"13.35,52.48,13.45,52.55"}},{"name":"lat","in":"query","required":false,"description":"Centre latitude, used with lon and km instead of bbox.","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Centre longitude.","schema":{"type":"number"}},{"name":"km","in":"query","required":false,"description":"Side length in km of the square around lat/lon.","schema":{"type":"number","default":5,"maximum":100}},{"name":"collection","in":"query","required":false,"description":"s2 = Sentinel-2 L2A optical (10 m). s1 = Sentinel-1 GRD radar (10 m, sees through cloud).","schema":{"type":"string","enum":["s2","s1"],"default":"s2"}},{"name":"date","in":"query","required":false,"description":"YYYY-MM-DD. The best scene from the 30 days up to and including this date is used.","schema":{"type":"string","format":"date"}},{"name":"from","in":"query","required":false,"description":"Start of the search window (YYYY-MM-DD). Use with `to` instead of `date`.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"End of the search window (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"maxCloud","in":"query","required":false,"description":"Sentinel-2 only: skip scenes above this cloud cover.","schema":{"type":"integer"}},{"name":"limit","in":"query","required":false,"description":"Max scenes.","schema":{"type":"integer","default":20,"maximum":100}}],"responses":{"200":{"description":"Scenes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}}},"400":{"description":"Invalid parameters. The message says what to change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The Copernicus Data Space request failed. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/quote":{"get":{"tags":["free"],"operationId":"getQuote","summary":"Price for a request without buying it","parameters":[{"name":"product","in":"query","required":false,"description":"Which product.","schema":{"type":"string","enum":["imagery","analyze","timeseries","change"],"default":"imagery"}},{"name":"index","in":"query","required":false,"description":"Index for analyze, timeseries or change.","schema":{"type":"string"}},{"name":"bbox","in":"query","required":false,"description":"west,south,east,north in decimal degrees (EPSG:4326). Either bbox or lat+lon is required.","schema":{"type":"string","example":"13.35,52.48,13.45,52.55"}},{"name":"lat","in":"query","required":false,"description":"Centre latitude, used with lon and km instead of bbox.","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Centre longitude.","schema":{"type":"number"}},{"name":"km","in":"query","required":false,"description":"Side length in km of the square around lat/lon.","schema":{"type":"number","default":5,"maximum":100}},{"name":"collection","in":"query","required":false,"description":"s2 = Sentinel-2 L2A optical (10 m). s1 = Sentinel-1 GRD radar (10 m, sees through cloud).","schema":{"type":"string","enum":["s2","s1"],"default":"s2"}},{"name":"width","in":"query","required":false,"description":"Output width in pixels.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"height","in":"query","required":false,"description":"Output height in pixels. Defaults to width when only width is given.","schema":{"type":"integer","minimum":64,"maximum":2048,"default":512}},{"name":"res","in":"query","required":false,"description":"Metres per pixel. Overrides width and height. 10 is native for both sensors.","schema":{"type":"number","minimum":10}},{"name":"date","in":"query","required":false,"description":"YYYY-MM-DD. The best scene from the 30 days up to and including this date is used.","schema":{"type":"string","format":"date"}},{"name":"from","in":"query","required":false,"description":"Start of the search window (YYYY-MM-DD). Use with `to` instead of `date`.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"End of the search window (YYYY-MM-DD).","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Quote with the exact URL to call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"}}}},"400":{"description":"Invalid parameters. The message says what to change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/preview":{"get":{"tags":["free"],"operationId":"getPreview","summary":"Free 384 px thumbnail of an area","description":"Same parameters as /v1/imagery except size and format, which are fixed. Rate limited per client; use it to check a place or a date before buying.","parameters":[{"name":"bbox","in":"query","required":false,"description":"west,south,east,north in decimal degrees (EPSG:4326). Either bbox or lat+lon is required.","schema":{"type":"string","example":"13.35,52.48,13.45,52.55"}},{"name":"lat","in":"query","required":false,"description":"Centre latitude, used with lon and km instead of bbox.","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Centre longitude.","schema":{"type":"number"}},{"name":"km","in":"query","required":false,"description":"Side length in km of the square around lat/lon.","schema":{"type":"number","default":5,"maximum":100}},{"name":"collection","in":"query","required":false,"description":"s2 = Sentinel-2 L2A optical (10 m). s1 = Sentinel-1 GRD radar (10 m, sees through cloud).","schema":{"type":"string","enum":["s2","s1"],"default":"s2"}},{"name":"preset","in":"query","required":false,"description":"Visual composite or index.","schema":{"type":"string","enum":["true-color","false-color","swir","agriculture","ndvi","ndwi","ndmi","nbr","evi","savi","ndsi","scl","vv","vh","rgb","water"],"default":"true-color"}},{"name":"date","in":"query","required":false,"description":"YYYY-MM-DD. The best scene from the 30 days up to and including this date is used.","schema":{"type":"string","format":"date"}},{"name":"from","in":"query","required":false,"description":"Start of the search window (YYYY-MM-DD). Use with `to` instead of `date`.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"End of the search window (YYYY-MM-DD).","schema":{"type":"string","format":"date"}},{"name":"maxCloud","in":"query","required":false,"description":"Sentinel-2 only. Scenes with more cloud than this are skipped.","schema":{"type":"integer","minimum":0,"maximum":100,"default":30}},{"name":"mosaicking","in":"query","required":false,"description":"Which scene wins where several overlap. Default leastCC for s2, mostRecent for s1.","schema":{"type":"string","enum":["leastCC","mostRecent","leastRecent"]}},{"name":"cloudMask","in":"query","required":false,"description":"Sentinel-2 only. Make cloud, shadow and cirrus pixels transparent and exclude them from statistics.","schema":{"type":"boolean","default":true}},{"name":"orbit","in":"query","required":false,"description":"Sentinel-1 only. Keep one orbit direction for consistent geometry between dates.","schema":{"type":"string","enum":["ascending","descending"]}}],"responses":{"200":{"description":"PNG","content":{"image/png":{}}},"400":{"description":"Invalid parameters. The message says what to change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Preview limit reached."},"502":{"description":"The Copernicus Data Space request failed. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/pricing":{"get":{"tags":["free"],"operationId":"getPricing","summary":"Price rules and examples","responses":{"200":{"description":"Pricing"}}}},"/v1/products":{"get":{"tags":["free"],"operationId":"getProducts","summary":"Collections, presets, indices and limits","responses":{"200":{"description":"Products"}}}},"/health":{"get":{"tags":["free"],"operationId":"health","summary":"Service status","responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}}},"Stats":{"type":"object","properties":{"mean":{"type":["number","null"]},"min":{"type":["number","null"]},"max":{"type":["number","null"]},"stDev":{"type":["number","null"]},"validPixels":{"type":"integer"},"noDataPixels":{"type":"integer"},"validFraction":{"type":"number","description":"Share of pixels with usable data. Low values mean cloud or no coverage."},"percentiles":{"type":"object","additionalProperties":{"type":"number"},"example":{"p10":0.21,"p50":0.48,"p90":0.71}},"histogram":{"type":"array","items":{"type":"object","properties":{"low":{"type":"number"},"high":{"type":"number"},"count":{"type":"integer"}}}},"classes":{"type":"object","additionalProperties":{"type":"number"},"description":"Fraction of valid pixels per named class."}}},"Analysis":{"type":"object","properties":{"product":{"type":"string","const":"analyze"},"index":{"type":"string"},"collection":{"type":"string"},"bbox":{"type":"array","items":{"type":"number"}},"areaKm2":{"type":"number"},"timeRange":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}}},"stats":{"$ref":"#/components/schemas/Stats"},"legend":{"type":"object"},"image":{"type":"object","properties":{"format":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"dataUrl":{"type":"string"}}},"priceUsd":{"type":"number"}}},"Timeseries":{"type":"object","properties":{"product":{"type":"string","const":"timeseries"},"index":{"type":"string"},"interval":{"type":"string"},"series":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"mean":{"type":["number","null"]},"p10":{"type":["number","null"]},"p50":{"type":["number","null"]},"p90":{"type":["number","null"]},"validFraction":{"type":"number"}}}},"summary":{"type":"object"},"priceUsd":{"type":"number"}}},"Change":{"type":"object","properties":{"product":{"type":"string","const":"change"},"index":{"type":"string"},"before":{"type":"object","properties":{"date":{"type":"string"},"stats":{"$ref":"#/components/schemas/Stats"}}},"after":{"type":"object","properties":{"date":{"type":"string"},"stats":{"$ref":"#/components/schemas/Stats"}}},"difference":{"type":"object","properties":{"stats":{"$ref":"#/components/schemas/Stats"},"lossFraction":{"type":"number"},"gainFraction":{"type":"number"},"stableFraction":{"type":"number"},"threshold":{"type":"number"}}},"image":{"type":"object","properties":{"dataUrl":{"type":"string"}}},"priceUsd":{"type":"number"}}},"Catalog":{"type":"object","properties":{"collection":{"type":"string"},"count":{"type":"integer"},"scenes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"datetime":{"type":"string"},"cloudCover":{"type":"number"},"platform":{"type":"string"},"orbitDirection":{"type":"string"}}}}}},"Quote":{"type":"object","properties":{"product":{"type":"string"},"priceUsd":{"type":"number"},"price":{"type":"string"},"url":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"bbox":{"type":"array","items":{"type":"number"}}}}}}}