{"api":"v1","generated_at":"2026-09-17T04:52:48.368Z","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-h3-polyfill-a3efb0","pinned_page":"https://tollindex.com/e/api-geoprimitives-dev-v1-h3-polyfill-a3efb0/at/2026-09-17T04-51Z","pinned":false,"method":"https://tollindex.com/ledger/method","snapshot_at":"2026-09-17T04:51:06.079Z","snapshot_stamp":"2026-09-17T04-51Z","endpoint":{"slug":"api-geoprimitives-dev-v1-h3-polyfill-a3efb0","canonical_url":"https://api.geoprimitives.dev/v1/h3/polyfill","resource":"https://api.geoprimitives.dev/v1/h3/polyfill","http_method":"POST","type":"http","x402_version":2,"registries":["cdp"],"primary_registry":"cdp","curated_by_coinbase":false,"description":"Polyfill: turn a polygon into the set of H3 cells that cover it, so a spatial question becomes a set-membership question you can answer with a join. Send \"geojson\" as a Polygon, a MultiPolygon, or a Feature or FeatureCollection wrapping them, in EPSG:4326, plus exactly one of \"resolution\" or \"resolutions\". Choose the containment rule with \"containment\": \"center\" returns cells whose centre is inside the polygon, which is H3's default and under-covers at the edges; \"overlapping\" returns every cell the polygon touches, so the set fully covers it; \"full\" returns only cells entirely inside. Holes are respected, a MultiPolygon is treated as one polygon with its parts unioned and deduplicated, and feature ids are echoed so rows join back to your records. This route covers polygons and nothing else: a body carrying \"points\" is refused rather than served, and because \"geojson\" is required here that refusal happens before a price is quoted and costs you nothing. To index individual positions to their containing cell, POST /v1/h3/index instead, which is cheaper because it is a much smaller job. What you are paying for here, measured on this runtime: cell count grows about sevenfold per resolution step, so the cost has to be estimated before any cell is generated, which puts a floor of about 1.5 ms on even a city-block polyfill against about 0.003 ms for a one-point index call, and a polyfill at the 100000-cell cap is about 200 ms and 1.8 MB. Anything estimated above that cap is refused with the finest resolution that would have fitted, before a cell is generated; set \"estimateOnly\" to size a job for the price of the call and nothing else. Input is EPSG:4326, longitude then latitude, and non-areal geometry is refused by name. Limits: 500 polygons, 10000 polygon positions, 4 resolutions per call, 100000 cells per call, and a 1 MiB request body.","service_name":"geoprimitives","declared_category":null,"declared_tags":["h3","polyfill","grid","hexagon","polygon"],"route_template":null,"registry_updated":"2026-08-21T17:26:05.344Z"},"derived":{"note":"fields no registry supplies; TOLL derives them and marks them derived on the page","title":"h3 polyfill","category":"compute","first_observed_by_toll":"2026-09-10T19:08:24.178Z","last_observed_by_toll":"2026-09-17T04:51:06.078Z","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-17T04:51:06.079Z","calls_30d":1,"unique_payers_30d":1,"last_called_at":"2026-08-21T17:26:05.235Z"},"validation":{"latest":{"observed_at":"2026-09-16T05:48:29.485Z","state":"pass","failed_checks":[],"endpoint_http_status":402,"run_id":"daily-2026-09-16"},"uptime":[{"days":7,"observed":6,"passed":6,"ratio":1},{"days":30,"observed":6,"passed":6,"ratio":1},{"days":90,"observed":6,"passed":6,"ratio":1}],"history_90d":[{"observed_at":"2026-09-16T05:48:29.485Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-16","state_changed":false},{"observed_at":"2026-09-15T06:05:34.205Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-15","state_changed":false},{"observed_at":"2026-09-14T05:36:43.814Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-14","state_changed":false},{"observed_at":"2026-09-13T05:30:38.443Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-13","state_changed":false},{"observed_at":"2026-09-12T07:47:33.679Z","state":"pass","failed_checks":[],"run_id":"daily-2026-09-12","state_changed":false},{"observed_at":"2026-09-11T11:38:44.546Z","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":["h3","polyfill","grid","hexagon","polygon"],"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:26:05.235Z","l30DaysTotalCalls":1,"l30DaysUniquePayers":1},"resource":"https://api.geoprimitives.dev/v1/h3/polyfill","extensions":{"bazaar":{"info":{"input":{"body":{"geojson":{"type":"Polygon","coordinates":[[[-122.43,37.77],[-122.4,37.77],[-122.4,37.79],[-122.43,37.79],[-122.43,37.77]]]},"resolution":8},"type":"http","method":"POST","bodyType":"json"},"output":{"type":"json","example":{"mode":"polyfill","notes":[],"results":[{"id":null,"cells":["8828308283fffff","882830828bfffff","88283082b9fffff","8828308281fffff","8828308287fffff","88283082e3fffff","88283082abfffff","88283082bdfffff","8828308285fffff"],"polygon":0,"cellCount":9,"resolution":8,"estimatedCellCount":15}],"cellCount":9,"containment":"center","resolutions":[8],"polygonCount":1}}},"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","oneOf":[{"required":["resolution"]},{"required":["resolutions"]}],"required":["geojson"],"properties":{"geojson":{"type":"object","description":"Polygons to cover: a Polygon, a MultiPolygon, or a Feature or FeatureCollection wrapping them, in EPSG:4326. At most 500 polygons and 10000 positions in total. Non-areal geometry is rejected. Required: this route takes nothing else. To index individual positions, POST /v1/h3/index."},"resolution":{"type":"integer","maximum":15,"minimum":0,"description":"H3 resolution, 0 (about 4.4 million square kilometres per cell) to 15 (about 0.9 square metres). Send this or \"resolutions\", not both. One step finer is about seven times as many cells."},"containment":{"enum":["center","overlapping","full"],"type":"string","description":"\"center\" returns cells whose centre is inside the polygon, the H3 default, which under-covers at the edges. \"overlapping\" returns every cell the polygon touches, so the set fully covers it. \"full\" returns only cells entirely inside it. Defaults to \"center\"."},"resolutions":{"type":"array","items":{"type":"integer","maximum":15,"minimum":0},"maxItems":4,"description":"Several H3 resolutions at once, 0 to 15, distinct. At most 4, and all of them are counted against the one 100000-cell cap."},"estimateOnly":{"type":"boolean","description":"Return the estimated cell count per polygon and resolution without generating any cells. The estimate is an upper bound, never lower than the true count. Defaults to false."}},"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":"Polyfill: turn a polygon into the set of H3 cells that cover it, so a spatial question becomes a set-membership question you can answer with a join. Send \"geojson\" as a Polygon, a MultiPolygon, or a Feature or FeatureCollection wrapping them, in EPSG:4326, plus exactly one of \"resolution\" or \"resolutions\". Choose the containment rule with \"containment\": \"center\" returns cells whose centre is inside the polygon, which is H3's default and under-covers at the edges; \"overlapping\" returns every cell the polygon touches, so the set fully covers it; \"full\" returns only cells entirely inside. Holes are respected, a MultiPolygon is treated as one polygon with its parts unioned and deduplicated, and feature ids are echoed so rows join back to your records. This route covers polygons and nothing else: a body carrying \"points\" is refused rather than served, and because \"geojson\" is required here that refusal happens before a price is quoted and costs you nothing. To index individual positions to their containing cell, POST /v1/h3/index instead, which is cheaper because it is a much smaller job. What you are paying for here, measured on this runtime: cell count grows about sevenfold per resolution step, so the cost has to be estimated before any cell is generated, which puts a floor of about 1.5 ms on even a city-block polyfill against about 0.003 ms for a one-point index call, and a polyfill at the 100000-cell cap is about 200 ms and 1.8 MB. Anything estimated above that cap is refused with the finest resolution that would have fitted, before a cell is generated; set \"estimateOnly\" to size a job for the price of the call and nothing else. Input is EPSG:4326, longitude then latitude, and non-areal geometry is refused by name. Limits: 500 polygons, 10000 polygon positions, 4 resolutions per call, 100000 cells per call, and a 1 MiB request body.","lastUpdated":"2026-08-21T17:26:05.344Z","serviceName":"geoprimitives","x402Version":2}]}}