Aller au contenu

Référence de l'API

Une référence des API de données de la passerelle. Les pages précédentes expliquent chaque service; celle-ci est le tableau que vous gardez ouvert pendant que vous écrivez l'appel.

Les cartes, le catalogue, le géocodage, les itinéraires et BYOD ont une entrée complète ci-dessous avec chaque paramètre. Les services Lieux, Transport en commun, Altitude, Événements routiers et l'expansion des itinéraires, figurent avec leur rôle et leurs paramètres dans Autres API et sont documentés en entier sur leurs propres pages.

La version lisible par machine est /openapi.json (OpenAPI 3.1), repérable depuis /.well-known/api-catalog. Générez un client à partir de là plutôt que de recopier cette page.

Conventions

La plupart des routes sont un GET avec des paramètres de requête et sans corps. Les exceptions sont POST /byod, DELETE /byod/{id}, POST /geocode/batch, POST /matrix, POST /match, POST /optimized-route, POST /optimize et ses chemins GMPRO, POST /feedback, POST /places/{id}/feedback, ainsi que les formes avec corps de POST /route et POST /isochrone, qui n'existent que parce que avoid_areas est un polygone et qu'un polygone ne tient pas dans une chaîne de requête. Les réponses sont en JSON, sauf les tuiles (octets Mapbox Vector Tile), le relief (WebP ou PNG), les glyphes et les sprites.

Les coordonnées sont longitude,latitude, dans cet ordre, en degrés WGS84. Les cadres englobants sont minlng,minlat,maxlng,maxlat.

Un point s'écrit near=lng,lat. Cette écriture fonctionne sur /places/nearby, /geocode/nearby, /transit/stops, /incidents, /elevation, /geocode/reverse et /isochrone, ainsi que dans le corps de POST /isochrone. /route nomme ses deux extrémités from et to, chacune une paire lng,lat. Dans un corps JSON, les paires sont des tableaux : POST /isochrone utilise donc "near": [lng, lat].

Deux exceptions HTTP ont des noms distincts : /timezone prend lat et lon, et /identify prend at=lng,lat. Le SDK accepte toujours des paires [lng, lat] pour les deux.

L'authentification est une clé à l'un de quatre endroits, vérifiés dans cet ordre :

FormeQuand
Authorization: Bearer um_live_…Appels côté serveur. La forme normale.
X-API-Key: um_live_…Clients qui réservent Authorization à autre chose.
X-Goog-Api-Key: um_live_…Clients REST de Google, comme un client Route Optimization dirigé vers les chemins GMPRO ci-dessous.
?key=um_live_…Utilisé dans les URL générées des styles pour les tuiles et les ressources. Ces points de terminaison acceptent aussi les deux formes par en-tête. Exclu des clés du cache partagé des tuiles et des ressources.

Sur les chemins de données protégés, l'authentification précède le routage : une requête non authentifiée retourne 401, y compris un chemin qui n'existe pas. Les documents de découverte et /coverage.json sont des exceptions publiques. Voir Authentification.

Les modules restreignent les couches et grammaires sectorielles : legal-land, energy, agriculture, remote, mining. Une clé sans le module requis reçoit 403 avec le module nommé. Voir Couches pour en acheter un.

Cartes

GET /styles/{style}.json

Un document de style MapLibre. L'unique URL dont la plupart des applications ont besoin.

ParamètreOùNotes
stylechemin, obligatoirebase, muted, outdoor, blueprint, blush, orchid, canopy, lagoon, tropic, sunset, bold, pastel, atlas, swiss, winter. Un suffixe -light ou -dark fixe le mode.
moderequêtelight ou dark. Une valeur inconnue sert le mode clair, y compris lorsque le chemin nommait le mode sombre.
langrequêteSous-étiquette primaire BCP 47. Un tag complet utilise son sous-tag principal, donc fr-CA donne fr. Les noms natifs prennent en charge ja, ko, zh-Hans et zh-Hant. Les tags chinois régionaux choisissent leur écriture (zh-TW → zh-Hant) ; une écriture explicite est prioritaire. Un code non pris en charge donne en et n'est pas un 400. Sans lang, la passerelle lit Accept-Language, puis en.
themerequêteUn code ut1. de unmap.dev/create. Un thème remplace la cartographie et l'emporte donc sur le style du chemin.
overlaysrequêteIdentifiants du catalogue séparés par des virgules, ou byod:<id>. L'emporte sur profile.
terrainrequêteon dessine le style sur un terrain en 3D (ajoute unmap_terrain et une clé terrain); off ou l'absence le laisse plat. Toute autre valeur donne un 400; sans terrain configuré, un 503.
exaggerationrequêteAmplification du relief pour terrain=on, de 0.1 à 5, défaut 1. Un 400 sans terrain=on.
profilerequêteenergy, agriculture, remote ou mining. Un préréglage de composition, pas un style.

