1Créer une clé API

Inscris-toi gratuitement et récupère ta clé depuis le dashboard. Le tier gratuit inclut 50 000 chargements de carte par mois, gratuit pour toujours, sans carte bancaire requise. Aucun email de vente, aucun appel de démo à réserver.

2Authentification

Chaque requête est authentifiée par un paramètre key ajouté à l'URL. Pas de header custom, pas de signature à calculer :

GEThttps://tiles.tile.cat/styles/default.json?key=TA_CLE

Une clé peut être restreinte à une ou plusieurs origines (ton domaine, ton app mobile) depuis le dashboard — tu peux donc l'exposer côté client sans risque qu'elle soit réutilisée ailleurs. Une clé sans restriction ne devrait jamais être commitée dans un dépôt public.

3Référence de l'API

Toutes les routes acceptent le paramètre key et renvoient du JSON, du MVT (Mapbox Vector Tile) ou du PNG selon l'endpoint. Base URL : https://tiles.tile.cat

Facturation : TileCat facture au chargement de carte, pas à la requête individuelle. Charger un style compte pour un chargement ; toutes les tuiles, sprites et polices qui suivent pendant la vie de cette carte ne sont pas comptés à part — que ta carte affiche 20 tuiles ou 200 selon le zoom.

Styles

Renvoie un document de style compatible spec MapLibre/Mapbox GL, prêt à passer directement en style à ta carte.

GET/styles/{style}.json?key=TA_CLE

{style} vaut default ou dark (le pendant sombre du style par défaut, pensé pour un site ou une app en dark mode).

Tuiles vectorielles

Les tuiles brutes référencées par les styles ci-dessus. Utile si tu construis ton propre style plutôt que d'utiliser un des nôtres.

GET/data/planet/{z}/{x}/{y}.pbf?key=TA_CLE

Sprites & polices

Référencés automatiquement par le JSON de style — tu n'as normalement pas besoin de les appeler toi-même.

GET/sprites/{style}/sprite.json?key=TA_CLE
GET/fonts/{fontstack}/{range}.pbf?key=TA_CLE

4Intégration MapLibre GL JS

Installe la librairie puis initialise la carte avec ta clé.

// npm install maplibre-gl
import maplibregl from 'maplibre-gl';

new maplibregl.Map({
  container: 'map',
  style: 'https://tiles.tile.cat/styles/default.json?key=YOUR_KEY',
  center: [2.3522, 48.8566],
  zoom: 11
});

5Intégration Leaflet

Leaflet ne parle pas vecteur nativement : passe par le plugin @maplibre/maplibre-gl-leaflet, qui affiche un style TileCat (donc vectoriel) directement dans une carte Leaflet.

// npm install leaflet maplibre-gl @maplibre/maplibre-gl-leaflet
const map = L.map('map').setView([48.8566, 2.3522], 11);

L.maplibreGL({
  style: 'https://tiles.tile.cat/styles/default.json?key=YOUR_KEY',
}).addTo(map);

6Intégration sans code

Aucun JavaScript à écrire : une seule balise <script> suffit. Elle crée elle-même l'emplacement de la carte juste après elle dans la page, et charge MapLibre GL JS toute seule si besoin.

<script src="https://tile.cat/embed.js"
  data-key="YOUR_KEY"
  data-lat="48.8566"
  data-lng="2.3522"
  data-zoom="11"
  data-height="400px"
></script>
AttributDescription
data-keyTa clé API (obligatoire)
data-lat / data-lng / data-zoomCentre et zoom initial de la carte
data-styledefault ou dark (défaut : default)
data-heightHauteur du conteneur créé (défaut : 400px)
data-targetSélecteur CSS d'un élément existant à utiliser plutôt que d'en créer un nouveau

7Quotas & erreurs

Chaque réponse porte deux headers pour suivre ta consommation en temps réel, sans avoir à retourner sur le dashboard :

HeaderDescription
X-TileCat-Quota-LimitQuota mensuel total de ton plan
X-TileCat-Quota-RemainingChargements restants avant la fin du mois

Plans et limites :

PlanQuota mensuelComportement au-delà
Gratuit50 000429 jusqu'au mois suivant
Croissance1 000 000429, upgrade en un clic depuis le dashboard
EntrepriseNégociéSLA sur mesure, pas de coupure surprise

Codes d'erreur :

CodeSignification
400Paramètre invalide (zoom, coordonnées de tuile…)
401Clé key manquante ou invalide
403Clé valide mais domaine/origine non autorisé
404Style ou tuile introuvable à ce niveau de zoom
429Quota mensuel du plan atteint

Une réponse 429 signifie que le quota mensuel du tier gratuit est atteint. Passe au plan Croissance depuis le dashboard pour lever la limite, sans interruption de service.