Documentation technique
Brancher votre boutique sur notre catalogue
Quatre adresses suffisent : lire le catalogue, lire une fiche, envoyer une commande, suivre une commande. Les prix renvoyés sont ceux de votre compte, remise comprise. Tout est en JSON, en UTF-8, et les montants sont en centimes — jamais en décimales, pour qu'aucun arrondi ne se glisse entre nous.
Pas encore de compte ? Demandez-en un : il faut une clé pour appeler ces adresses.
Avant tout
Votre clé
Chaque appel porte votre clé dans l'en-tête Authorization. Elle commence par pro_ et ne doit jamais apparaître dans une adresse, dans du code envoyé au navigateur, ni dans un dépôt partagé : elle donne le droit de commander en votre nom.
Nous ne conservons pas votre clé, seulement son empreinte. Elle ne vous est montrée qu'au moment où nous la créons. Perdue, elle ne se retrouve pas : nous en créons une autre et nous révoquons l'ancienne. Vous pouvez avoir plusieurs clés en même temps — une par boutique, ou une pour vos essais — et en révoquer une sans toucher aux autres.
L'en-tête, sur chaque appel
Authorization: Bearer pro_VotreCleIciVérifier que tout fonctionne
curl -s -H "Authorization: Bearer pro_VotreCleIci" \
"https://www.estellalingerie.com/api/pro/v1/catalogue?limite=1"Les prix
Ce que renvoie le catalogue, et ce qui sera facturé
prixProCents est le prix au premier palier de votre compte. C'est un plancher de prudence : le palier réel se calcule sur le sous-total au prix public de la commande, qu'un catalogue ne peut pas connaître à l'avance. Votre facture sera donc égale ou inférieure à ce que le catalogue annonce, jamais supérieure.
Le barème part dans chaque réponse de catalogue, sous bareme : si vous voulez afficher le bon prix dans votre propre interface, calculez-le vous-même à partir du sous-total public. Et POST /commandes renvoie de toute façon le chiffrage ferme, ligne par ligne.
Quand origine vaut grille, le prix vient d'un accord négocié sur ce produit : il ne bouge pas avec le montant de la commande.
- Jusqu'à 500 € de sous-total public
- −30 %
- À partir de 500 € de sous-total public
- −35 %
- À partir de 2 000 € de sous-total public
- −40 %
Les adresses
Quatre points d'entrée
Toutes relatives à https://www.estellalingerie.com/api/pro/v1
GET/catalogue
Le catalogue, à vos prix
Une ligne par produit, une entrée par variante (taille et couleur). Le stock est celui de l'entrepôt au moment de l'appel : c'est la même valeur que celle qui décide d'accepter une commande.
La pagination se fait par curseur et non par numéro de page : le catalogue bouge pendant une synchronisation, et un numéro de page ferait sauter ou répéter des fiches.
Avec depuis, une fiche remonte dès qu'une de ses variantes a changé — un prix, un code-barres, ou simplement le stock. Une synchronisation de nuit suffit donc à tenir vos ruptures à jour, sans relire tout le catalogue. En revanche elle peut remonter plus que nécessaire : nos propres imports réécrivent parfois des variantes sans rien y changer. Trop, jamais trop peu.
limite- De 1 à 100 fiches par page. 50 par défaut.
apres- Curseur : la valeur de suite renvoyée par la page précédente. Reprenez tant que suite n'est pas null.
depuis- Date ISO. Ne renvoie que les fiches modifiées depuis — et une fiche compte comme modifiée dès qu'une de ses variantes bouge, prix ou stock. C'est donc avec cela qu'on suit les ruptures.
Exemple
curl -s -H "Authorization: Bearer pro_VotreCleIci" \
"https://www.estellalingerie.com/api/pro/v1/catalogue?limite=50"
# page suivante
curl -s -H "Authorization: Bearer pro_VotreCleIci" \
"https://www.estellalingerie.com/api/pro/v1/catalogue?limite=50&apres=clz8k2p0a0001"
# depuis hier : fiches, prix et stocks modifiés depuis
curl -s -H "Authorization: Bearer pro_VotreCleIci" \
"https://www.estellalingerie.com/api/pro/v1/catalogue?depuis=2026-10-31T00:00:00Z"Réponse (extrait)
{
"compte": { "entreprise": "Votre Boutique", "reglement": "Sur encours à 30 jours",
"colisNeutre": true, "expeditionDirecte": false, "remiseNegocieePct": null },
"bareme": [{"aPartirDeCents":0,"remisePct":30},{"aPartirDeCents":50000,"remisePct":35},{"aPartirDeCents":200000,"remisePct":40}],
"produits": [
{ "handle": "ensemble-dentelle-noir", "titre": "Ensemble dentelle noir",
"ligne": "Jardin Secret", "type": "Ensemble",
"image": "https://…/photo.webp", "maj": "2026-10-28T09:14:00.000Z",
"variantes": [
{ "id": "clz…", "sku": "ENS-DN-M", "ean": "3701234567890",
"titre": "Noir / M", "couleur": "Noir", "taille": "M",
"stock": 14, "prixPublicCents": 5900, "prixProCents": 4130, "origine": "palier" }
] }
],
"suite": "clz8k2p0a0001"
}GET/produits/{handle}
Une fiche complète
Le handle est celui de l'adresse publique (/products/{handle}) : une pièce repérée sur la boutique se demande directement, sans table de correspondance. La réponse ajoute la description et toutes les photos.
Exemple
curl -s -H "Authorization: Bearer pro_VotreCleIci" \
"https://www.estellalingerie.com/api/pro/v1/produits/ensemble-dentelle-noir"POST/commandes
Envoyer une commande
La commande part directement en préparation : il n'y a pas de validation intermédiaire, pas de panier à confirmer, et pas de paiement en ligne. Le règlement suit le mode convenu pour votre compte.
Réponse 201 à la création, 200 avec doublon: true si la référence existe déjà. Si un appel échoue sans réponse claire, réessayez avec la même référence : c'est précisément à cela qu'elle sert.
Le stock est vérifié ligne par ligne avant d'écrire quoi que ce soit. En cas d'insuffisance, rien n'est créé et la réponse dit ce qui reste disponible.
reference- Votre numéro de commande. Obligatoire, et c'est lui qui empêche les doublons : deux envois de la même référence ne créent qu'une commande.
lignes[].variantId / sku / ean- L'un des trois suffit à désigner la variante. Deux lignes sur la même variante sont additionnées.
lignes[].quantite- De 1 à 999. 200 lignes au maximum par commande.
livraison- Adresse de livraison. Obligatoire si votre compte est en expédition directe : c'est celle de votre cliente.
note- 500 caractères au plus, lus par la personne qui emballe.
Exemple
curl -s -X POST \
-H "Authorization: Bearer pro_VotreCleIci" \
-H "Content-Type: application/json" \
-d '{
"reference": "CMD-2026-0042",
"lignes": [
{ "sku": "ENS-DN-M", "quantite": 3 },
{ "ean": "3701234567890", "quantite": 2 }
],
"livraison": {
"nom": "Marie Durand",
"ligne1": "12 rue des Lilas",
"codePostal": "75011", "ville": "Paris", "pays": "FR",
"telephone": "+33600000000"
},
"note": "Cadeau : merci de ne pas joindre de prix."
}' \
"https://www.estellalingerie.com/api/pro/v1/commandes"Réponse (extrait)
{
"doublon": false,
"commande": {
"id": "clz…", "numero": 10482, "reference": "CMD-2026-0042",
"statut": "en préparation", "totalCents": 20650, "devise": "eur",
"chiffrage": {
"sousTotalPublicCents": 29500, "sousTotalProCents": 20650,
"economieCents": 8850, "remiseEffectivePct": 30, "palierPct": 30,
"prochainPalier": { "remisePct": 35, "manqueCents": 20500 },
"lignes": [ { "variantId": "clz…", "quantite": 3, "prixPublicCents": 5900,
"prixUnitaireCents": 4130, "totalCents": 12390, "origine": "palier" } ]
}
}
}GET/commandes et /commandes/{id}
Suivre vos commandes
statut est écrit en français, pour être affiché tel quel à votre cliente ; statutCle est stable et sert à brancher du code (PREPARING, SHIPPED, DELIVERED, CANCELLED, REFUNDED).
suivi apparaît dès l'expédition. C'est là que vous récupérez le numéro de suivi à transmettre à votre cliente — nous ne le lui envoyons jamais nous-mêmes.
limite- De 1 à 100 commandes. 25 par défaut.
apres- Curseur, comme pour le catalogue.
Exemple
# vos dernières commandes
curl -s -H "Authorization: Bearer pro_VotreCleIci" "https://www.estellalingerie.com/api/pro/v1/commandes"
# une commande, par identifiant ou par numéro
curl -s -H "Authorization: Bearer pro_VotreCleIci" "https://www.estellalingerie.com/api/pro/v1/commandes/10482"Réponse (extrait)
{
"commande": {
"id": "clz…", "numero": 10482, "reference": "CMD-2026-0042",
"statut": "expédiée", "statutCle": "SHIPPED", "totalCents": 20650,
"suivi": { "numero": "6A12345678901", "transporteur": "Colissimo",
"expedieLe": "2026-11-03T08:12:00.000Z" },
"creeLe": "2026-11-01T17:40:00.000Z",
"lignes": [ { "produit": "Ensemble dentelle noir", "variante": "Noir / M",
"sku": "ENS-DN-M", "quantite": 3,
"prixUnitaireCents": 4130, "totalCents": 12390 } ]
}
}Sans développeur
Le catalogue en fichier
La même information, en CSV : une ligne par variante, un point-virgule en séparateur, et un en-tête que Shopify, WooCommerce, Wix et PrestaShop savent lire. Les prix sont en euros avec deux décimales dans ce fichier — c'est ce que les importateurs attendent.
Colonnes : handle, produit, ligne, type, variante, taille, couleur, sku, ean, stock, prix_public_eur, prix_pro_eur, origine_prix, image, modifie_le.
Si votre boutique sait envoyer un en-tête Authorization sur une importation planifiée, pointez-la sur cette adresse et elle se tiendra à jour seule. Beaucoup n'en sont pas capables : dans ce cas, dites-le-nous et nous vous envoyons le fichier chaque matin par e-mail.
Télécharger le fichier
curl -s -H "Authorization: Bearer pro_VotreCleIci" \
-o catalogue.csv \
"https://www.estellalingerie.com/api/pro/v1/catalogue.csv"WordPress et WooCommerce
Le module
Le module fait, depuis l'administration de WordPress, ce que fait l'API : il importe les fiches, les photos et les tailles, applique votre marge, tient le stock à jour et renvoie vos commandes chez nous. Vous n'y collez qu'une chose, votre clé.
Il n'est pas encore en téléchargement libre. Nous l'installons avec vous, sur demande, pendant l'ouverture de votre compte — et nous préférons le dire plutôt que de vous laisser chercher un lien qui n'existe pas. Indiquez « module WordPress » dans votre demande et nous prenons rendez-vous.
Entre-temps, une extension d'importation CSV planifiée fait très bien le travail avec le fichier décrit ci-dessus.
Limites
Ce que l'API accepte
- Lectures
- 120 appels par minute et par clé. Une synchronisation nocturne de tout le catalogue tient largement dedans.
- Créations de commande
- 20 par minute et par clé.
- Taille d'une commande
- 200 lignes, 999 pièces par ligne.
- Pagination
- 100 fiches ou commandes par page au maximum.
- Dépassement
- Code 429 et le message dit combien de temps attendre. Aucune pénalité : le compteur se remet à zéro après 60 secondes.
- Mise en cache
- Aucune. Les réponses contiennent vos prix : ne les mettez pas dans un cache partagé, chez vous non plus.
Erreurs
Chaque refus dit quoi faire
Toutes les erreurs ont la même forme : { error: { code, message, details? } }. Branchez votre code sur code, montrez message à l'utilisateur.
| Code | HTTP | Que faire |
|---|---|---|
cle_absente | 401 | L'en-tête Authorization manque. Vérifiez que votre client l'envoie bien : certaines bibliothèques le retirent en suivant une redirection. |
cle_invalide | 401 | La clé n'existe pas. Recopiez-la sans espace ni retour à la ligne ; si le doute persiste, demandez-nous une nouvelle clé. |
cle_revoquee | 401 | La clé a été désactivée. Nous vous en créons une autre : écrivez-nous. |
compte_suspendu | 403 | Le compte est fermé, le plus souvent pour une facture en attente. Rien ne se débloque côté technique. |
compte_inactif | 403 | Le compte n'est pas encore ouvert. Nous revenons vers vous sous 48 heures ouvrées. |
debit_depasse | 429 | Trop d'appels dans la minute. Attendez une minute, puis espacez vos appels — une synchronisation n'a pas besoin d'aller plus vite. |
champs_invalides | 422 | Un champ de la commande est mal formé. La réponse contient details : la liste exacte des champs, un par ligne. |
ligne_introuvable | 422 | Une référence ne correspond à aucun article en vente. Relisez le catalogue : la pièce a pu être retirée. |
stock_insuffisant | 409 | Le stock ne suffit pas. La réponse dit, pour chaque ligne, ce qui reste disponible. Rien n'a été créé. |
plafond | 402 | Votre encours dépasse le plafond accordé. Réglez une facture en attente ou réduisez la commande. |
livraison_requise | 422 | Votre compte est en expédition directe : l'adresse de votre cliente est obligatoire. |
erreur_interne | 500 | Rien n'a pu être enregistré. Réessayez avec la MÊME référence : elle ne créera pas de doublon. |
Une question, un cas qui n'entre pas dans ce qui précède, un besoin de champ supplémentaire ? Écrivez à contact@estellalingerie.com : c'est la même adresse que pour le reste, et c'est nous qui répondons.
Demander un compte revendeur