Introduction à l'API Monsiteo
L'API REST de Monsiteo : adresse de base, format JSON, en-têtes, dates, CORS et tableau récapitulatif de tous les endpoints.
L'API Monsiteo est l'interface REST utilisée par l'éditeur (web, iPad, Mac, iPhone et Android). Tout ce que vous faites dans l'éditeur passe par elle : vous pouvez donc automatiser la création de sites, la mise à jour des pages ou la lecture des messages reçus.
Adresse de base et version#
Toutes les routes sont servies sous :
https://api.monsiteo.com/v1
La version figure dans le chemin (/v1). Une évolution incompatible donnerait lieu à une nouvelle version (/v2) ; les ajouts de champs dans les réponses ne sont pas considérés comme incompatibles, votre code doit donc ignorer les champs qu'il ne connaît pas.
La racine https://api.monsiteo.com/ (hors /v1) renvoie une simple description :
{ "name": "Monsiteo API", "version": "v1", "docs": "https://docs.monsiteo.com/api" }
Format des échanges#
- Requêtes : JSON (
Content-Type: application/json), sauf l'envoi d'images qui utilisemultipart/form-data. - Réponses : JSON encodé en UTF-8, sauf l'aperçu d'une page qui renvoie du HTML.
- En-tête
Accept: envoyez toujoursAccept: application/json. Sans lui, une erreur d'authentification peut être traitée comme une requête de navigateur au lieu de renvoyer un401en JSON. - Authentification :
Authorization: Bearer <jeton>pour toutes les routes protégées (voir Authentification).
curl https://api.monsiteo.com/v1/me \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
Enveloppe des réponses#
Les ressources (compte, site, page, domaine) sont renvoyées dans une clé data :
{ "data": { "id": 42, "name": "Friterie William", "slug": "friterie-william" } }
Les listes de ressources sont aussi dans data (tableau). Quelques routes renvoient un objet JSON direct, sans enveloppe : connexion et inscription (token + user), statistiques, facturation, vérification d'adresse, catalogue, formules, réécriture IA, ainsi que les confirmations simples {"ok": true}. La liste des messages renvoie une pagination Laravel complète. Chaque page de référence précise la forme exacte.
Dates, identifiants et valeurs#
- Les dates sont au format ISO 8601 avec fuseau, par exemple
2026-10-26T09:15:00+00:00. Elles sont exprimées en UTC. - Les identifiants de compte, site, page, média, domaine et message sont des entiers.
- Les identifiants de section sont des chaînes (UUID en général), voir Format des sections.
- Les montants de facturation sont en euros (nombre décimal, TTC) avec une devise
EUR. - Un champ absent ou vide est renvoyé à
nullplutôt qu'omis.
CORS#
L'API autorise les appels depuis le navigateur uniquement pour l'application officielle https://app.monsiteo.com (et localhost en développement). Les méthodes GET, POST, PUT, PATCH, DELETE et OPTIONS sont acceptées avec les en-têtes Authorization, Content-Type, Accept, X-Requested-With et Accept-Language. Aucun cookie n'est utilisé (supports_credentials désactivé).
Bon à savoir Pour une intégration depuis votre propre site web, appelez l'API depuis votre serveur, jamais depuis le navigateur : votre jeton serait visible par tous les visiteurs.
Limites de débit#
Certaines routes sont limitées (inscription, connexion, génération IA, envoi d'images...). Le détail est sur la page Erreurs et limites. Une réponse 429 indique qu'il faut patienter.
Tous les endpoints#
Légende : « Public » = sans jeton, « Jeton » = Authorization: Bearer obligatoire. La limite est exprimée en requêtes par minute (ou par 10 minutes quand c'est précisé).
| Méthode | Chemin | Accès | Limite | Détail |
|---|---|---|---|---|
| GET | / (hors /v1) |
Public | aucune | Endpoints publics |
| GET | /v1/catalog |
Public | aucune | Endpoints publics |
| GET | /v1/plans |
Public | aucune | Endpoints publics |
| GET | /v1/slugs/check |
Public | 60 / min | Endpoints publics |
| POST | /v1/agency-requests |
Public (jeton facultatif) | 5 / 10 min | Endpoints publics |
| POST | /v1/auth/register |
Public | 10 / min | Authentification |
| POST | /v1/auth/login |
Public | 10 / min | Authentification |
| POST | /v1/auth/exchange |
Public | 10 / min | Authentification |
| POST | /v1/auth/forgot-password |
Public | 10 / min | Authentification |
| POST | /v1/auth/logout |
Jeton | aucune | Authentification |
| GET | /v1/me |
Jeton | aucune | Compte |
| PATCH | /v1/me |
Jeton | aucune | Compte |
| PUT | /v1/me/password |
Jeton | aucune | Compte |
| POST | /v1/me/verification |
Jeton | 3 / 10 min | Compte |
| DELETE | /v1/me |
Jeton | aucune | Compte |
| GET | /v1/sites |
Jeton | aucune | Sites |
| POST | /v1/sites |
Jeton | aucune | Sites |
| GET | /v1/sites/{site} |
Jeton | aucune | Sites |
| PATCH | /v1/sites/{site} |
Jeton | aucune | Sites |
| DELETE | /v1/sites/{site} |
Jeton | aucune | Sites |
| POST | /v1/sites/{site}/publish |
Jeton | aucune | Sites |
| POST | /v1/sites/{site}/unpublish |
Jeton | aucune | Sites |
| GET | /v1/sites/{site}/stats |
Jeton | aucune | Messages et statistiques |
| GET | /v1/sites/{site}/pages |
Jeton | aucune | Pages |
| POST | /v1/sites/{site}/pages |
Jeton | aucune | Pages |
| POST | /v1/sites/{site}/pages/reorder |
Jeton | aucune | Pages |
| GET | /v1/pages/{page} |
Jeton | aucune | Pages |
| PATCH | /v1/pages/{page} |
Jeton | aucune | Pages |
| DELETE | /v1/pages/{page} |
Jeton | aucune | Pages |
| POST | /v1/pages/{page}/duplicate |
Jeton | aucune | Pages |
| POST | /v1/pages/{page}/preview |
Jeton | aucune | Pages |
| GET | /v1/sites/{site}/media |
Jeton | aucune | Médias |
| POST | /v1/sites/{site}/media |
Jeton | 60 / min | Médias |
| DELETE | /v1/media/{media} |
Jeton | aucune | Médias |
| GET | /v1/sites/{site}/domain |
Jeton | aucune | Domaines |
| POST | /v1/sites/{site}/domain |
Jeton | aucune | Domaines |
| POST | /v1/sites/{site}/domain/verify |
Jeton | 12 / min | Domaines |
| DELETE | /v1/sites/{site}/domain |
Jeton | aucune | Domaines |
| GET | /v1/sites/{site}/messages |
Jeton | aucune | Messages et statistiques |
| PATCH | /v1/messages/{message} |
Jeton | aucune | Messages et statistiques |
| DELETE | /v1/messages/{message} |
Jeton | aucune | Messages et statistiques |
| POST | /v1/ai/generate |
Jeton | 5 / min | IA |
| POST | /v1/ai/rewrite |
Jeton | 30 / min | IA |
| GET | /v1/billing |
Jeton | aucune | Facturation |
| POST | /v1/billing/checkout |
Jeton | aucune | Facturation |
| POST | /v1/billing/portal |
Jeton | aucune | Facturation |
| POST | /v1/billing/cancel |
Jeton | aucune | Facturation |
| POST | /v1/billing/resume |
Jeton | aucune | Facturation |
| GET | /v1/novadesko |
Jeton | aucune | Facturation |
| POST | /v1/novadesko/link |
Jeton | aucune | Facturation |
| POST | /stripe/webhook (hors /v1) |
Signature Stripe | aucune | Webhooks Stripe |
Attention Toutes les routes « Jeton » refusent aussi les comptes suspendus (
403). Les routes qui portent sur un site, une page, un message ou un domaine vérifient que la ressource appartient au compte du jeton (403sinon).
Mis à jour le 26 octobre 2026