API changelog and the /v1 policy
Code that calls the local server should survive an update of the server. Here is what each release added, and the rule we follow for the paths under /v1.
What you have
A running server: the page at / lists what it answers. The full description is openapi.json.
Steps
1. Start a server and ask it what it answers:
$ gridpin serve usa.bin --port 8080
$ curl -s http://127.0.0.1:8080/
GridPin 0.8.0 — offline geocoder, sheet usa.bin (us).
GET /v1/geocode?q=...&k=1[&near=lat,lon] {"results": [...]}
POST /v1/geocode {"queries": [...], "k": 1} {"results": [[...], ...]} (a query: text or {"street", "housenumber", "city", "region", "postcode"})
GET /v1/reverse?lat=...&lon=...&k=1
GET /v1/suggest?q=...&k=8 streets that start as the typed text, for an address field
GET /ui a page: drop a CSV, get it back geocoded
POST /v1/extract {"text": "...", "verify": false} addresses found in a free text
(every path takes with=h3,geohash,placekey,codes,street_point,links,provenance: an `extras` object per answer)
GET /search?q=...&format=jsonv2|json|geojson&limit=10&addressdetails=1 Nominatim-compatible
GET /reverse?lat=...&lon=...&format=jsonv2 Nominatim-compatible
GET /status?format=json
GET /maps/api/geocode/json?address=...|latlng=lat,lng Google-compatible
GET /health
Documentation: https://gridpin.dev/geocoding-server
What you get
| Release | Date | Paths |
|---|---|---|
| 0.7.0 | November 2, 2026 | /v1/geocode (GET and POST), /v1/reverse, /health, /; Nominatim /search, /reverse, /status (also with .php) |
| 0.7.1, 0.8.0 | November 3 and 6, 2026 | no change of paths |
| 0.9.0 new in 0.9.0 | November 12, 2026 | /v1/suggest, /v1/extract, /v1/exists, /v1/explain, /ui, Google-compatible /maps/api/geocode/json; with= on every path; the OpenAPI description |
Dates are those of the release tags in the public repository.
Why it works
Within 0.x the paths under /v1 only grow: a new path, a new optional parameter or a new field in an answer is not a breaking change, so read answers by field name and ignore fields you do not know. A removed path or a renamed field would mean a new major version, and the old path would answer until then. No dates of support are promised.
Limits
- The Nominatim and Google paths follow those services' shapes as far as GridPin implements them; parameters it does not read are ignored, not refused.
- The
/page and/healthare for people and probes, not a contract: their text can change in any release. - The policy covers the HTTP server; the command line, the Python module and the file format have their own notes in the release notes.
All its keys: command reference. The functions: local server, OpenAPI description.