{"api":"v1","generated_at":"2026-09-15T18:48:14.376Z","licence":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/","attribution":"TOLL, with a link to the page cited"},"page":"https://tollindex.com/e/api-geoprimitives-dev-v1-elevation-profile-2bc2fe","pinned_page":"https://tollindex.com/e/api-geoprimitives-dev-v1-elevation-profile-2bc2fe/at/2026-09-15T16-57Z","pinned":false,"method":"https://tollindex.com/ledger/method","snapshot_at":"2026-09-15T16:57:44.360Z","snapshot_stamp":"2026-09-15T16-57Z","endpoint":{"slug":"api-geoprimitives-dev-v1-elevation-profile-2bc2fe","canonical_url":"https://api.geoprimitives.dev/v1/elevation/profile","resource":"https://api.geoprimitives.dev/v1/elevation/profile","http_method":"POST","type":"http","x402_version":2,"registries":["cdp"],"primary_registry":"cdp","curated_by_coinbase":false,"description":"Send a polyline as an array of [longitude, latitude] positions and it answers with elevations sampled at equal geodesic spacing along it, from the USGS 3D Elevation Program seamless DEM, plus the cumulative gain and loss and the minimum and maximum. One call for a whole route rather than one call per point: 2000 samples cost what two cost. COVERAGE is the state of Alaska, whole, and nothing else yet; see GET /v1/elevation for the full statement, which this route shares and repeats under `coverage` on every response. Every sample is checked against the coverage before a tile is read, and a profile with any sample outside Alaska is refused with outside_coverage naming the sample. That check reads coordinates, so it runs after payment like the rest of the handler; the refusal does not settle and nothing is charged, but it costs a signature and a second round trip. Canada is not served even where USGS publishes pixels over it, for the licensing reason stated there. SAMPLING: samples are placed at equal geodesic distance (GRS 80) along the polyline, each on the great circle of its segment, the first at the first position and the last at the last. Omit `samples` to sample every 60 m, the native pixel height, up to 2000; pass it to choose the count. Each sample is bilinear over the four pixel centres around it by default, or `nearest` for the raster's own values; the response names the method. The source is the 2 arc-second product USGS publishes for Alaska, about 62 m north to south, so asking for spacing much under 60 m buys interpolation rather than information. VOIDS inside the line: gaps in the USGS footprint, the Canadian side of the border and water beyond the county limit are void. A sample whose window is entirely void is null in the list and counted in `stats.voidSamples`; gain and loss are summed over consecutive non-null samples so a crossing of void water is not a descent to zero and back. Inshore water is 0 in some USGS blocks rather than void, so a line across a bay may read 0 m there, which is the source's value; see GET /v1/elevation. A profile that is void throughout is refused with no_data and not charged. SOURCE, VINTAGE, DATUMS AND ACCURACY are those of GET /v1/elevation: USGS 3DEP, public domain, NAVD88 metres, NAD83 horizontal read as WGS 84, IFSAR-derived in Alaska with metre-level vertical accuracy on open ground. Gain and loss over a 2 arc-second surface are an estimate of the terrain's, not of a track's: fine structure narrower than a pixel is not in the data. Limits: 500 positions in the polyline, 2000 samples, 1000 km of length, 512 elevation tiles read per call (about 2000 km of profile at the coarsest sampling; a 100 km profile at native spacing reads about 40), and a 1 MiB body. All are checked before a tile is read.","service_name":"geoprimitives","declared_category":null,"declared_tags":["elevation","profile","dem","3dep","alaska"],"route_template":null,"registry_updated":"2026-08-21T17:25:51.381Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"elevation profile","category":"inference","first_observed_by_toll":"2026-09-10T19:08:24.178Z","last_observed_by_toll":"2026-09-15T16:57:44.360Z","observation_began":"2026-09-10"},"presence":{"listed_now":true,"first_absent_at":null,"delisting_confirmed_at":null,"events":[{"registry":"cdp","at":"2026-09-10T19:08:24.178Z","event":"listed"}]},"accepts":[{"registry":"cdp","ordinal":0,"network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","asset_name":"USD Coin","symbol":"USDC","decimals":6,"amount_display":"0.01 USDC","amount_units":0.01,"decimals_known":true,"pay_to":"0x76A51b5Dd3729950B3b60c17f19252d221968FCe","scheme":"exact"}],"counters":{"observed_at":"2026-09-15T16:57:44.360Z","calls_30d":1,"unique_payers_30d":1,"last_called_at":"2026-08-21T17:25:50.736Z"},"validation":{"latest":{"observed_at":"2026-09-15T04:17:44.105Z","state":"pass","failed_checks":[],"endpoint_http_status":402,"run_id":"daily-2026-09-15"},"uptime":[{"days":7,"observed":5,"passed":5,"ratio":1},{"days":30,"observed":5,"passed":5,"ratio":1},{"days":90,"observed":5,"passed":5,"ratio":1}],"history_90d":[{"observed_at":"2026-09-15T04:17:44.105Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-15","state_changed":false},{"observed_at":"2026-09-14T04:15:26.314Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-14","state_changed":false},{"observed_at":"2026-09-13T04:14:39.894Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-13","state_changed":false},{"observed_at":"2026-09-12T06:30:03.830Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-12","state_changed":false},{"observed_at":"2026-09-11T09:59:10.374Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-11","state_changed":true}]},"seller":{"wallet":"0x76A51b5Dd3729950B3b60c17f19252d221968FCe","page":"https://tollindex.com/seller/0x76A51b5Dd3729950B3b60c17f19252d221968FCe","endpoints":21,"hosts":1},"reports":0,"registry_record":{"cdp":[{"tags":["elevation","profile","dem","3dep","alaska"],"type":"http","accepts":[{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"name":"USD Coin","version":"2"},"payTo":"0x76A51b5Dd3729950B3b60c17f19252d221968FCe","amount":"10000","scheme":"exact","network":"eip155:8453","maxTimeoutSeconds":300}],"quality":{"lastCalledAt":"2026-08-21T17:25:50.736Z","l30DaysTotalCalls":1,"l30DaysUniquePayers":1},"resource":"https://api.geoprimitives.dev/v1/elevation/profile","extensions":{"bazaar":{"info":{"input":{"body":{"samples":5,"coordinates":[[-149.8997,61.2181],[-149.8397,61.2081]]},"type":"http","method":"POST","bodyType":"json"},"output":{"type":"json","example":{"notes":[],"stats":{"maxMetres":37.525,"minMetres":30.598,"gainMetres":9.733,"lossMetres":5.204,"voidSamples":0},"units":"metres","source":{"url":"https://prd-tnm.s3.amazonaws.com/StagedProducts/Elevation/2/TIFF/current/","units":"metres","rights":"Public domain (US government work, 17 U.S.C. 105)","dataset":"3D Elevation Program (3DEP) seamless DEM","product":"2 arc-second","publisher":"US Geological Survey","usgsPublished":null,"verticalDatum":"NAVD88","horizontalDatum":"NAD83","pixelArcSeconds":2,"usgsPublishedRange":["2013","20260611"]},"samples":[{"lat":61.2181,"lon":-149.8997,"elevation":31.763,"distanceMetres":0},{"lat":61.2156025,"lon":-149.8846964,"elevation":34.569,"distanceMetres":852.95},{"lat":61.2131033,"lon":-149.8696952,"elevation":30.598,"distanceMetres":1705.89},{"lat":61.2106025,"lon":-149.8546964,"elevation":37.525,"distanceMetres":2558.84},{"lat":61.2081,"lon":-149.8397,"elevation":36.292,"distanceMetres":3411.78}],"coverage":{"blocks":439,"reason":"Coverage is the state of Alaska, whole, from the USGS 3DEP seamless 2 arc-second DEM: every 1-degree block that holds Alaskan ground as the Census TIGER county boundaries draw it, 439 blocks. The conterminous United States and Hawaii are not answered yet. USGS publishes them at 1 arc-second through the same pipeline; they are a 47 GB upload rather than a design change and will arrive as a coverage extension with no change to this interface. Canada is not answered, and the pixels USGS ships over Yukon and British Columbia were not stored: they come from Natural Resources Canada under a licence with an attribution clause, and this catalog carries public-domain data only. A coordinate outside the coverage is quoted like any other and then refused with outside_coverage; a refusal does not settle, so nothing is charged for it.","region":"Alaska","answered":["Alaska"],"notAnswered":["conterminous United States","Hawaii","territories","Canada","the rest of the world"]},"geometry":"Samples are spaced equally by geodesic distance (GRS 80) along the polyline; each lies on the great circle of its segment.","tilesRead":3,"sampleCount":5,"lengthMetres":3411.78,"interpolation":"bilinear","spacingMetres":852.95,"verticalDatum":"NAVD88"}}},"schema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","required":["coordinates"],"properties":{"samples":{"type":"integer","maximum":2000,"minimum":2,"description":"How many samples to return, equally spaced along the line including both ends. Omit for one every 60 m, capped at 2000."},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"number"},"maxItems":3,"minItems":2,"description":"[longitude, latitude] in EPSG:4326; a third element is ignored."},"maxItems":500,"minItems":2,"description":"The polyline, in order. At least two distinct positions."},"interpolation":{"enum":["bilinear","nearest"],"type":"string","default":"bilinear","description":"bilinear (default) or nearest, as on GET /v1/elevation."}},"additionalProperties":false},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}}}},"description":"Send a polyline as an array of [longitude, latitude] positions and it answers with elevations sampled at equal geodesic spacing along it, from the USGS 3D Elevation Program seamless DEM, plus the cumulative gain and loss and the minimum and maximum. One call for a whole route rather than one call per point: 2000 samples cost what two cost. COVERAGE is the state of Alaska, whole, and nothing else yet; see GET /v1/elevation for the full statement, which this route shares and repeats under `coverage` on every response. Every sample is checked against the coverage before a tile is read, and a profile with any sample outside Alaska is refused with outside_coverage naming the sample. That check reads coordinates, so it runs after payment like the rest of the handler; the refusal does not settle and nothing is charged, but it costs a signature and a second round trip. Canada is not served even where USGS publishes pixels over it, for the licensing reason stated there. SAMPLING: samples are placed at equal geodesic distance (GRS 80) along the polyline, each on the great circle of its segment, the first at the first position and the last at the last. Omit `samples` to sample every 60 m, the native pixel height, up to 2000; pass it to choose the count. Each sample is bilinear over the four pixel centres around it by default, or `nearest` for the raster's own values; the response names the method. The source is the 2 arc-second product USGS publishes for Alaska, about 62 m north to south, so asking for spacing much under 60 m buys interpolation rather than information. VOIDS inside the line: gaps in the USGS footprint, the Canadian side of the border and water beyond the county limit are void. A sample whose window is entirely void is null in the list and counted in `stats.voidSamples`; gain and loss are summed over consecutive non-null samples so a crossing of void water is not a descent to zero and back. Inshore water is 0 in some USGS blocks rather than void, so a line across a bay may read 0 m there, which is the source's value; see GET /v1/elevation. A profile that is void throughout is refused with no_data and not charged. SOURCE, VINTAGE, DATUMS AND ACCURACY are those of GET /v1/elevation: USGS 3DEP, public domain, NAVD88 metres, NAD83 horizontal read as WGS 84, IFSAR-derived in Alaska with metre-level vertical accuracy on open ground. Gain and loss over a 2 arc-second surface are an estimate of the terrain's, not of a track's: fine structure narrower than a pixel is not in the data. Limits: 500 positions in the polyline, 2000 samples, 1000 km of length, 512 elevation tiles read per call (about 2000 km of profile at the coarsest sampling; a 100 km profile at native spacing reads about 40), and a 1 MiB body. All are checked before a tile is read.","lastUpdated":"2026-08-21T17:25:51.381Z","serviceName":"geoprimitives","x402Version":2}]}}