GET /v1/isochrone
Vue d'ensemble
Une isochrone est la zone atteignable depuis un point dans un budget temps donné : « tout ce que je peux atteindre en 15 minutes à vélo ». La réponse est une FeatureCollection GeoJSON prête à superposer sur une carte MapLibre ou Leaflet. Usages typiques : zones de livraison, analyse de zone de chalandise pour des magasins ou agences, recherche immobilière par temps de trajet.
Coût : 10 crédits par requête. Disponibilité : à partir du plan Startup. Le budget temps maximal dépend de votre plan : 30 minutes en Startup, 60 en Growth, 120 en Pro.
Requête
GET https://api.geocodeme.net/v1/isochrone
Header requis : X-Api-Key: gm_YOUR_API_KEY
Paramètres
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
point | string | Oui | aucun | Point d'origine au format lon,lat (par ex. 2.3522,48.8566) |
minutes | integer | Oui | aucun | Budget temps en minutes (1 à 120, plafonné selon votre plan) |
profile | string | Non | car | Profil de véhicule : car, bike, foot, truck ou moto (selon le plan : bike/foot Startup+, truck/moto Growth+) |
use_tolls | boolean | Non | aucun | Privilégier (true) ou éviter (false) les routes à péage. Profils motorisés uniquement |
truck_height | float | Non | aucun | Hauteur du véhicule en mètres (0 à 10). Nécessite profile=truck |
truck_width | float | Non | aucun | Largeur du véhicule en mètres (0 à 5). Nécessite profile=truck |
truck_weight | float | Non | aucun | Poids du véhicule en tonnes (0 à 100). Nécessite profile=truck |
Les paramètres truck_* nécessitent profile=truck, et use_tolls ne peut pas être combiné avec bike ou foot ; sinon l'API renvoie un 400 INVALID_PARAMETER. Les requêtes rejetées par ces validations ne sont jamais facturées en crédits.
Exemples de code
- cURL
- Python
- JavaScript
curl -H "X-Api-Key: gm_YOUR_API_KEY" \
"https://api.geocodeme.net/v1/isochrone?point=2.3522,48.8566&minutes=15&profile=bike"
import os
import requests
api_key = os.environ["GEOCODEME_API_KEY"]
response = requests.get(
"https://api.geocodeme.net/v1/isochrone",
params={"point": "2.3522,48.8566", "minutes": 15, "profile": "bike"},
headers={"X-Api-Key": api_key},
)
response.raise_for_status()
data = response.json()
feature = data["isochrones"]["features"][0]
print(f"Contour : {feature['properties']['contour']} min")
print(f"Points du polygone : {len(feature['geometry']['coordinates'][0])}")
const apiKey = process.env.GEOCODEME_API_KEY;
const response = await fetch(
"https://api.geocodeme.net/v1/isochrone?point=2.3522,48.8566&minutes=15&profile=bike",
{ headers: { "X-Api-Key": apiKey } }
);
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
const data = await response.json();
// La FeatureCollection se branche directement sur MapLibre :
// map.addSource("isochrone", { type: "geojson", data: data.isochrones });
console.log(data.isochrones.features[0].properties);
Réponse
Toutes les réponses incluent les headers de limitation de débit (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Monthly-Remaining, etc.).
isochrones est une FeatureCollection GeoJSON standard avec une feature Polygon par contour (anneau du polygone raccourci pour la lisibilité) :
{
"isochrones": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[2.3901, 48.8566],
[2.3760, 48.8721],
[2.3522, 48.8790],
[2.3280, 48.8722],
[2.3138, 48.8566],
[2.3279, 48.8410],
[2.3522, 48.8341],
[2.3764, 48.8409],
[2.3901, 48.8566]
]
]
},
"properties": {
"contour": 15,
"metric": "time",
"color": "#bf4040",
"fill": "#bf4040",
"fillColor": "#bf4040",
"opacity": 0.33,
"fillOpacity": 0.33,
"fill-opacity": 0.33
}
}
]
},
"attribution": "Route data (c) OpenStreetMap contributors",
"meta": {
"took_ms": 210,
"cache_hit": false
}
}
Schéma
| Champ | Type | Description |
|---|---|---|
isochrones | object | FeatureCollection GeoJSON, une feature Polygon par contour |
isochrones.features[].geometry | object | Polygon GeoJSON (coordonnées en ordre [longitude, latitude]) |
isochrones.features[].properties.contour | integer | Budget temps du contour en minutes |
isochrones.features[].properties.metric | string | Toujours "time" |
isochrones.features[].properties (autres clés) | divers | Indications d'affichage émises par le moteur de routage (color, fill, opacity, ...), utilisables comme style de carte par défaut |
attribution | string | Toujours "Route data (c) OpenStreetMap contributors" |
meta.took_ms | integer | Temps de traitement serveur en millisecondes |
meta.cache_hit | boolean | Indique si la réponse a été servie depuis le cache |
Réponses d'erreur
Budget temps au-dessus du plafond de votre plan
{
"error": {
"code": "PLAN_UPGRADE_REQUIRED",
"message": "Your plan allows up to 30 minutes. Upgrade to raise the limit.",
"field": "minutes",
"upgrade_url": "https://geocodeme.net/dashboard/billing"
}
}
Endpoint non inclus dans votre plan (Free)
{
"error": {
"code": "PLAN_UPGRADE_REQUIRED",
"message": "This feature is not included in your plan. Upgrade to unlock it.",
"field": "minutes",
"upgrade_url": "https://geocodeme.net/dashboard/billing"
}
}
Coordonnée mal formée
{
"error": {
"code": "INVALID_PARAMETER",
"message": "'point' must be 'lon,lat' (e.g. 2.3522,48.8566)",
"field": "point"
}
}
Tous les endpoints sont également soumis aux erreurs INVALID_API_KEY (401) et RATE_LIMIT_EXCEEDED / QUOTA_EXCEEDED (429). Consultez Codes d'erreur pour la référence complète.