L'API qui fait entrer et sortir vos décisions.
REST, webhooks signés, SDK first-party en TypeScript, Python et PHP. Les exemples ci-dessous s'exécutent contre l'API de production ; remplacez simplement les identifiants.
- 31
- Connecteurs certifiés
- 7
- Ressources REST
- 12 mois
- Dépréciation minimale
- api.maisonnumerique.site
- Domaine API

Aucune double saisie.
Les données entrent, les décisions ressortent.
L'API existe pour que les recommandations arrivent dans le système où vos équipes travaillent déjà — ERP, caisse ou entrepôt — plutôt que dans un tableau de bord de plus à consulter.
Quatre appels pour obtenir
une première recommandation.
1. Obtenir un jeton d’accès (OAuth 2.0, grant client_credentials).
curl -X POST https://api.maisonnumerique.site/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=$CLIENT_ID" \
-d "client_secret=$CLIENT_SECRET" \
-d "scope=produits:lecture stocks:ecriture recommandations:lecture"
# Réponse
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "produits:lecture stocks:ecriture recommandations:lecture"
}2. Récupérer les recommandations du jour pour un magasin.
curl https://api.maisonnumerique.site/v1/recommandations?magasin=lyon-part-dieu \
-H "Authorization: Bearer $ACCESS_TOKEN"
# Réponse (extrait)
{
"data": [
{
"reference": "SKU-48213",
"type": "reassort",
"quantite_recommandee": 36,
"date_commande_conseillee": "2026-08-27",
"confiance": 0.87
}
],
"meta": { "total": 214, "page": 1 }
}3. Pousser un réassort validé vers votre ERP via la plateforme.
curl -X POST https://api.maisonnumerique.site/v1/commandes \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"magasin": "lyon-part-dieu",
"fournisseur_id": "FRN-1029",
"lignes": [
{ "reference": "SKU-48213", "quantite": 36 }
],
"origine": "recommandation_ia"
}'
# Réponse
{ "id": "CMD-88213", "statut": "en_attente_validation" }4. Recevoir la confirmation via webhook une fois la commande validée côté ERP.
POST https://votre-domaine.fr/webhooks/maison-numerique
X-MN-Signature: t=1756123200,v1=5d41402abc4b2a76b9719d911017c592
Content-Type: application/json
{
"type": "commande.validee",
"id_evenement": "evt_7f3a...",
"cree_le": "2026-08-25T09:12:00Z",
"donnees": { "id": "CMD-88213", "statut": "validee" }
}Trois langages, un même modèle de données.
npm i @maisonnumerique/sdk
import { MaisonNumerique } from "@maisonnumerique/sdk";
const client = new MaisonNumerique({
clientId: process.env.MN_CLIENT_ID,
clientSecret: process.env.MN_CLIENT_SECRET,
});
const reco = await client.recommandations.list({
magasin: "lyon-part-dieu",
});pip install maisonnumerique
from maisonnumerique import Client
client = Client(
client_id=os.environ["MN_CLIENT_ID"],
client_secret=os.environ["MN_CLIENT_SECRET"],
)
reco = client.recommandations.list(magasin="lyon-part-dieu")composer require maisonnumerique/sdk
use MaisonNumerique\Client;
$client = new Client(
clientId: getenv('MN_CLIENT_ID'),
clientSecret: getenv('MN_CLIENT_SECRET'),
);
$reco = $client->recommandations->list(['magasin' => 'lyon-part-dieu']);Les trois SDK gèrent le renouvellement automatique du jeton d’accès et la vérification de signature des webhooks. Ils couvrent les mêmes ressources que les connecteurs déjà certifiés pour 19+ systèmes, dont ERP, Caisse & encaissement, E-commerce, Données & marketing.
Ce que l'API expose.
- GET /v1/produits
- Catalogue produit et score IA associé à chaque référence.
- GET /v1/ventes
- Historique des ventes, par référence, magasin et période.
- GET /v1/stocks
- Niveau de stock par référence et par point de vente, mis à jour à chaque synchronisation.
- GET /v1/clients
- Fiches clients et segments issus de l'Intelligence Client.
- POST /v1/commandes
- Création d'une commande fournisseur, notamment pour pousser un réassort recommandé.
- GET /v1/recommandations
- Recommandations en cours : assortiment, réassort, prix et ciblage client.
- GET /v1/previsions
- Prévision de demande par référence et magasin, avec intervalle de confiance.
Signature, vérification
et gestion des rejeux.
Chaque webhook porte un en-tête X-MN-Signature au format t={horodatage},v1={hmac}. Le HMAC-SHA256 est calculé sur la concaténation horodatage.corps_brut avec votre clé de signature webhook.
Rejetez tout événement dont l’horodatage dépasse 5 minutes d’écart avec l’heure serveur, pour vous protéger d’un rejeu.
- Réessais automatiques pendant 24 heures, avec un intervalle croissant.
- Un événement identique porte toujours le même
id_evenement: utilisez-le pour dédupliquer côté récepteur. - Le journal des 90 derniers jours d’envois est consultable depuis le tableau de bord, avec le corps et le code de réponse renvoyé par votre serveur.
- Un renvoi manuel est possible depuis ce même journal.
Par forfait, pas par ressource.
- Boutique
- 60 requêtes / minute, 20 000 requêtes / jour.
- Réseau
- 300 requêtes / minute, 150 000 requêtes / jour.
- Entreprise
- Limite négociée au contrat, généralement au-delà de 1 000 requêtes / minute.
- Webhooks
- Non comptabilisés dans le quota de requêtes ; livraison avec réessais automatiques pendant 24 heures.
Codes d'erreur en français.
- 400 — requete_invalide
- Le corps de la requête ne respecte pas le schéma attendu. Le détail du champ fautif est renvoyé.
- 401 — jeton_invalide
- Le jeton d'accès est absent, expiré ou révoqué. Redemandez un jeton via /oauth/token.
- 403 — acces_refuse
- Le client OAuth authentifié n'a pas le scope nécessaire pour cette ressource.
- 404 — ressource_introuvable
- L'identifiant demandé n'existe pas ou n'appartient pas à votre compte.
- 409 — conflit_etat
- L'action demandée entre en conflit avec l'état actuel de la ressource (ex. commande déjà validée).
- 422 — regle_metier_violee
- La requête est bien formée mais viole une règle métier (ex. quantité négative).
- 429 — limite_debit_atteinte
- Le quota de requêtes du forfait est dépassé. L'en-tête Retry-After indique le délai avant nouvel essai.
- 503 — service_indisponible
- Interruption temporaire côté plateforme. Réessayez avec un backoff exponentiel.
Des versions datées,
une dépréciation annoncée à l'avance.
Version datée
Chaque version de l'API porte une date (API v2026-03). Aucun changement cassant n'est introduit sur une version déjà publiée.
Dépréciation minimale de 12 mois
Une version dépréciée reste disponible au moins 12 mois après l'annonce, avec un en-tête d'avertissement sur chaque réponse.
Spécification OpenAPI publiée
Le contrat d'interface complet est publié au format OpenAPI, généré depuis la même source que la documentation interactive.
Besoin d'un accès
au bac à sable de test ?
Nos équipes fournissent un identifiant client OAuth de test, sans engagement, pour valider une intégration avant sa mise en production.
Support intégrateurs — Réponse sous 2 jours ouvrés