Sites
Lister, créer, lire, modifier, supprimer, publier et dépublier un site. Objet site complet, thème (couleurs, polices, arrondis, boutons) et réglages.
Un site possède une adresse <slug>.monsiteo.com, un thème, des réglages (coordonnées, réseaux sociaux, SEO) et des pages. Toutes les routes demandent un jeton ; les routes portant sur un site vérifient qu'il appartient au compte (403 sinon).
L'objet site#
| Champ | Type | Description |
|---|---|---|
id |
entier | Identifiant. |
name |
chaîne | Nom du site (souvent le nom du commerce). |
slug |
chaîne | Sous-domaine : friterie-william donne friterie-william.monsiteo.com. |
activity |
chaîne ou null |
Métier (friterie, restaurant, coiffeur...), voir activities dans le catalogue. |
status |
chaîne | draft (brouillon, non visible), published (en ligne) ou suspended (suspendu par l'équipe). |
url |
chaîne | Adresse publique : le domaine personnalisé s'il est actif, sinon le sous-domaine. |
subdomain_url |
chaîne | Adresse en .monsiteo.com, toujours disponible. |
theme |
objet | Thème complet (valeurs par défaut incluses), voir ci-dessous. |
settings |
objet | Réglages : business, social, seo, footer_text. |
logo, favicon |
chaîne ou null |
URL des images. |
show_branding |
booléen | Mention « Créé avec Monsiteo » affichée (formule Gratuit). |
published_at |
date ou null |
Première publication. |
views |
entier ou null |
Total des pages vues depuis la création. |
pages_count |
entier | Nombre de pages (uniquement dans la liste). |
pages |
tableau | Pages complètes (uniquement sur un site seul), voir Pages. |
domain |
objet ou null |
Domaine personnalisé, voir Domaines. |
created_at, updated_at |
date |
Thème#
| Clé | Valeur par défaut | Valeurs acceptées |
|---|---|---|
primary |
#5B3DF5 |
couleur #RRGGBB |
secondary |
#FFC93C |
couleur #RRGGBB |
background |
#FFFFFF |
couleur #RRGGBB |
surface |
#F6F4FF |
couleur #RRGGBB (fonds de cartes et sections « surface ») |
text |
#1B1A2E |
couleur #RRGGBB |
heading_font |
Bricolage Grotesque |
une police du catalogue |
body_font |
Inter |
une police du catalogue |
radius |
md |
none, sm, md, lg, full |
button |
solid |
solid (plein), outline (contour), pill (arrondi) |
Polices disponibles :
| Police | Style |
|---|---|
| Bricolage Grotesque | Sans empattement |
| Inter | Sans empattement |
| Poppins | Sans empattement |
| Montserrat | Sans empattement |
| DM Sans | Sans empattement |
| Nunito | Sans empattement |
| Playfair Display | Avec empattement |
| Lora | Avec empattement |
| Fraunces | Avec empattement |
| Cormorant Garamond | Avec empattement |
| Caveat | Manuscrite |
| Pacifico | Manuscrite |
| Space Grotesk | Sans empattement |
| Archivo Black | D'affiche |
Réglages (settings)#
| Clé | Contenu |
|---|---|
business |
name (150), tagline (200), email (e-mail, 190), phone (40), address (190), zip (20), city (120), country (2 lettres), vat (40), lat (nombre entre -90 et 90), lng (nombre entre -180 et 180). Avec lat et lng, la section Contact affiche une carte. Utilisé dans le pied de page, la section Contact et les données structurées. |
social |
URL des profils : facebook, instagram, tiktok, linkedin, youtube, x, whatsapp, google (URL valide, 300 caractères max.). |
seo |
title (160), description (320), og_image (URL, 2000), noindex (booléen : demande aux moteurs de ne pas indexer le site). |
footer_text |
Texte libre du pied de page (300). |
Les nombres entre parenthèses sont les longueurs maximales. Tous ces champs acceptent null.
Lister ses sites#
GET /v1/sites · Jeton
Renvoie les sites du compte, du plus récent au plus ancien, avec pages_count et domain (sans le détail des pages).
curl https://api.monsiteo.com/v1/sites \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{
"data": [
{
"id": 7,
"name": "Friterie William",
"slug": "friterie-william",
"activity": "friterie",
"status": "published",
"url": "https://www.friterie-william.be",
"subdomain_url": "https://friterie-william.monsiteo.com/",
"theme": { "primary": "#E63946", "secondary": "#FFC93C", "background": "#FFFFFF", "surface": "#FFF6E5", "text": "#1B1A2E", "heading_font": "Archivo Black", "body_font": "Inter", "radius": "lg", "button": "pill" },
"settings": { "business": { "name": "Friterie William", "phone": "+32 81 12 34 56", "city": "Namur" } },
"logo": "https://monsiteo.com/storage/sites/7/202610/aZ3kLmPq.png",
"favicon": null,
"show_branding": false,
"published_at": "2026-10-12T08:30:00+00:00",
"views": 1284,
"pages_count": 4,
"domain": null,
"created_at": "2026-10-10T14:02:11+00:00",
"updated_at": "2026-10-25T17:45:03+00:00"
}
]
}
Créer un site#
POST /v1/sites · Jeton
Crée un site en brouillon avec une page d'accueil contenant trois sections : une bannière (titre = nom du site), des services et un contact. Pour créer un site complet avec textes rédigés, utilisez plutôt la génération IA.
| Paramètre | Type | Obligatoire | Règles |
|---|---|---|---|
name |
chaîne | oui | 150 caractères max. |
slug |
chaîne | non | 63 caractères max. ; règles des adresses (voir encadré). Si absent, une adresse libre est proposée à partir du nom. |
activity |
chaîne | non | 60 caractères max. |
Bon à savoir Règles d'une adresse (
slug) : 3 à 63 caractères, lettres minuscules sans accent, chiffres et tirets, ni en début ni en fin, pas deux tirets de suite, ni adresse réservée, ni adresse déjà utilisée (y compris par un site supprimé). Vérifiez-la avant avecGET /v1/slugs/check. La liste des adresses réservées suit.
Adresses réservées :
admin, api, app, docs, www, mail, blog, smtp, imap, pop, webmail, ftp, cdn, assets, static, status, staging, dev, test, demo-admin, dashboard, help, support, aide, compte, account, billing, facturation, login, connexion, register, inscription, auth, sso, oauth, ns1, ns2, mx, autodiscover, autoconfig, monsiteo, novadesko, hello, noreply, contact, pay, stripe, webhook, webhooks, img, images, media, files, storage
curl -X POST https://api.monsiteo.com/v1/sites \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
-d '{"name":"Friterie William","slug":"friterie-william","activity":"friterie"}'
Réponse 201 : l'objet site dans data, avec ses pages :
{
"data": {
"id": 7,
"name": "Friterie William",
"slug": "friterie-william",
"activity": "friterie",
"status": "draft",
"url": "https://friterie-william.monsiteo.com/",
"subdomain_url": "https://friterie-william.monsiteo.com/",
"theme": { "primary": "#5B3DF5", "secondary": "#FFC93C", "background": "#FFFFFF", "surface": "#F6F4FF", "text": "#1B1A2E", "heading_font": "Bricolage Grotesque", "body_font": "Inter", "radius": "md", "button": "solid" },
"settings": { "business": { "name": "Friterie William", "email": "william@friterie-william.be" } },
"logo": null,
"favicon": null,
"show_branding": true,
"published_at": null,
"views": 0,
"pages": [
{
"id": 18,
"site_id": 7,
"title": "Accueil",
"slug": "",
"path": "/",
"is_home": true,
"in_nav": true,
"position": 0,
"sections": [
{ "id": "77b817f7-f0b7-41a5-ac0f-58af633e2ab3", "type": "hero", "variant": "centered", "data": { "title": "Friterie William", "subtitle": "Présentez votre activité en une phrase claire.", "button_label": "Nous contacter", "button_link": "#contact" }, "style": { "background": "default", "spacing": "md" } },
{ "id": "83714c1f-4a6b-4f7c-b619-c1f8aace7084", "type": "services", "variant": "cards", "data": { "title": "Nos services", "items": [] }, "style": { "background": "default", "spacing": "md" } },
{ "id": "ec8ba928-a8fc-4c3f-a24e-4d97eb1692d5", "type": "contact", "variant": "split", "data": { "title": "Contactez-nous", "show_form": true, "show_map": true }, "style": { "background": "default", "spacing": "md" } }
],
"meta_title": null,
"meta_description": null,
"og_image": null,
"published_at": null,
"has_unpublished_changes": true,
"updated_at": "2026-10-26T09:15:00+00:00"
}
],
"domain": null,
"created_at": "2026-10-26T09:15:00+00:00",
"updated_at": "2026-10-26T09:15:00+00:00"
}
}
(contenu des sections abrégé). Erreurs :
402si la formule ne permet pas de site supplémentaire (Gratuit et Site : 1 site, Site + Novadesko : 3 sites) ;422surslug: « L'adresse doit contenir au moins 3 caractères. », « Utilisez uniquement des lettres minuscules, des chiffres et des tirets (pas en début ni en fin). », « L'adresse ne peut pas contenir deux tirets consécutifs. », « Cette adresse est réservée par Monsiteo. », « Cette adresse est déjà prise. ».
Lire un site#
GET /v1/sites/{site} · Jeton
Renvoie le site avec toutes ses pages (sections de brouillon comprises) et son domaine.
curl https://api.monsiteo.com/v1/sites/7 \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
Erreurs : 403, 404.
Modifier un site#
PATCH /v1/sites/{site} · Jeton
Envoyez seulement ce qui change. theme et settings sont fusionnés avec les valeurs existantes : vous pouvez n'envoyer qu'une couleur ou qu'un numéro de téléphone.
| Paramètre | Type | Obligatoire | Règles |
|---|---|---|---|
name |
chaîne | non | non vide, 150 caractères max. |
slug |
chaîne | non | règles des adresses ; changer d'adresse rend l'ancienne libre pour d'autres |
activity |
chaîne | non | 60 caractères max. |
logo |
chaîne | non | URL http(s):// ou chemin /..., 2000 caractères max. ; une valeur non conforme est enregistrée comme null |
favicon |
chaîne | non | idem |
theme |
objet | non | uniquement les clés du tableau Thème |
settings |
objet | non | uniquement business, social, seo, footer_text |
Une clé inconnue dans theme, settings, settings.business, settings.social ou settings.seo provoque un 422.
curl -X PATCH https://api.monsiteo.com/v1/sites/7 \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
-d '{
"theme": { "primary": "#E63946", "heading_font": "Archivo Black", "radius": "lg", "button": "pill" },
"settings": {
"business": { "phone": "+32 81 12 34 56", "address": "Rue de Fer 12", "zip": "5000", "city": "Namur", "country": "BE" },
"social": { "facebook": "https://www.facebook.com/friteriewilliam" },
"seo": { "title": "Friterie William, frites maison à Namur", "description": "Frites fraîches cuites à la graisse de bœuf, sauces maison, au cœur de Namur." }
}
}'
Réponse 200 : l'objet site complet à jour. Erreurs : 403, 404, 422.
Bon à savoir Les modifications de thème et de réglages sont visibles en ligne immédiatement pour un site publié : seules les sections des pages ont un brouillon séparé.
Supprimer un site#
DELETE /v1/sites/{site} · Jeton
Retire le domaine personnalisé et supprime le site : il n'est plus accessible en ligne. L'adresse slug reste bloquée (elle ne peut pas être reprise).
curl -X DELETE https://api.monsiteo.com/v1/sites/7 \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
{ "ok": true }
Publier#
POST /v1/sites/{site}/publish · Jeton
Copie le brouillon des pages vers la version en ligne et passe le site en published. Lors de la toute première publication, l'e-mail « Votre site est en ligne » est envoyé au propriétaire.
| Paramètre | Type | Obligatoire | Règles |
|---|---|---|---|
page_ids |
tableau d'entiers | non | Si présent, seules ces pages sont publiées ; les autres gardent leur version en ligne actuelle. Absent : toutes les pages. |
curl -X POST https://api.monsiteo.com/v1/sites/7/publish \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd" \
-d '{}'
Réponse 200 : l'objet site complet ; chaque page a published_at renseigné et has_unpublished_changes à false.
Attention Une page jamais publiée n'est pas visible en ligne, même si le site est publié. Publiez sans
page_idsaprès avoir créé une page.
Dépublier#
POST /v1/sites/{site}/unpublish · Jeton
Repasse le site en brouillon : les visiteurs voient une page « site en préparation » (non indexée). Les pages et leur version publiée sont conservées : republier remet le site en ligne tel quel.
curl -X POST https://api.monsiteo.com/v1/sites/7/unpublish \
-H "Accept: application/json" \
-H "Authorization: Bearer 1|AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcd"
Réponse 200 : l'objet site avec "status": "draft".
Mis à jour le 26 octobre 2026