Geocoding, routing, map tiles and trip reconstruction on OpenStreetMap data. Plain REST over HTTPS, one API key, JSON in and out. The pilot is hosted in Sydney. Regional self-hosting can be scoped separately.
Search, routing and trip reconstruction carry your key in the X-API-Key header. Keys look like mk_…. Base URL for all endpoints:
https://georide.co.in
To get a key during the pilot, email daanish1sharma@gmail.com — we issue it the same day. Self-hosting? You run the stack and mint your own keys.
Find places, streets and landmarks by name. Add near to rank closer results first. Local suggestions use cached regional data. Add online=true for a completed online search beyond the cache. Online lookups use a rate-limited upstream service and are cached; this pilot has no availability guarantee.
GET /api/nav/search?q=<text>&near=<lat,lon>
| Parameter | Notes |
|---|---|
q | What you're searching for. Required. |
near | lat,lon to sort by distance. Optional. |
curl "https://georide.co.in/api/nav/search?q=rajindra+hospital&near=30.34,76.39" \
-H "X-API-Key: mk_your_key"
[
{"name": "Rajindra Hospital", "kind": "hospital", "lat": 30.3419, "lon": 76.3887},
{"name": "Rajindra Enclave", "kind": "suburb", "lat": 30.3561, "lon": 76.3702}
]
A driving route between two points: the line to draw, distance, time, and turn-by-turn instructions. Routes use the local engine where covered and an on-demand online fallback elsewhere. Online availability and OSM road coverage are not guaranteed.
GET /api/nav/route?start=<lat,lon>&end=<lat,lon>
curl "https://georide.co.in/api/nav/route?start=30.34,76.39&end=30.74,76.79" \
-H "X-API-Key: mk_your_key"
{
"distance_m": 67100,
"time_s": 4260,
"points": [[30.3401, 76.3912], [30.3408, 76.3920], ...], // [lat, lon] along the route
"instructions": [
{"text": "Head toward NH-7", "distance_m": 320, "time_s": 40, "sign": 0, "at": [30.3401, 76.3912]},
{"text": "Turn right onto Rajpura Road", "distance_m": 2100, "time_s": 180, "sign": 2, "at": [30.3429, 76.3951]}
]
}
sign is the turn direction (negative = left, positive = right, 0 = straight, 4 = arrive). at is where the instruction applies.
Tiles and style are currently public endpoints; the search, routing and reconstruction APIs require authentication. Tile availability outside the local archive depends on the upstream source. No production SLA is offered during the pilot.
Vector map tiles (Mapbox Vector Tile format, gzip-encoded) and a ready-made light map style. Drop them straight into MapLibre.
GET /tiles/{z}/{x}/{y}.mvt · GET /api/nav/style.json
const map = new maplibregl.Map({
container: 'map',
style: 'https://georide.co.in/api/nav/style.json',
center: [76.39, 30.34], zoom: 13
});
Tiles for your area are fetched and cached on demand, so any city works without a separate download. Map data © OpenStreetMap contributors — keep the attribution visible.
Send the raw GPS points of a trip; get a clean track, true distance, duration, top speed, harsh-braking events and GPS gaps. Optionally include phone motion samples for accuracy through GPS outages. Nothing you send is stored.
POST /v1/trips/reconstruct
curl https://georide.co.in/v1/trips/reconstruct \
-H "X-API-Key: mk_your_key" -H "Content-Type: application/json" \
-d '{"points": [
{"t": 1792238425, "lat": 30.3583, "lon": 76.3854, "acc": 5},
{"t": 1792238426, "lat": 30.3584, "lon": 76.3855, "acc": 5},
{"t": 1792238427, "lat": 30.3585, "lon": 76.3856, "acc": 6}
]}'
{"distance_km": 4.15, "duration_min": 11.6, "max_speed_kmh": 67.3,
"harsh_braking": 0, "gps_gaps": 0, "precise": false,
"track": [[30.35831, 76.38543], ...]}
t is Unix time in seconds, acc the reported GPS accuracy in metres (optional). precise is true when motion sensors were used.
The pilot runs on shared infrastructure, so keep request rates reasonable and cache what you can. Need higher volume, an SLA, or a dedicated or self-hosted deployment? Talk to us — that's the paid tier.