Retourne application/json : un style complet avec sources, layers, glyphs, sprite et metadata. Cache-Control: private, no-store : le document contient la clé d'API et le modèle d'URL des tuiles de ce déploiement.

Aussi 400 invalid_theme pour un code de thème qui ne se décode pas, avec un tableau detail · 400 bad_request pour un identifiant de superposition ou un profil inconnu · 404 le nom du style ne résout pas · 503 texte brut basemap release is misconfigured lorsque la publication active n'est pas un identifiant à huit chiffres ou que son objet manque, avec Cache-Control: private, no-store. L'archive précédente n'est pas servie.

GET /tiles/{z}/{x}/{y}

Le fond de carte mondial, en octets Mapbox Vector Tile. Lu par plage depuis le stockage objet, jamais par le calcul, ce qui en fait la chose la plus rapide ici.

z, x, y sont des entiers de chemin. ?key= est obligatoire.

Retourne application/x-protobuf.

Aussi 204 la requête est dans l'archive mais il n'y a pas de tuile là. Cette réponse n'est pas écrite dans le cache du Worker · 400 texte brut invalid tile coordinates pour un non-entier, ou pour une colonne hors de 0 .. 2^z-1 · 503 texte brut basemap release is misconfigured lorsque la publication active n'est pas un identifiant à huit chiffres ou que son objet manque, Cache-Control: private, no-store, et l'archive précédente n'est pas servie.

GET /tiles/{release}/{z}/{x}/{y}

La même tuile, épinglée à une publication de fond de carte à 8 chiffres. Le chemin sans date suit l'archive active. Par défaut, il s'agit du planet du 22 septembre 2026. Un identifiant à huit chiffres qui n'a jamais été copié est un 404 en texte brut basemap release not found avec Cache-Control: private, no-store. Un identifiant qui n'a pas huit chiffres a le même corps sans cet en-tête de cache. Si l'archive active a été basculée vers une publication absente du serveur, le style et le chemin sans date répondent 503 basemap release is misconfigured, eux aussi private, no-store, et ne servent pas l'extrait du Canada. Réessayer ne le rétablit pas.

Retourne application/x-protobuf. Aussi 204 pas de tuile, non écrite dans le cache du Worker · 400 texte brut invalid tile coordinates pour un non-entier, ou pour une colonne hors de 0 .. 2^z-1.

GET /terrain/{version}/{z}/{x}/{y}

Relief Terrarium/512 à z0–12. /terrain/6/{z}/{x}/{y}.webp sert Mapterhorn mondial. /terrain/4/{z}/{x}/{y}.png sert le MNEMR canadien. /coverage.json indique la publication active. Les URL versionnées identifient leur propre archive; une publication inconnue ou un suffixe incompatible donne 404 JSON not_found. XYZ hors grille donne 400 texte brut invalid tile coordinates.

Retourne image/webp ou image/png, selon la représentation. Aussi 204 sans données, non mis en cache · 404 terrain archive not configured · 503 publication active indisponible, sans repli automatique · 502 erreur de lecture de tuile.

GET /contours/{version}/{z}/{x}/{y}

Courbes canadiennes du MNEMR-30, de z9 à z13, sans ligne de 0 m. La version est actuellement 4, en cache public, max-age=86400. Une version qui n'est pas un petit entier est un 400 en texte brut invalid tile coordinates.

Retourne application/x-protobuf. Aussi 204 pas de tuile dans une archive configurée, non écrite dans le cache du Worker · 404 JSON not_found, contour archive not configured.

