monsiteo aide

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 utilise multipart/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 toujours Accept: application/json. Sans lui, une erreur d'authentification peut être traitée comme une requête de navigateur au lieu de renvoyer un 401 en 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é à null plutô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 (403 sinon).

Mis à jour le 26 octobre 2026