API REFERENTIE
API-documentatie
Integreer de GeoPin geolocatie-engine in je applicatie. Upload een straatfoto en ontvang GPS-coördinaten.
Base URL
https://geopin.nl # Snelstart
Haal je API-sleutel op via je accountpagina en stuur je eerste verzoek:
curl
curl -X POST https://geopin.nl/api/geolocate \
-H "X-API-Key: sk_geopin_jouw_sleutel" \
-F "image=@foto.jpg" # Authenticatie
Alle verzoeken naar /api/geolocate vereisen een API-sleutel in de X-API-Key header.
Je API-sleutel vind je op je accountpagina. Deel je sleutel nooit publiek.
# Limieten per abonnement
| Abonnement | Zoekopdrachten / maand | Resultaat |
|---|---|---|
| Gratis | 3 | Locatie binnen ~500m |
| Starter | 10 | Exacte GPS-coördinaten |
| Pro | 150 | Exacte GPS-coördinaten |
| Business | 1.000 | Exacte GPS-coördinaten |
# Endpoints
POST
/api/geolocate Lokaliseer een straatfoto en ontvang GPS-coördinaten.
Headers
X-API-Key | vereist | Je API-sleutel |
Content-Type | automatisch | multipart/form-data |
Body multipart/form-data
image | vereist | Afbeeldingsbestand (JPG, PNG of WebP) |
Voorbeeld response 200 OK
JSON
{
"search_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"location": {
"lat": 52.21987,
"lon": 6.89350,
"confidence": 0.847,
"heading": 142.5
},
"pano_id": "CAoSLEFGMVFp...",
"server_time": 1.243,
"usage": {
"plan": "pro",
"used": 42,
"limit": 150
}
} Foutcodes
400 | Geen afbeelding meegegeven | |
401 | Ongeldige of ontbrekende API-sleutel | |
402 | Maandelijkse limiet bereikt | |
429 | Te veel verzoeken | |
503 | Dienst tijdelijk niet beschikbaar | |
GET
/api/stats Geeft de huidige status van de GeoPin-index.
Geen authenticatie vereist.
Voorbeeld response 200 OK
JSON
{
"total_indexed_images": 112885,
"coverage": "Enschede (pilot)",
"last_updated": "2026-03-22T10:00:00.000Z"
} GET
/api/auth/me Haal je accountgegevens en huidig verbruik op.
Headers
Authorization | vereist | Bearer <auth_token> |
Voorbeeld response 200 OK
JSON
{
"user": {
"id": 1,
"email": "naam@voorbeeld.nl",
"name": "Jan de Vries",
"plan": "pro",
"apiKey": "sk_geopin_abc123...",
"usage": 42
}
} # Codevoorbeelden
Python
Python
import requests
API_KEY = "sk_geopin_jouw_sleutel"
with open("foto.jpg", "rb") as f:
resp = requests.post(
"https://geopin.nl/api/geolocate",
headers={"X-API-Key": API_KEY},
files={"image": f},
)
data = resp.json()
loc = data["location"]
print(f"Locatie: {loc['lat']}, {loc['lon']}")
print(f"Betrouwbaarheid: {loc['confidence']:.1%}") JavaScript / Node.js
JavaScript
const form = new FormData();
form.append("image", fileInput.files[0]);
const res = await fetch("https://geopin.nl/api/geolocate", {
method: "POST",
headers: { "X-API-Key": "sk_geopin_jouw_sleutel" },
body: form,
});
const { location } = await res.json();
console.log(`Locatie: ${location.lat}, ${location.lon}`); # Responsevelden
| Veld | Type | Beschrijving |
|---|---|---|
location.lat | float | Breedtegraad (WGS84) |
location.lon | float | Lengtegraad (WGS84) |
location.confidence | float | Betrouwbaarheidsscore (0–1) |
location.heading | float | Geschatte kijkrichting in graden (0–360) |
pano_id | string | ID van het gematchte panorama |
server_time | float | Verwerkingstijd in seconden |
search_id | string | Uniek ID van deze zoekopdracht |