GET /glyphs/{version}/{fontstack}/{range}.pbf

Glyphes de police, par exemple Noto Sans Regular/0-255.pbf. Inclut les fontes qui dessinent les syllabiques. La version est actuellement 2. Une réponse réussie est en cache public, max-age=31536000, immutable. Non facturé.

Retourne application/x-protobuf. Aussi 400 en texte brut invalid fontstack, invalid range, ou invalid asset version · 404 en texte brut not found quand l'objet est absent, sans cet en-tête de cache.

GET /sprite/{version}/{file}

Feuille de sprites, .json ou .png, avec variantes @2x. Les feuilles sont light, dark, muted-light et muted-dark. La version est actuellement 2, en cache public, max-age=31536000, immutable. Non facturé.

Retourne application/json ou image/png. Aussi 400 en texte brut invalid sprite, ou invalid asset version · 404 en texte brut not found, sans cet en-tête de cache.

Catalogue et données

GET /layers

Le catalogue complet. Les clés d'objets de stockage ne sont jamais exposées; une couverture incomplète l'est toujours.

Retourne application/json, un tableau de :

{
  "id": "energy.wells",
  "display_name": { "en": "Wells", "fr": "Puits" },
  "namespace": "energy",
  "source": "…",
  "source_url": "…",
  "licence": "…",
  "attribution": "…",
  "coverage": "…",
  "resolution": "…",
  "updated_at": "2026-09-10",
  "source_updated_at": "…",
  "ingestion_version": "1",
  "schema_version": "1",
  "freshness_policy": "…",
  "known_gaps": "…",
  "addon": "energy",
  "archives": [{ "id": "default", "minzoom": 4, "maxzoom": 12 }],
  "source_layer": "wells"
}

Une archive contenant plus d'une couche vectorielle porte aussi source_layers, la liste complète. Les grilles d'arpentage s'en servent : survey.dls empile seize niveaux dans un fichier et survey.nts quatre, chacun avec sa plage de zoom, pour qu'un client ajoute exactement le niveau voulu. Voir Couches.

Lisez known_gaps avant de promettre une couverture à un utilisateur. C'est rédigé pour être exact plutôt que flatteur : plusieurs couches ne couvrent qu'une province.

GET /layers/{id}

Une fiche du catalogue, même forme. Aussi 404 JSON not_found unknown layer.

GET /layers/{id}/{z}/{x}/{y}

Tuiles de superposition pour une couche. ?key= est obligatoire.

Retourne application/x-protobuf.

Aussi 204 hors de la plage de zoom, ou pas de tuile. Cette réponse n'est pas écrite dans le cache du Worker · 403 module requis · 404 JSON not_found : unknown layer quand l'identifiant n'est pas au catalogue, ou layer archive not configured quand l'objet n'est pas dans le stockage.

GET /identify

Quelles entités du catalogue contiennent un point. C'est le gestionnaire de clic d'une carte, et ce n'est pas du géocodage inverse : /geocode/reverse trouve les lieux nommés les plus proches, identify retourne les polygones qui contiennent le point.

ParamètreOùNotes
atrequête, obligatoirelng,lat.
layersrequêteIdentifiants identifiables, séparés par des virgules. municipalities par défaut, qui est du noyau : une clé sans module fonctionne quand même.
geometryrequêtetrue pour inclure le polygone de chaque résultat, si la fiche en a un.

Retourne application/json :

{
  "at": [-114.0719, 51.0447],
  "results": [
    { "layer": "municipalities", "id": "ab:calgary", "name": "Calgary", "province": "AB" }
  ]
}

Un résultat porte les champs de sa couche : unit et survey_system sur les cellules d'arpentage, uwi, licence, operator et status sur les fiches énergie, pid sur les parcelles, geometry si demandé.

Aussi 400 point ou couche invalide · 403 module requis · 502 / 503 le service est injoignable ou en train de démarrer.

GET /data/query

Toutes les entités d'une couche dans un cadre englobant. Une couche par appel, par choix.

