Tout pour relier votre camping à votre site, à votre comptabilité ou à un autre logiciel : disponibilités selon le véhicule, réservations, calendriers et notifications en temps réel. API REST en JSON, hébergée en France.
Démarrage rapide
Vous voulez afficher les disponibilités de votre camping sur votre site, envoyer les réservations dans votre comptabilité ou relier un autre outil ? Trois étapes suffisent.
- Créez votre compte Campernest Pilot et ajoutez votre camping.
- Dans Réglages › Développeurs, créez une clé de test
cn_test_…. Elle travaille sur un camping de démonstration : aucun client n'est prévenu, rien n'est encaissé. - Passez en production avec une clé
cn_live_…distincte : rien d'autre ne change dans votre code.
KEY="cn_test_xxx"
API="https://api.campernest.eu/v1"
# Emplacements libres du 10 au 17 juillet pour un camping-car de 7,40 m
curl -s "$API/availability?arrival=2027-07-10&departure=2027-07-17&vehicle=motorhome&length=7.4&adults=2" \
-H "Authorization: Bearer $KEY"La réponse ne renvoie que les emplacements où le véhicule passe vraiment, avec le prix du séjour. Il ne reste qu'à créer la réservation (voir POST /bookings).
L'essentiel
| Élément | Valeur |
|---|---|
| URL de base | https://api.campernest.eu/v1 |
| Authentification | en-tête Authorization: Bearer cn_live_… ou cn_test_… |
| Format | JSON (UTF-8) en entrée et en sortie |
| Identifiants | préfixés : cmp_… (camping), pch_… (emplacement), bkg_… (réservation), evt_… (événement) |
| Dates | jour au format 2027-07-10 pour les arrivées et les départs ; ISO 8601 avec fuseau pour les horodatages |
| Montants | en centimes d'euro, TTC, par exemple 48500 pour 485,00 € |
| Limite de débit | 60 requêtes par minute et par clé, HTTP 429 au-delà |
| Hébergement | en France, aucune donnée hors de l'Union européenne |
| Prix | inclus dans Campernest Pilot+, sans supplément ni facturation à l'appel |
Clés de test et clés réelles
Une clé cn_test_ travaille sur un camping de démonstration, recréé chaque nuit : vous pouvez réserver, annuler et recevoir des webhooks sans toucher à vos vrais clients.
Une clé cn_live_ agit sur votre camping, pour de vrai. Chaque clé a ses portées : read (lire emplacements, disponibilités et réservations) et write (créer et annuler des réservations). Donnez à chaque outil la plus petite portée possible.
Une clé se crée et se révoque dans Réglages › Développeurs. Seul le propriétaire du camping, ou un membre de l'équipe qui en a le droit, peut le faire.
Le camping de la clé
GET/me
Renvoie le camping lié à la clé, son identifiant et les portées de la clé. Pratique pour vérifier qu'une clé fonctionne.
Emplacements et locatifs
GET/pitches
Vos emplacements et vos locatifs, avec ce qui compte pour un véhicule : longueur et largeur maximales, véhicules acceptés, électricité.
{
"data": [
{
"id": "pch_8f2k1",
"name": "B12",
"kind": "pitch",
"max_length_m": 9.5,
"max_width_m": 4,
"vehicles": ["caravan", "motorhome", "van"],
"electricity_amps": 10
}
],
"has_more": false
}Disponibilités
GET/availability
| Paramètre | Description |
|---|---|
arrival, departure | dates du séjour (obligatoires) |
vehicle | caravan, motorhome, van ou tent |
length | longueur totale en mètres, attelage compris |
adults, children | nombre de voyageurs, pour le prix et la taxe de séjour |
Seuls les emplacements libres où le véhicule passe sont renvoyés, avec le prix total du séjour et la taxe de séjour à part.
Lire les réservations
GET/bookings
GET/bookings/{id}
Filtres : arrival_from, arrival_to, status et updated_since, pour ne relire que ce qui a changé depuis votre dernier passage. Les résultats sont paginés par 50, avec has_more et starting_after.
Créer une réservation
POST/bookings
Envoyez un en-tête Idempotency-Key : si la requête est rejouée, la réservation n'est créée qu'une fois.
curl -s -X POST "$API/bookings" \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: site-2027-0412" \
-d '{"pitch_id":"pch_8f2k1","arrival":"2027-07-10","departure":"2027-07-17",
"vehicle":"motorhome","length":7.4,"adults":2,
"guest":{"full_name":"Marie Dupont","email":"marie.dupont@exemple.fr"}}'POST/bookings/{id}/cancel
Annule une réservation. Le remboursement suit les conditions d'annulation de votre camping.
Statuts d'une réservation
| Statut | Signification |
|---|---|
pending | en attente de votre validation ou du paiement de l'acompte |
confirmed | confirmée, l'emplacement est bloqué |
checked_in | le client est arrivé |
checked_out | le client est reparti |
cancelled | annulée, l'emplacement est libéré |
Calendriers iCal
Chaque emplacement et chaque locatif a une adresse iCal en lecture, à coller dans un autre outil ou une autre plateforme. Dans l'autre sens, Campernest Pilot lit les calendriers iCal de vos autres canaux et bloque les dates déjà prises.
Les calendriers iCal se règlent dans le planning, sans clé d'API.
Webhooks
Campernest Pilot prévient votre serveur dès qu'une réservation change, par une requête POST en JSON.
| Événement | Quand |
|---|---|
booking.created | une réservation est créée, sur Campernest, sur votre site ou au planning |
booking.updated | dates, emplacement ou voyageurs modifiés |
booking.cancelled | une réservation est annulée |
payment.succeeded | un acompte ou un solde est payé |
payment.refunded | un paiement est remboursé |
Vérifier la signature (obligatoire)
Chaque envoi porte l'en-tête Campernest-Signature: t=…,v1=…, un HMAC-SHA256 du corps brut calculé avec le secret de votre webhook. Refusez toute requête dont la signature ne correspond pas, ou vieille de plus de 5 minutes.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
return timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}Répondez par un code 2xx en moins de 10 secondes. Sinon, l'envoi est retenté pendant 24 heures, à intervalles croissants.
Erreurs
| Code | Signification |
|---|---|
400 | requête mal formée |
401 | clé absente ou invalide |
403 | la clé n'a pas la portée nécessaire |
404 | ressource introuvable |
409 | conflit : l'emplacement vient d'être pris |
422 | données refusées, le champ fautif est indiqué |
429 | trop de requêtes, réessayez après Retry-After |
{
"error": {
"code": "pitch_too_short",
"message": "Le véhicule (7,4 m) dépasse la longueur de l'emplacement B12 (6,5 m).",
"field": "length"
}
}Limites
- 60 requêtes par minute et par clé.
- Une réservation ne peut pas dépasser 90 nuits.
- Les données de vos clients ne servent qu'à votre camping : ni revente, ni prospection.
La documentation de l'API arrive bientôt
L'API de Campernest Pilot permettra de relier votre camping à votre site, à votre comptabilité ou à un autre logiciel. Vous avez un projet ? Écrivez-nous, nous vous préviendrons dès l'ouverture.