Messages et statistiques
Lire les messages reçus par le formulaire de contact d'un site, les marquer comme lus, les supprimer, et obtenir les statistiques de visites.
Les messages#
Quand un visiteur remplit le formulaire de la section Contact, le message est enregistré et envoyé par e-mail à l'adresse de contact du site (settings.business.email, ou à défaut l'e-mail du compte). L'API permet de les relire et de les gérer.
L'objet message#
| Champ | Type | Description |
|---|---|---|
id |
entier | Identifiant. |
site_id |
entier | Site concerné. |
name |
chaîne | Nom du visiteur (150 caractères max.). |
email |
chaîne | E-mail du visiteur, pour lui répondre. |
phone |
chaîne ou null |
Téléphone (facultatif). |
message |
chaîne | Texte du message (5 à 5 000 caractères). |
ip |
chaîne ou null |
Adresse IP de l'envoi (lutte contre les abus). |
read_at |
date ou null |
Date de lecture ; null = non lu. |
created_at, updated_at |
date |
Bon à savoir Les dates des messages sont au format ISO 8601 avec microsecondes et
Z(UTC), par exemple2026-10-26T09:45:12.000000Z.
Lister les messages#
GET /v1/sites/{site}/messages · Jeton
Messages du plus récent au plus ancien, 30 par page. Paramètre de requête : page (numéro de page, 1 par défaut).
curl "https://api.monsiteo.com/v1/sites/7/messages?page=1" \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
La réponse suit le format de pagination Laravel :
{
"current_page": 1,
"data": [
{
"id": 128,
"site_id": 7,
"name": "Sophie Lambert",
"email": "sophie.lambert@exemple.be",
"phone": "+32 470 12 34 56",
"message": "Bonjour, faites-vous des commandes pour 25 personnes samedi soir ?",
"ip": "203.0.113.24",
"read_at": null,
"created_at": "2026-10-26T09:45:12.000000Z",
"updated_at": "2026-10-26T09:45:12.000000Z"
}
],
"first_page_url": "https://api.monsiteo.com/v1/sites/7/messages?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://api.monsiteo.com/v1/sites/7/messages?page=1",
"links": [],
"next_page_url": null,
"path": "https://api.monsiteo.com/v1/sites/7/messages",
"per_page": 30,
"prev_page_url": null,
"to": 1,
"total": 1
}
Pour tout récupérer, suivez next_page_url jusqu'à ce qu'il vaille null. Erreurs : 403, 404.
Marquer comme lu ou non lu#
PATCH /v1/messages/{message} · Jeton
| Paramètre | Type | Obligatoire | Règles |
|---|---|---|---|
read |
booléen | non | true par défaut (marque comme lu) ; false remet en non lu |
curl -X PATCH https://api.monsiteo.com/v1/messages/128 \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
-d '{"read":true}'
{ "data": { "id": 128, "site_id": 7, "name": "Sophie Lambert", "email": "sophie.lambert@exemple.be", "phone": "+32 470 12 34 56", "message": "Bonjour, faites-vous des commandes pour 25 personnes samedi soir ?", "ip": "203.0.113.24", "read_at": "2026-10-26T10:02:00.000000Z", "created_at": "2026-10-26T09:45:12.000000Z", "updated_at": "2026-10-26T10:02:00.000000Z" } }
Erreurs : 403, 404.
Supprimer un message#
DELETE /v1/messages/{message} · Jeton
Suppression définitive.
curl -X DELETE https://api.monsiteo.com/v1/messages/128 \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "ok": true }
Statistiques de visites#
GET /v1/sites/{site}/stats · Jeton
Pages vues par jour sur une période, pages les plus consultées et nombre de messages non lus.
| Paramètre (requête) | Type | Obligatoire | Règles |
|---|---|---|---|
days |
entier | non | nombre de jours, 30 par défaut ; ramené entre 7 et 365 |
curl "https://api.monsiteo.com/v1/sites/7/stats?days=7" \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{
"total": 412,
"series": [
{ "day": "2026-10-20", "views": 48 },
{ "day": "2026-10-21", "views": 52 },
{ "day": "2026-10-22", "views": 61 },
{ "day": "2026-10-23", "views": 70 },
{ "day": "2026-10-24", "views": 95 },
{ "day": "2026-10-25", "views": 58 },
{ "day": "2026-10-26", "views": 28 }
],
"top_pages": [
{ "path": "/", "views": 240 },
{ "path": "/notre-carte", "views": 151 },
{ "path": "/contact-page", "views": 21 }
],
"messages_unread": 2
}
seriescontient un point par jour, jours sans visite compris (viewsà 0), du plus ancien à aujourd'hui.top_pages: les 10 chemins les plus vus sur la période.- Sont comptées les pages vues du site publié. Les robots d'indexation, les outils automatiques et les aperçus de l'éditeur ne sont pas comptés. Aucun cookie n'est déposé chez vos visiteurs pour ces statistiques.
Erreurs : 403, 404.
Mis à jour le 26 octobre 2026