Documentation

From zero to first route in under 5 minutes. No SDK required — standard HTTP with any language.

Getting Started

1

Get your API Key

Sign up for free to get your gr_ API key. 10,000 requests/month included — no credit card required.

2

Authenticate

Pass your key via any of these methods:

Header: X-API-Key: gr_xxx

Header: Authorization: Bearer gr_xxx

Query: ?api_key=gr_xxx

3

Make your first request

Choose your language:

terminal
curl -X POST https://api.georavity.com/v1/route \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "locations": [
      {"lat": 52.52, "lon": 13.405},
      {"lat": 48.856, "lon": 2.352}
    ],
    "costing": "auto"
  }'
app.js
const res = await fetch("https://api.georavity.com/v1/route", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    locations: [
      { lat: 52.52, lon: 13.405 },
      { lat: 48.856, lon: 2.352 },
    ],
    costing: "auto",
  }),
});

const data = await res.json();
console.log(data.trip.summary);
route.py
import requests

response = requests.post(
    "https://api.georavity.com/v1/route",
    headers={
        "X-API-Key": "YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "locations": [
            {"lat": 52.52, "lon": 13.405},
            {"lat": 48.856, "lon": 2.352},
        ],
        "costing": "auto",
    },
)

data = response.json()
print(data["trip"]["summary"])
main.go
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    body, _ := json.Marshal(map[string]any{
        "locations": []map[string]float64{
            {"lat": 52.52, "lon": 13.405},
            {"lat": 48.856, "lon": 2.352},
        },
        "costing": "auto",
    })

    req, _ := http.NewRequest("POST",
        "https://api.georavity.com/v1/route",
        bytes.NewBuffer(body))
    req.Header.Set("X-API-Key", "YOUR_API_KEY")
    req.Header.Set("Content-Type", "application/json")

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()

    var result map[string]any
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result["trip"])
}

API Endpoints

Rate Limits & Headers

Every authenticated response includes rate limit headers:

X-RateLimit-Limit: 100

X-RateLimit-Remaining: 99

X-RateLimit-Reset: 1

X-Request-ID: af6981a8185ad158

When rate-limited, you'll receive a 429 Too Many Requests with a Retry-After header.