
Comment utiliser l'API PrestaShop : comprendre les paramètres d'URL, les filtres et voir des exemples concrets
L'API Webservice de PrestaShop permet d'interroger et de modifier votre boutique via de simples URLs HTTP. Pour tirer le meilleur parti de cette API, il est essentiel de comprendre à quoi servent les différents arguments passés dans les URLs, comment filtrer précisément les résultats et comment les exploiter en PHP. Cette page détaille chaque paramètre clé (&ws_key;, &output_format;, &display;, &filter;, &sort;, &limit;) avec des exemples concrets d'URLs, de code PHP et de sorties JSON.
Pour aller plus loin, vous pouvez consulter la documentation officielle de PrestaShop : Documentation Webservice API PrestaShop.
L'API de PrestaShop permet aux développeurs d'interagir avec la base de données d'une boutique en ligne via une interface CRUD (Create, Read, Update, Delete). Elle offre des fonctionnalités puissantes pour intégrer, automatiser et étendre les capacités de PrestaShop.
Fonctionnalités principales de l'API Webservice
L'API Webservice de PrestaShop permet d'accéder aux ressources de la boutique, telles que les produits, les commandes, les clients, et bien plus encore. Elle est basée sur des standards modernes comme REST et JSON, ce qui la rend intuitive pour les développeurs. Cette API est idéale pour connecter PrestaShop à des systèmes externes comme des CRM, ERP ou outils marketing.
Nouvelle API Admin dans PrestaShop 9
PrestaShop 9 introduit une nouvelle API Admin basée sur le framework API Platform, offrant une extensibilité et une modularité accrues. Elle facilite les intégrations avec des systèmes tiers et permet d'automatiser les tâches de gestion de la boutique. Pour l'activer, il suffit de se rendre dans le back-office, sous Paramètres avancés > Nouveautés et fonctionnalités expérimentales, et d'activer l'option correspondante.
Avantages de l'API Admin
- Intégrations simplifiées : Connexion facile avec des systèmes externes.
- Automatisation : Réduction des tâches manuelles grâce à des processus automatisés.
- Conformité aux standards : Utilisation de REST et JSON pour une prise en main rapide.
- Évolutivité : Conçue pour s'adapter aux besoins futurs de la communauté.
Considérations importantes
L'API Admin est encore en développement, avec de nouveaux endpoints prévus dans les prochaines mises à jour. Elle est gratuite pour tous les utilisateurs de PrestaShop 9, mais une connaissance de base des API REST et du format JSON est recommandée pour l'utiliser efficacement.
Sommaire
- Structure de base d'une URL API PrestaShop
- Paramètre ws_key : authentification par clé API
- Paramètre output_format : XML ou JSON
- Paramètre display : sélectionner les champs utiles
- Paramètre filter : filtrer les résultats
- Paramètre sort : trier les données
- Paramètre limit : paginer les résultats
- Exemples complets d'URLs combinant plusieurs paramètres
- Exemples de code PHP et sorties attendues
- Bonnes pratiques pour vos appels API
Structure de base d'une URL API PrestaShop
Une URL d'appel à l'API PrestaShop suit toujours la même logique : on part de l'URL de la boutique, puis on ajoute /api/ suivi de la ressource, et enfin les différents paramètres de requête. Cette structure est valable pour les produits, les commandes, les clients, les catégories et toutes les autres ressources disponibles.
https://maboutique.com/api/?param1=valeur1¶m2=valeur2 Par exemple, pour lister les produits en JSON avec une clé API, l'URL ressemblera à ceci :
https://maboutique.com/api/products?ws_key=VOTRE_CLE_API&output_format=JSONParamètre ws_key : authentification par clé API
Le paramètre ws_key est le plus important : il contient la clé API qui authentifie l'appelant. Cette clé est générée dans le back-office PrestaShop (Paramètres avancés > Webservice) et remplace un couple identifiant/mot de passe traditionnel. Sans cette clé, l'API renvoie une erreur d'authentification.
https://maboutique.com/api/orders?ws_key=VOTRE_CLE_APIConcrètement, ws_key permet à PrestaShop de savoir qui appelle l'API et quels droits lui accorder. Vous pouvez créer plusieurs clés avec des permissions différentes : par exemple lecture seule sur les produits pour un comparateur de prix, ou lecture/écriture sur les commandes pour un ERP.
Paramètre output_format : XML ou JSON
Par défaut, l'API PrestaShop renvoie les résultats au format XML. Le paramètre output_format permet de demander un autre format, notamment JSON qui est plus simple à manipuler dans beaucoup de langages. Si vous ne précisez rien, vous obtiendrez du XML.
https://maboutique.com/api/products?ws_key=VOTRE_CLE_API&output_format=JSONUtiliser output_format=JSON est très pratique pour consommer l'API depuis des applications modernes (SPA, Node.js, scripts front) ou des outils comme Postman. Vous pouvez ainsi parser les réponses en un seul appel à json_decode en PHP.
Paramètre display : sélectionner les champs utiles
Le paramètre display permet de limiter les champs retournés par l'API. Par défaut, PrestaShop renvoie l'intégralité de la ressource, ce qui peut être lourd si vous avez beaucoup de colonnes et de traductions. Avec display, vous pouvez cibler uniquement les informations dont vous avez besoin.
https://maboutique.com/api/products
?ws_key=VOTRE_CLE_API
&output_format=JSON
&display=[id,reference,name,price]Dans cet exemple, seuls les champs id, reference, name et price seront renvoyés. C'est très utile pour accélérer les réponses et éviter de traiter des kilo-octets de données inutiles, en particulier lorsque vous chargez des listes de centaines de produits.
Paramètre filter : filtrer les résultats
Le paramètre filter permet d'appliquer des conditions sur les champs de la ressource afin de ne récupérer qu'une partie des données. Les filtres se notent sous la forme filter[champ]=condition et peuvent utiliser différents opérateurs (valeur exacte, liste, intervalle, recherche par motif).
Filtrer sur une valeur exacte
Pour récupérer un client avec un identifiant précis, on utilise une valeur directe dans le filtre :
https://maboutique.com/api/customers
?ws_key=VOTRE_CLE_API
&filter[id]=42
&output_format=JSONIci, seuls les clients dont l'id est égal à 42 seront retournés. C'est équivalent à un WHERE id = 42 en SQL et permet de cibler très précisément une ressource.
Filtrer sur plusieurs valeurs (IN)
Pour filtrer sur plusieurs valeurs possibles, PrestaShop utilise une syntaxe entre crochets. Cela permet par exemple de récupérer seulement certains produits :
https://maboutique.com/api/products
?ws_key=VOTRE_CLE_API
&filter[id]=[1|5|9]
&output_format=JSONDans ce cas, l'API renverra uniquement les produits dont l'identifiant est 1, 5 ou 9. C'est très pratique pour récupérer un lot de produits précis à partir d'une liste d'IDs provenant d'un autre système.
Filtrer sur un intervalle de valeurs
Vous pouvez aussi définir un intervalle, par exemple pour cibler les commandes d'un certain montant ou les produits dans une tranche de prix. Pour cela, on utilise la syntaxe [valeur_min,valeur_max].
https://maboutique.com/api/orders
?ws_key=VOTRE_CLE_API
&filter[total_paid_real]=[50,200]
&output_format=JSONCette URL renvoie toutes les commandes dont le montant payé est compris entre 50 et 200. C'est l'équivalent d'un BETWEEN en SQL et c'est idéal pour générer des rapports ou synchroniser seulement une zone de chiffre d'affaires.
Filtrer avec des motifs (LIKE)
PrestaShop permet aussi les recherches par motif, en utilisant le caractère joker % comme en SQL. La syntaxe reste basée sur filter[champ]=motif, mais avec le signe % pour représenter n'importe quelle suite de caractères.
https://maboutique.com/api/customers
?ws_key=VOTRE_CLE_API
&filter[email]=%gmail.com%
&output_format=JSONCet appel permet de lister tous les clients dont l'adresse e-mail contient gmail.com. C'est utile pour des statistiques marketing ou des exports ciblés vers un outil d'emailing.
Paramètre sort : trier les données
Le paramètre sort permet d'indiquer dans quel ordre vous souhaitez recevoir les résultats. La syntaxe est sort=[champ_ASC] ou sort=[champ_DESC] selon que vous vouliez un tri croissant ou décroissant. Ce tri est appliqué côté serveur avant l'envoi de la réponse.
https://maboutique.com/api/orders
?ws_key=VOTRE_CLE_API
&sort=[date_add_DESC]
&output_format=JSONDans cet exemple, les commandes seront renvoyées de la plus récente à la plus ancienne. Cela vous évite d'avoir à retrier les résultats côté client et permet de ne traiter que les derniers enregistrements si vous combinez aussi avec limit.
Paramètre limit : paginer les résultats
Le paramètre limit permet de limiter le nombre de lignes renvoyées par l'API et de paginer les résultats. La syntaxe est limit=n pour récupérer les n premiers enregistrements, ou limit=offset,n pour sauter un certain nombre de lignes.
https://maboutique.com/api/products
?ws_key=VOTRE_CLE_API
&output_format=JSON
&limit=20Cette URL renvoie les 20 premiers produits. Pour récupérer la page suivante, vous pouvez utiliser un décalage :
https://maboutique.com/api/products
?ws_key=VOTRE_CLE_API
&output_format=JSON
&limit=20,20Ici, l'API saute les 20 premiers produits et renvoie les 20 suivants. Cette pagination est indispensable si votre catalogue contient des milliers d'articles pour éviter des réponses trop volumineuses.
Pour aller plus loin, vous pouvez consulter la documentation officielle de PrestaShop : Documentation Webservice API PrestaShop.
Exemples complets d'URLs combinant plusieurs paramètres
Dans la pratique, vous combinerez souvent plusieurs paramètres pour affiner vos requêtes. Voici quelques exemples concrets directement utilisables dans des scripts, Postman ou votre propre code PHP.
Exemple 1 : derniers produits actifs au-dessus d'un certain prix
https://maboutique.com/api/products
?ws_key=VOTRE_CLE_API
&output_format=JSON
&display=[id,reference,name,price,active]
&filter[active]=1
&filter[price]=[20,1000]
&sort=[id_DESC]
&limit=50Cette URL renvoie les 50 derniers produits actifs dont le prix est compris entre 20 et 1000 euros, en ne retournant que les champs essentiels. C'est typiquement le genre de requête utile pour alimenter un catalogue externe ou un comparateur de prix.
Exemple 2 : commandes du mois courant triées par date
https://maboutique.com/api/orders
?ws_key=VOTRE_CLE_API
&output_format=JSON
&display=[id,id_customer,total_paid_real,date_add]
&filter[date_add]=[2026-01-01,2026-01-31]
&sort=[date_add_ASC]Ici, on filtre les commandes sur un intervalle de dates correspondant au mois de janvier 2026. Le tri croissant sur date_add permet de traiter les commandes dans l'ordre de passage, par exemple pour une synchronisation comptable ou logistique.
Exemple 3 : recherche de clients par domaine e-mail
https://maboutique.com/api/customers
?ws_key=VOTRE_CLE_API
&output_format=JSON
&display=[id,firstname,lastname,email]
&filter[email]=%gmail.com%
&limit=100Cette requête permet de récupérer jusqu'à 100 clients utilisant une adresse Gmail. C'est un bon point de départ pour un export vers un outil d'emailing ou pour analyser les fournisseurs d'adresses les plus utilisés.
Pour aller plus loin, vous pouvez consulter la documentation officielle de PrestaShop : Documentation Webservice API PrestaShop.
Exemples de code PHP et sorties attendues
Pour exploiter concrètement ces URLs dans un projet PHP, vous pouvez utiliser cURL. Les exemples suivants supposent que vous utilisez output_format=JSON pour simplifier le traitement des réponses.
Lister les produits en PHP
$shopUrl . '/api/products?output_format=JSON&display=[id,reference,name,price]',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => $apiKey . ':', // cle:motdepasse_vide
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new \RuntimeException('Erreur cURL : ' . curl_error($ch));
}
curl_close($ch);
$data = json_decode($response, true);
// Selon la version, les données sont souvent sous la clé "products"
foreach ($data['products'] as $product) {
$id = $product['id'];
$name = $product['name'][0]['value']; // langue par défaut
$price = $product['price'];
echo $id . ' - ' . $name . ' - ' . $price . PHP_EOL;
}
Récupérer le détail d'un produit
$shopUrl . '/api/products/' . $productId . '?output_format=JSON',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => $apiKey . ':',
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new \RuntimeException('Erreur cURL : ' . curl_error($ch));
}
curl_close($ch);
$product = json_decode($response, true);
// Exemple d'accès à quelques champs
$name = $product['product']['name'][0]['value'];
$description = $product['product']['description'][0]['value'];
$price = $product['product']['price'];
echo 'Nom : ' . $name . PHP_EOL;
echo 'Prix : ' . $price . PHP_EOL;
Créer un produit via l'API (POST)
Pour créer un nouveau produit, la méthode classique consiste à construire un XML conforme au schéma retourné par ?schema=blank, puis à l'envoyer en POST. Voici un exemple minimal :
2 29.90 1 Tee-shirt API tee-shirt-api
XML;
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $shopUrl . '/api/products',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => $apiKey . ':',
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/xml'],
CURLOPT_POSTFIELDS => $xml,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new \RuntimeException('Erreur cURL : ' . curl_error($ch));
}
curl_close($ch);
echo $response;
La réponse contiendra généralement l'ID du produit nouvellement créé. Vous pouvez le vérifier en décodant le XML ou en appelant ensuite /api/products?sort=[id_DESC]&limit=1 pour récupérer le dernier produit.
Mettre à jour un produit existant (PUT)
La mise à jour se fait en récupérant d'abord la ressource, en modifiant les champs souhaités puis en renvoyant le XML complet en PUT.
product->price = 34.90;
// 3. Envoyer la ressource mise à jour en PUT
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $shopUrl . '/api/products/' . $productId,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_USERPWD => $apiKey . ':',
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_HTTPHEADER => ['Content-Type: application/xml'],
CURLOPT_POSTFIELDS => $prestashopXml->asXML(),
]);
$response = curl_exec($ch);
if ($response === false) {
throw new \RuntimeException('Erreur cURL : ' . curl_error($ch));
}
curl_close($ch);
echo $response;
Si tout se déroule correctement, la réponse indiquera que le produit a été mis à jour. Vous pouvez ensuite vérifier dans le back-office PrestaShop que le nouveau prix est bien appliqué.
Pour aller plus loin, vous pouvez consulter la documentation officielle de PrestaShop : Documentation Webservice API PrestaShop.
Bonnes pratiques pour vos appels API
Pour utiliser l'API PrestaShop de manière efficace et sécurisée, quelques règles simples sont à respecter. Elles vous évitent des lenteurs, des erreurs et des risques de sécurité lors de vos intégrations avec d'autres systèmes (ERP, CRM, SaaS maison).
- Utiliser systématiquement le protocole HTTPS pour ne pas transmettre la clé
ws_keyen clair. - Limiter les permissions des clés API au strict nécessaire (par exemple lecture seule sur les produits pour un partenaire externe).
- Combiner
display,filteretlimitpour réduire la taille des réponses et accélérer vos traitements. - Logguer les réponses d'erreur (codes HTTP 400, 401, 403, 404, 500) pour faciliter le débogage.
- Tester vos requêtes dans un environnement de préproduction avant d'exécuter des appels
POSTouPUTen production.
Une fois ces paramètres bien compris, l'API PrestaShop devient un véritable centre nerveux pour automatiser votre boutique : synchronisation de stocks, exports produits, connexion à un ERP ou à des outils marketing avancés. Vous pouvez progressivement enrichir vos appels en ajoutant de nouveaux filtres ou tris, tout en gardant le contrôle complet sur la quantité et la qualité des données récupérées.
Pour aller plus loin, vous pouvez consulter la documentation officielle de PrestaShop : Documentation Webservice API PrestaShop.