ParamètreOùNotes
layerrequête, obligatoireUn identifiant interrogeable du catalogue.
bboxrequête, obligatoireminlng,minlat,maxlng,maxlat. Un filtre strict : rien en dehors n'est jamais retourné.
limitrequête1 à 50, 50 par défaut. Une valeur non numérique retombe sur la valeur par défaut plutôt que d'échouer.
geometryrequêtetrue pour inclure la géométrie.

Retourne application/json : { "layer": …, "bbox": [4], "results": [ … ] }, les résultats ayant la même forme que pour /identify.

Aussi 400 couche inconnue ou bbox mal formée · 403 module requis · 501 la couche existe mais n'est offerte qu'en tuiles, avec les identifiants interrogeables nommés dans le message.

Géocodage

Une seule URL lit la forme de votre requête et l'achemine. Vous ne choisissez pas de service, et profile= n'a aucun effet ici : il compose des cartes, pas des recherches.

Ressemble àExempleExige
Adresse civique ou lieuCalgarynoyau
Terres légales, ARD ou SNRCNW-25-24-1-W5legal-land
Identifiant de puits00/07-10-013-09W4/0energy
PID de la C.-B.010-867-813agriculture
Installation par son nomKaybob South avec layers=facilityenergy
Route rurale ou poste restanteRR 2 Okotoksnoyau

GET /geocode/search

ParamètreOùNotes
qrequête, obligatoireLe texte recherché.
langrequêteDans quelle langue rendre name, en par défaut. Chaque résultat porte aussi toutes ses langues sous names.
limitrequête1 à 50, 10 par défaut.
bboxrequêteUn filtre strict, pas une pondération.
layersrequêteTypes de résultats civiques admis (address, street, locality, region, poi), ou well / facility pour chercher dans l'énergie. Les deux ensembles ne se mélangent pas, et une valeur inconnue donne un 400.
focusrequêtelng,lat. Préférence de proximité souple : elle réordonne, elle n'exclut pas.
regionrequêteProvince ou territoire, n'importe quelle graphie. Exclut les fiches d'une autre province; conserve celles qui n'en portent pas.
geometryrequêtetrue pour inclure le polygone d'arpentage.

Retourne application/json, un tableau de lieux :

[
  {
    "id": "…",
    "name": "Iqaluit",
    "layer": "locality",
    "lng": -68.5170,
    "lat": 63.7467,
    "score": 18.4,
    "names": { "en": "Iqaluit", "iu": "ᐃᖃᓗᐃᑦ" }
  }
]

