{"credential":{"kind":"anon","plan":"anon","scopes":["earth.twin","earth.places","earth.infrastructure","earth.events","earth.event-changes","earth.traffic-tiles","earth.seen-areas","earth.hazard-index","earth.air-quality","earth.marine","earth.plates","earth.fires","earth.coral","earth.bathymetry","earth.brand-exposure","earth.volcano-alerts","earth.limits"],"layers":["*"],"metered":false},"quota":null,"anonymous":{"perMinute":120,"scope":"per IP","note":"there is no key to attribute this to"},"caps":{"forThisCaller":{"plan":"anon","bboxDeg":0.25,"radiusM":800,"pointsPerLayer":800,"twinPoints":3000,"rows":2000},"perEndpointBbox":{"places":0.6,"infrastructure":2,"traffic-tiles":0.6},"radiusM":{"min":100,"max":1500,"default":450},"byPlan":[{"plan":"anon","bboxDeg":0.25,"radiusM":800,"pointsPerLayer":800,"twinPoints":3000,"rows":2000},{"plan":"Free","bboxDeg":0.6,"radiusM":1500,"pointsPerLayer":1500,"twinPoints":8000,"rows":5000},{"plan":"Basic","bboxDeg":0.6,"radiusM":1500,"pointsPerLayer":2500,"twinPoints":15000,"rows":10000},{"plan":"Pro","bboxDeg":1,"radiusM":1500,"pointsPerLayer":4000,"twinPoints":40000,"rows":25000},{"plan":"Enterprise","bboxDeg":2,"radiusM":1500,"pointsPerLayer":8000,"twinPoints":100000,"rows":60000}],"note":"the per-endpoint bbox ceilings bind every tier. A wider plan cannot buy a wider scan."},"quotaByPlan":[{"plan":"Free","perMinute":240,"perDay":5000,"perMonth":50000,"embedLoadsPerDay":1000,"maxEmbedKeys":2,"priceUsdPerMonth":0},{"plan":"Basic","perMinute":300,"perDay":25000,"perMonth":300000,"embedLoadsPerDay":5000,"maxEmbedKeys":3,"priceUsdPerMonth":9},{"plan":"Pro","perMinute":600,"perDay":200000,"perMonth":3000000,"embedLoadsPerDay":50000,"maxEmbedKeys":10,"priceUsdPerMonth":19},{"plan":"Enterprise","perMinute":1200,"perDay":2000000,"perMonth":40000000,"embedLoadsPerDay":500000,"maxEmbedKeys":50,"priceUsdPerMonth":199}],"layerVocabulary":{"data":["quakes","disasters","air","radio","iss","cameras","companies","exchanges","airports","countries","cities","seaports","rivers","launches","weather","cyclones","news"],"overlays":["overlay:satellite","overlay:roads","overlay:places","overlay:towers","overlay:traffic","overlay:radar","overlay:photos","overlay:satellites"],"eventPrefix":"ev:<EONET category>","defaults":["quakes","disasters","cyclones"],"withdrawn":[{"id":"flights","reason":"live aircraft are no longer served through the public API. One of the two ADS-B mirrors behind this layer forbids licensing, selling, renting or leasing its data or service, and this API is metered and priced. That is a restriction on reselling access rather than on the data itself, so the layer is unaffected on solyzer.ai, and every other layer on this key is untouched."}],"note":"an unknown id comes back in rejected[], and a known id we did not serve comes back in notServed[] with the reason. Neither is dropped. A withdrawn id is a known id: it comes back in notServed[], never in rejected[], and a request for nothing but withdrawn ids is answered 410 rather than with the default set."},"endpoints":["GET /public/v1/:cred/twin","GET /public/v1/:cred/places","GET /public/v1/:cred/infrastructure","GET /public/v1/:cred/events","GET /public/v1/:cred/event-changes","GET /public/v1/:cred/traffic-tiles","GET /public/v1/:cred/seen-areas","GET /public/v1/:cred/hazard-index?lat&lon (BNPB InaRISK, 202 while a cold point computes)","GET /public/v1/:cred/air-quality (Jakarta ISPU, measured stations)","GET /public/v1/:cred/marine (BMKG ports and high wave warnings)","GET /public/v1/:cred/fires (NASA FIRMS active fire detections, last 24h, bbox filtered)","GET /public/v1/:cred/coral?bbox (NOAA Coral Reef Watch bleaching alert, five NOAA steps)","GET /public/v1/:cred/bathymetry?lat&lon (sea floor depth at a point from GEBCO 2026, with whether it was measured or estimated)","GET /public/v1/:cred/bathymetry/profile?path=lon,lat;lon,lat (depth profile along a line)","GET /public/v1/:cred/bathymetry/stats?ring=lon,lat;... (deepest, mean, volume, depth bands and measured share under an area)","GET /public/v1/:cred/brand-exposure?brand=Q...&poly= (how many of a chain's outlets are inside a shape, counted from OpenStreetMap and never served as rows)","GET /public/v1/:cred/plates (Bird 2003 plate boundaries)","GET /public/v1/:cred/volcano-alerts (PVMBG levels, names and levels only, no coordinates)","GET /public/v1/:cred/site-intel (needs the earth.site-intel scope, not keyless)","GET /public/v1/:cred/limits","GET /public/v1/:cred/renew"],"metering":"Keyless responses are edge-cacheable, so reads served by the CDN never reach the meter. Any keyless figure is a floor, not a total.","enforcement":{"real":["scope allowlist","per-minute, per-day and per-month ceilings","revocation, effective immediately","bbox, radius and result caps","the request budget a keyed embed token carries, counted per visitor and carried across renewals"],"browserOnly":["Access-Control-Allow-Origin, which stops a hostile page reading the response","frame-ancestors, which stops a stolen key rendering our UI on an unregistered site"],"advisory":["the Origin, Referer, Sec-Fetch-Site and Sec-Fetch-Dest request headers, all forgeable from a script","the framing origin baked into an embed token, which is checked once server-side at mint and is not re-checked on each request"]}}