Cette API expose gratuitement les références géolocalisées du répertoire du
Pastis Mu' : pastis artisanaux, distilleries, communes,
descriptions et lien vers chaque fiche. Elle est en lecture seule, servie en
HTTPS, avec CORS ouvert (Access-Control-Allow-Origin: *) :
vous pouvez l'appeler directement depuis un navigateur, depuis n'importe quel domaine, y compris
github.io ou un fichier local (origine null). Les données évoluent au fil
des ajouts à la collection et sont mises en cache 5 minutes (Cache-Control: public, max-age=300).
1. GET /api/v1/pastis — les points, en GeoJSON
URL complète : https://lepastismu.com/api/v1/pastis
| Paramètre | Rôle | Exemple |
|---|---|---|
bbox | Emprise géographique sud,ouest,nord,est (latitudes puis longitudes, en degrés décimaux). Seuls les points à l'intérieur sont renvoyés. Latitudes bornées à [-90, 90], longitudes à [-180, 180] ; une bbox invalide renvoie un code 400 avec un message en JSON. | bbox=43.0,4.8,43.6,5.7 |
departement | Filtre par numéro de département (champ renseigné progressivement sur les fiches ; le filtre bbox est plus fiable). | departement=13 |
q | Recherche texte dans le nom, la distillerie, la commune, la région et la description (accents et majuscules ignorés). | q=ricard |
limit | Nombre maximal de points renvoyés : 200 par défaut, 1000 au maximum. Le total réel est toujours indiqué dans total. | limit=1000 |
Exemples cliquables :
Tous les points
Autour de Marseille
q=bardouin
limit=1000
Exemple de réponse complet
[longitude, latitude] — c'est l'erreur la plus fréquente.{
"type": "FeatureCollection",
"total": 111,
"renvoyes": 111,
"genere_le": "2026-08-22T14:00:00.000Z",
"licence": "CC BY 4.0 — citation obligatoire : « Le Pastis Mu' » avec lien vers https://lepastismu.com",
"attribution": "Le Pastis Mu' — https://lepastismu.com",
"documentation": "https://lepastismu.com/api/",
"features": [
{
"type": "Feature",
"geometry": { "type": "Point", "coordinates": [5.447966, 43.529403] },
"properties": {
"id": "x001",
"nom": "Pastis Garagaï",
"type": "pastis",
"distillerie": "Distillerie Garagaï",
"commune": "Aix-en-Provence",
"departement": "",
"region": "Provence-Alpes-Côte d'Azur",
"description": "18 plantes garrigue pied Sainte-Victoire, millésimé",
"degre": 45,
"couleur": "Jaune",
"categorie": "Artisanal",
"sans_alcool": false,
"url": "https://lepastismu.com/#fiche=x001"
}
}
]
}
Chaque url ouvre directement la fiche détaillée de la bouteille sur Le Pastis Mu'.
Plusieurs pastis d'une même distillerie partagent les mêmes coordonnées : pensez à un regroupement
de marqueurs (par exemple Leaflet.markercluster) si besoin.
2. GET /api/v1/status — état de l'API
URL complète : https://lepastismu.com/api/v1/status — aucun paramètre.
Essayer
{
"api": "Le Pastis Mu' — API publique",
"version": "1.0.0",
"references_total": 231,
"references_geolocalisees": 111,
"derniere_maj": "2026-08-21T18:32:10.000Z",
"source_donnees": "firebase",
"licence": "CC BY 4.0 — citation obligatoire : « Le Pastis Mu' » avec lien vers https://lepastismu.com",
"attribution": "Le Pastis Mu' — https://lepastismu.com",
"documentation": "https://lepastismu.com/api/",
"contact": "Formulaire de contact sur https://lepastismu.com"
}
3. Codes d'erreur
Toutes les erreurs sont renvoyées en JSON, jamais en HTML, avec les en-têtes CORS,
sous la forme {"error": "code_court", "message": "explication en français"}.
| Code | Signification |
|---|---|
400 | Paramètre invalide (bbox_invalide, limit_invalide) — le message explique quoi corriger. |
404 | Point d'entrée inconnu (introuvable). |
405 | Méthode autre que GET ou OPTIONS. |
429 | Limite de débit dépassée (120 requêtes/minute par adresse) — en-tête Retry-After fourni. |
500 | Erreur interne — réessayez, puis contactez-nous si elle persiste. |
4. Exemple Leaflet prêt à coller
Cet exemple charge les points visibles à l'écran (via bbox) et les recharge à chaque déplacement de la carte :
<div id="carte" style="height:520px"></div>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script>
const carte = L.map('carte').setView([46.6, 2.4], 6);
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png',
{ attribution: '© OpenStreetMap — Données pastis : <a href="https://lepastismu.com">Le Pastis Mu\'</a> (CC BY 4.0)' }
).addTo(carte);
const couche = L.geoJSON(null, {
onEachFeature: (f, m) => {
const p = f.properties;
m.bindPopup('<b>' + p.nom + '</b><br>' + p.distillerie +
(p.commune ? ' — ' + p.commune : '') +
'<br><a href="' + p.url + '" target="_blank">Voir la fiche sur Le Pastis Mu\'</a>');
}
}).addTo(carte);
function charger() {
const b = carte.getBounds();
const bbox = [b.getSouth(), b.getWest(), b.getNorth(), b.getEast()]
.map(v => v.toFixed(4)).join(',');
fetch('https://lepastismu.com/api/v1/pastis?bbox=' + bbox + '&limit=1000')
.then(r => r.json())
.then(g => { couche.clearLayers(); couche.addData(g); })
.catch(console.error);
}
carte.on('moveend', charger);
charger();
</script>
5. Licence, citation, contact
Licence : Creative Commons Attribution 4.0 (CC BY 4.0). Vous pouvez réutiliser, afficher et redistribuer ces données librement, y compris commercialement, à une condition : citer « Le Pastis Mu' » avec un lien vers https://lepastismu.com (dans l'attribution de la carte, une légende ou une page de crédits).
Contact : via le formulaire de contact sur lepastismu.com (bouton « Contact » en pied de page) — pour signaler une erreur de coordonnées, demander un champ supplémentaire ou simplement dire que vous utilisez l'API : ça fait toujours plaisir.
6. Tester le CORS depuis un autre domaine
Trois vérifications, de la plus simple à la plus complète :
a) Depuis la console d'un navigateur, sur n'importe quel autre site
Ouvrez un site quelconque (par exemple votre page github.io), appuyez sur F12 → onglet Console, et collez :
fetch('https://lepastismu.com/api/v1/status')
.then(r => r.json())
.then(console.log)
.catch(e => console.error('CORS bloqué :', e));
Si l'objet JSON s'affiche, le CORS fonctionne. En cas de blocage, le navigateur affiche une erreur mentionnant « CORS policy ».
b) Vérifier les en-têtes avec curl
curl -i -H "Origin: https://exemple.github.io" \
"https://lepastismu.com/api/v1/status"
La réponse doit contenir la ligne access-control-allow-origin: *.
c) Simuler la pré-vérification OPTIONS (preflight)
curl -i -X OPTIONS \
-H "Origin: https://exemple.github.io" \
-H "Access-Control-Request-Method: GET" \
"https://lepastismu.com/api/v1/pastis"
Attendu : un code 204 avec access-control-allow-origin: * et
access-control-allow-methods: GET, OPTIONS. Les fichiers locaux (origine null)
sont également acceptés puisque l'autorisation est *.