Chaque résultat porte aussi source et source_id (le jeu de données d'où il provient), match_type (exact, partial, fallback, unknown), precision (point, street, locality, region, unknown) et, quand la correspondance n'est pas exacte, match_reasons. Voir métadonnées de résultat; la règle à retenir est qu'une rue ou une ville qui tient lieu d'adresse est toujours fallback, jamais exact.

Un résultat peut aussi porter distance (en mètres), category, address, legal_land, uwi, licence, operator, status, pid, bbox et geometry, selon ce qui a correspondu.

Aussi 400 q manquant, une valeur layers ou region inconnue, un focus mal formé, ou une requête faite de termes de livraison sans collectivité · 403 module requis pour les grammaires LSD, UWI ou PID.

Une analyse réussie sans fiche correspondante retourne []. Jamais un centroïde inventé, et jamais un repli silencieux sur le classement des adresses.

GET /geocode/structured

ParamètreOùNotes
addressrequêteLigne de rue : numéro civique et nom de rue.
cityrequêteNom de la municipalité.
regionrequêteProvince ou territoire, n'importe quelle graphie, normalisée en code.
postalcoderequêteAvec ou sans l'espace. Ce n'est pas une validation de distribution.
countryrequêteCA uniquement.
lang, limit, bbox, layers, focusrequêteComme pour la recherche.

Au moins un de address, city ou postalcode est requis. address et city récupèrent et classent; region et postalcode restreignent, en excluant les fiches qui les contredisent et en conservant celles qui n'en disent rien. Civique seulement : les grammaires de terre légale, de parcelle et d'énergie sont des formes de chaîne plein texte et ne sont pas détectées ici.

Retourne le même tableau de lieux que la recherche.

Aussi 400 aucun champ d'ancrage, une province inconnue, un code postal mal formé, un pays autre que CA, ou un address qui est un numéro civique sans nom de rue.

GET /geocode/autocomplete

Saisie assistée, même acheminement que la recherche. q obligatoire; lang en par défaut; limit 1 à 50, 8 par défaut. Retourne le même tableau.

GET /geocode/nearby

Lieux d'une catégorie autour d'un point.

ParamètreOùNotes
categoryrequête, obligatoireDe une à huit, séparées par des virgules. Un identifiant de taxonomie (health.pharmacy) ou un mot courant en français ou en anglais (pharmacie, pharmacy). Casse, accents et traits d'union ignorés.
nearrequêtelng,lat. Exactement un de near et bbox est requis.
bboxrequêteAncre au centre du cadre avec un rayon qui le couvre. « Dans les environs », pas un rectangle de découpe.
radiusrequêteMètres, 50 à 50000, 5000 par défaut. Un rayon explicite l'emporte sur celui déduit du bbox.
limitrequête1 à 50, 10 par défaut.
langrequêteen par défaut.

Retourne le même tableau, avec distance en mètres.

Aussi 400 une catégorie inconnue, nommée dans le message, les deux ou aucun de near et bbox, ou une longitude ou une latitude hors du WGS84 (bad_request) · 422 outside_coverage quand l'ancrage, ou le centre du bbox, est hors du Canada.

GET /geocode/reverse

Ce qui se trouve près d'une coordonnée, trié par distance géodésique réelle. near=lng,lat est obligatoire. lang en par défaut; limit 1 à 50, 5 par défaut.

Aussi 400 un near absent, ou une longitude ou une latitude hors du WGS84 (bad_request) · 422 outside_coverage quand la coordonnée est hors du Canada. Le corpus n'est pas interrogé. Un tableau vide signifie que le point est au Canada et que rien dans le corpus n'est proche.

POST /geocode/batch

Jusqu'à 100 recherches directes en une requête. Contrôles partagés seulement.

ParamètreOùNotes
queriescorps, obligatoireTableau de 1 à 100 chaînes, ordre conservé. Les entrées vides deviennent [] et ne sont pas facturées.
lang, limit, layers, focus, region, bboxcorpsComme pour la recherche.

Retourne un tableau de tableaux de lieux, aligné sur queries. L'index i est ce que GET /geocode/search retournerait pour cette chaîne. Chaque requête non vide compte pour un incrément geocode.

Aussi 400 queries manquant ou vide, ou contrôles partagés invalides · 413 plus de 100 requêtes · 429 allocation restante inférieure au nombre de requêtes non vides.

Voir Géocodage par lots et l'exemple.

Routage

GET /route

D'un point à un autre sur le graphe canadien.

ParamètreOùNotes
fromrequête, obligatoirelng,lat. Origine. /route et /isochrone utilisent chacun un paramètre par point.
torequête, obligatoirelng,lat.
moderequêteauto, car, bicycle, pedestrian, truck ou transit, auto par défaut. transit exige depart_at. car et auto sont le même profil. Toute autre valeur est un 400; rien ne retombe silencieusement.
depart_atrequêteInstant de départ ISO 8601, obligatoire pour mode=transit. Voir Routage de transport en commun pour la couverture.
use_highwaysrequête0 à 1, 0,5 par défaut. 0 évite autoroutes et voies rapides, 1 les privilégie. Modes motorisés seulement.
use_hillsrequête0 à 1. 0 évite les montées même si le trajet s'allonge, 1 y est indifférent. Omise, c'est la valeur par défaut de Valhalla qui s'applique, et elle varie selon le mode : 0,25 sur bicycle, 0,5 sur pedestrian. Vélo et marche seulement ; la conduite n'a aucun terme de pente.

Les paramètres de camion ne s'appliquent qu'avec mode=truck. En envoyer un sur un autre mode est un 400, pas un oubli silencieux.

ParamètreDéfautPlageUnité
height4,11jusqu'à 10mètres
width2,6jusqu'à 6mètres
length21,64jusqu'à 50mètres
weight21,77jusqu'à 100tonnes brutes
axle_load9,070 à 40tonnes par essieu
axle_count52 à 20essieux
hazmatfalsebooléenévite les routes qui l'interdisent
use_truck_route00 à 1privilégier les routes de camionnage

Retourne application/json : { "distanceMeters": 42731, "durationSeconds": 2184, "geometry": { … } }.

Aussi 400 mode inconnu, une option de camion sur un autre mode, ou une coordonnée hors du WGS84 (invalid_location) · 422 outside_coverage quand une extrémité est hors du Canada, no_route quand le graphe canadien ne peut pas relier ces deux points.

GET /isochrone

Plages de temps de trajet depuis un point, donné sous la forme near=lng,lat.

minutes est obligatoire : plages séparées par des virgules, fractions acceptées, au plus quatre plages d'au plus 120 minutes chacune. Mêmes mode, depart_at, use_highways, use_hills et paramètres de camion que /route; mode=transit exige depart_at.

Retourne application/geo+json, une FeatureCollection avec un polygone par plage. Une plage en transport en commun peut être un MultiPolygon.

Aussi 400 plus de quatre plages, une plage de plus de 120 minutes, ou une coordonnée hors du WGS84 (invalid_location), avec la règle nommée. 422 outside_coverage quand le centre est hors du Canada, ou en mode=transit quand aucun service prévu ne le dessert. Un centre canadien que le moteur refuse donne un 502.

Vos propres données

Dix superpositions par compte, 5 Mo chacune. Voir Vos propres données.

RouteFait
POST /byodTéléverse application/geo+json, application/vnd.pmtiles, ou multipart/form-data avec un champ file. ?name= fixe le nom affiché quand le corps n'est pas multipart. Retourne 201.
GET /byodVos superpositions et le quota courant.
GET /byod/{id}Les métadonnées d'une superposition.
GET /byod/{id}/dataLes octets stockés.
GET /byod/{id}/{z}/{x}/{y}Tuiles, pour un téléversement PMTiles. Exige ?key=.
DELETE /byod/{id}La supprime. 204, sans corps.

Une superposition est { id, name, kind, bytes, createdAt, url, overlay }, où overlay est le jeton byod:<id> que vous passez à ?overlays=.

Aussi 400 corps manquant, mauvais type, plus de 5 Mo, ou un onzième fichier · 404 identifiant inconnu, ou appartenant à un autre compte.

Supprimer une superposition qu'un style nomme encore laisse ce ?overlays=byod:<id> en 404 : mettez le style à jour d'abord.

Autres API

Le reste de la surface, une ligne chacun. Chaque entrée pointe vers la page qui la documente correctement.

Lieux · page complète

RouteParamètresRôle
GET /places/searchq (obligatoire), limit 1 à 50 (défaut 10), lang, bboxTrouver des lieux par nom. Retourne { data, meta }.
GET /places/nearbycategory (obligatoire), near=lng,lat ou bbox, radius 50 à 50000 m (défaut 5000), limit 1 à 50 (défaut 10), langLieux d'une catégorie près d'un point. Porte distance en mètres.
GET /places/{id}id dans le chemin (um:place:…), lang optionnelUn lieu. Un identifiant mal formé donne un 404 not_found, pas un 400.

Un q absent donne un 400 { "error": "q is required", "code": "bad_request" }. Un coin de bbox hors du WGS84 donne un 400 bad_request. En recherche, un cadre hors du Canada reste un filtre. Pour nearby, un ancrage hors du Canada, ou un bbox dont le centre est hors du Canada, donne un 422 outside_coverage.

Transport en commun · page complète

RouteParamètresRôle
GET /transit/agenciesaucunToutes les sociétés de transport du jeu de flux déployé.
GET /transit/stopsnear=lng,lat (obligatoire), radius 50 à 10000 m (défaut 1000), limit 1 à 100 (défaut 20)Arrêts près d'un point, du plus proche au plus loin.
GET /transit/stops/{id}id dans le cheminUn arrêt.
GET /transit/stops/{id}/departuresat (instant ISO 8601 avec Z ou un décalage, défaut maintenant), window 1 à 240 minutes (défaut 60), limit 1 à 200 (défaut 50)Départs prévus à l'horaire. Horaire, pas temps réel.
GET /transit/routes/{id}id dans le cheminUne ligne.

Ski

Derrière le module Ski : une clé payante sans ce module reçoit 403 addon_required, et une clé du forfait dev reçoit dev_only depuis une origine de production ou usage_limit_reached une fois ses appels premium du mois épuisés. Le module ne peut pas encore être acheté; d'ici là, seules les clés de développement et internes y accèdent.

RouteParamètresRôle
GET /ski/areasprovince (code à deux lettres), activity (downhill ou nordic), bbox, q (nom)Domaines skiables canadiens tirés d'OpenStreetMap, triés par identifiant. Renvoie { data, meta }; meta.data_version nomme la version et meta.attribution doit être affichée (ODbL).
GET /ski/areas/{id}id dans le cheminUn domaine. Un identifiant inconnu donne 404 not_found.
GET /ski/areas/{id}/lifts-3did dans le cheminLes remontées du domaine avec leurs hauteurs précalculées pour les moteurs 3D : data.lifts[] avec stations, pylons et un cable qui fléchit, chaque point [lng, lat, z] en mètres au-dessus du niveau de la mer, tiré de la version du relief nommée par data.terrain_release. Un domaine sans remontée donne une liste vide; un identifiant inconnu donne 404 not_found.

Altitude · page complète

RouteParamètresRôle
GET /elevationnear=lng,lat, ou points : jusqu'à 1000 paires lng,lat séparées par une barre verticale, sous réserve de la limite URL de 16 KoAltitude du MNE. Retourne { elevations, units, datum, resolution, meta }. La version mondiale mélange modèles de terrain et de surface et datums; ce n'est pas un MNT uniforme du sol nu. null signifie absence de données ou coordonnée hors de Web Mercator. Zéro est une valeur et peut représenter le remplissage océanique. Un appel quel que soit le nombre de points. Archive non configurée : 404; version sélectionnée indisponible : 503, sans repli.

Fuseau horaire · page complète

RouteParamètresRôle
GET /timezonelat, lon, at optionnel (ISO 8601)Fuseau IANA et décalage UTC. Un appel. Les points en mer sont des zones Etc/GMT.
GET /timezone/metaaucunVersions IANA et des limites actives. Authentifié, non facturé.

Événements routiers · page complète

RouteParamètresRôle
GET /incidentsjurisdiction, bbox, near=lng,lat, radius jusqu'à 500000 m, type, severity, status, updated_since, limit 1 à 500 (défaut 100)Tous les événements routiers en cours. La Colombie-Britannique et l'Alberta aujourd'hui.
GET /closuresidentiquesLe sous-ensemble où une route est réellement fermée.
GET /road-conditionsidentiquesLe sous-ensemble portant un état de la chaussée.

Expansion des itinéraires · page complète

RouteCorpsRôle
POST /matrixorigins: [[lng,lat]], destinations: [[lng,lat]], plus les options de coût partagéesDurées et distances pour chaque paire. Une paire que le moteur n'a pas pu relier donne une cellule null, et non l'échec de la requête.
POST /matchcoordinates: [[lng,lat]]Accrocher une trace GPS au réseau routier. Retourne un itinéraire.
POST /optimized-routestops: [[lng,lat]]L'ordre de visite des arrêts, plus l'itinéraire. Le premier et le dernier sont fixes.
POST /routefrom: [lng,lat], to: [lng,lat], avoid_areasLe GET ci-dessus avec un corps, pour avoid_areas. Même validation, mêmes réponses.
POST /isochronenear: [lng,lat], minutes: [5,10,15], mode, depart_at, avoid_areasLe GET ci-dessus avec un corps.
GET /routing/statusaucunFraîcheur du graphe et âge des flux de restrictions. Répond 200 même quand l'itinéraire est indisponible. Jamais compté.

Optimize · page complète

Planification de tournées utilisant les formats OptimizeToursRequest et OptimizeToursResponse de Google Route Optimization, pour les champs pris en charge. Sur ces chemins, les erreurs suivent la forme de Google, { "error": { "code", "message", "status", "details" } }, avec le code de la passerelle à côté. Des plafonds par forfait limitent les envois, les véhicules, les lieux, le timeout de la résolution (ramené au plafond, avec un en-tête Warning) et les résolutions simultanées; les avertissements passent par l'en-tête X-Unmap-Optimize-Warnings.

RouteCorpsRôle
POST /optimizemodel: { shipments, vehicles }, timeout, solvingModeAffecte les envois aux véhicules et ordonne chaque tournée. solvingMode: VALIDATE_ONLY ne fait que valider. Ce n'est pas /optimized-route, qui ordonne les arrêts d'un seul véhicule.
POST /v1/projects/{project}:optimizeToursidentiqueChemin REST compatible avec Google. Remplacez l'hôte et les identifiants, et vérifiez les champs pris en charge. {project} est ignoré.
POST /v1/projects/{project}/locations/{location}:optimizeToursidentiqueLe même, avec un emplacement, lui aussi ignoré.
POST /projects/{project}:optimizeToursidentiqueLe chemin GMPRO sans /v1.
POST /projects/{project}/locations/{location}:optimizeToursidentiqueLe même, avec un emplacement.

Signalements · page complète

RouteRôle
POST /feedbackSignaler une donnée erronée. Jamais compté.
POST /places/{id}/feedbackLe même signalement, rattaché à un lieu.

Codes de statut

CodeSignifie
200Succès.
201Créé, sur POST /byod.
204Pas une erreur. Une tuile dans l'archive qui est servie, sans donnée à cette case. Une archive de relief ou de courbes manquante est un 404, pour qu'une mauvaise configuration ne se lise pas comme un terrain vide. Une publication de fond de carte absente est un 503 en texte brut, pas un 204.
400Paramètre invalide, code bad_request sauf si un code plus précis s'applique. Une longitude ou une latitude hors du WGS84 est bad_request en géocodage et pour les lieux, et invalid_location en itinéraire. Le message nomme la règle.
401Pas de clé, ou une clé inconnue ou désactivée. Une clé absente sur un chemin inconnu a aussi ce statut, l'authentification précédant le routage. Avec une clé, ce chemin est un 404 not_found.
413Plus de 100 requêtes sur POST /geocode/batch, ou un corps de plus de 4 Mio sur Optimize.
403La clé est valide mais n'a pas le module requis. Le corps le nomme.
404JSON not_found : style, couche ou lieu inconnu; layer archive not configured quand l'objet d'une couche du catalogue n'est pas dans le stockage; archive de terrain ou de courbes de niveau non configurée; ou chemin que cette passerelle ne sert pas. Un chemin sans correspondance sous /tiles, /terrain, /contours, /layers, /glyphs ou /sprite reste du texte brut.
422outside_coverage quand un ancrage est hors du Canada sur /route, /isochrone, /matrix, /match, /optimized-route, ou une recherche inverse ou à proximité. no_route quand une requête canadienne n'a pas de chemin. Optimize utilise 400 FAILED_PRECONDITION pour les envois obligatoires injoignables.
429Limite de débit atteinte. Lisez Retry-After.
501/data/query seulement : la couche existe mais n'est offerte qu'en tuiles. Le message liste les identifiants interrogeables.
502Un échec en amont. Le code est upstream_error : un point de terminaison d'itinéraire répond { "error": "route failed", "code": "upstream_error" }, et sur /elevation une tuile de relief qui ne se décode pas est { "error": "elevation sample failed", "code": "upstream_error" }.
503Un service est injoignable ou en train de démarrer. Réessayez le 503 JSON qui porte Retry-After. Le 503 en texte brut basemap release is misconfigured n'en a pas : l'archive précédente n'est pas servie, et une nouvelle requête ne la rétablit pas.
504Les trajets routiers ou la réponse du solveur d'Optimize ont dépassé leur temps alloué. Voir les erreurs d'Optimize.

La plupart des corps d'erreur JSON sont { "error": "…", "code": "…" }, avec addon et capability le cas échéant. Optimize utilise l'objet error structuré décrit ci-dessus. Une requête mal formée de tuile, de relief, de courbes, de glyphe ou de sprite répond en texte brut. Une archive de relief ou de courbes non configurée est un JSON not_found. /elevation utilise terrain archive not configured dans ce cas. Voir Erreurs pour la liste complète.

Prochaines étapes

  • Couches pour le catalogue et l'achat d'un module.
  • Erreurs pour la signification de chaque code.
  • MCP pour atteindre les mêmes capacités depuis un agent IA.