{"id":444869,"date":"2026-09-18T00:57:41","date_gmt":"2026-09-17T22:57:41","guid":{"rendered":"https:\/\/www.kafinea.com\/documentation\/uncategorized\/api-rest-import-en-masse\/"},"modified":"2026-09-18T00:57:51","modified_gmt":"2026-09-17T22:57:51","password":"","slug":"api-rest-import-en-masse","status":"publish","type":"docs","link":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/","title":{"rendered":"API REST &#8211; Import en masse (upsert)"},"content":{"rendered":"<p>Cette page d\u00e9crit l&rsquo;op\u00e9ration \u00e0 utiliser pour <strong>charger ou mettre \u00e0 jour beaucoup d&rsquo;enregistrements<br \/>\nd&rsquo;un coup<\/strong>, en les d\u00e9signant par une <strong>clef m\u00e9tier<\/strong> (un code article, une r\u00e9f\u00e9rence client, une<br \/>\nr\u00e9f\u00e9rence boutique) plut\u00f4t que par leur identifiant Kafinea.<\/p>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>Op\u00e9ration<\/th>\n<th>M\u00e9thode<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>mass_upsert<\/code><\/td>\n<td>POST<\/td>\n<td>\u00c9crire un lot d&rsquo;enregistrements identifi\u00e9s par une clef m\u00e9tier<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Elle est <strong>g\u00e9n\u00e9rique<\/strong> : elle fonctionne pour tous les modules, avec la clef que vous choisissez.<\/p>\n<blockquote>\n<p><strong>R\u00e9serv\u00e9e aux administrateurs.<\/strong> Charger un lot d&rsquo;enregistrements est un travail de reprise de<br \/>\ndonn\u00e9es. Un compte non administrateur garde <code>create<\/code> et <code>update<\/code>, un enregistrement \u00e0 la fois, avec<br \/>\nses propres droits.<\/p>\n<\/blockquote>\n<hr \/>\n<h2>Pourquoi pas <code>create<\/code> ou <code>update<\/code> ?<\/h2>\n<p>Les op\u00e9rations <a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-operations-crud\/\"><code>create<\/code> et <code>update<\/code><\/a> restent la bonne r\u00e9ponse quand vous<br \/>\n\u00e9crivez un enregistrement \u00e0 la fois. Pour une reprise de donn\u00e9es, elles butent sur deux points :<\/p>\n<ul>\n<li><strong>le volume<\/strong> : un enregistrement par appel, soit 16 000 appels pour 16 000 clients ;<\/li>\n<li><strong>la reprise apr\u00e8s interruption<\/strong> : <code>create<\/code> cr\u00e9e toujours. Un import coup\u00e9 au milieu ne peut pas<br \/>\n\u00eatre relanc\u00e9 sans nettoyer d&rsquo;abord ce qui est d\u00e9j\u00e0 pass\u00e9, et <code>update<\/code> demande de conna\u00eetre<br \/>\nl&rsquo;identifiant Kafinea, que vous n&rsquo;avez justement pas encore.<\/li>\n<\/ul>\n<p><code>mass_upsert<\/code> retrouve l&rsquo;enregistrement par sa clef m\u00e9tier : il met \u00e0 jour ce qui existe, cr\u00e9e ce qui<br \/>\nmanque, et <strong>n&rsquo;\u00e9crit rien<\/strong> quand les valeurs envoy\u00e9es sont d\u00e9j\u00e0 celles en place. Vous pouvez donc<br \/>\nrelancer le m\u00eame lot autant de fois que n\u00e9cessaire.<\/p>\n<hr \/>\n<h2>Upsert \u2013 \u00c9crire un lot d&rsquo;enregistrements<\/h2>\n<blockquote>\n<p><strong>POST<\/strong> <code>https:\/\/apps.kafinea.com\/{instance}\/webservice.php<\/code><\/p>\n<\/blockquote>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>Param\u00e8tre<\/th>\n<th>Type<\/th>\n<th>Requis<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>operation<\/code><\/td>\n<td>string<\/td>\n<td>oui<\/td>\n<td>Doit \u00eatre <code>mass_upsert<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>sessionName<\/code><\/td>\n<td>string<\/td>\n<td>oui<\/td>\n<td>Identifiant de session<\/td>\n<\/tr>\n<tr>\n<td><code>elementType<\/code><\/td>\n<td>string<\/td>\n<td>oui<\/td>\n<td>Nom du module (ex : <code>Products<\/code>, <code>Accounts<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><code>keyFields<\/code><\/td>\n<td>JSON<\/td>\n<td>oui<\/td>\n<td>Noms techniques des champs formant la clef m\u00e9tier<\/td>\n<\/tr>\n<tr>\n<td><code>elements<\/code><\/td>\n<td>JSON<\/td>\n<td>oui<\/td>\n<td>Tableau des enregistrements (500 au maximum par appel)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Chaque \u00e9l\u00e9ment de <code>elements<\/code> est un objet <code>champ : valeur<\/code>, <strong>clef comprise<\/strong>. Les noms techniques des<br \/>\nchamps se lisent avec <a href=\"100_champs-de-module.md\"><code>describe<\/code><\/a>.<\/p>\n<p><strong>Exemple curl :<\/strong> mettre \u00e0 jour le poids et le pays d&rsquo;origine d&rsquo;articles reconnus par leur code.<\/p>\n<pre><code class=\"language-bash\">curl -X POST https:\/\/apps.kafinea.com\/YourKafinea\/webservice.php \\\n  -d &quot;operation=mass_upsert&quot; \\\n  -d &quot;sessionName=YOUR_SESSION_ID&quot; \\\n  -d &quot;elementType=Products&quot; \\\n  -d 'keyFields=[&quot;productcode&quot;]' \\\n  -d 'elements=[\n        {&quot;productcode&quot;:&quot;9782070413110&quot;,&quot;productname&quot;:&quot;Le Petit Prince&quot;,&quot;mdsweight&quot;:&quot;0.180&quot;,&quot;mdsorigincountry&quot;:&quot;FRA&quot;},\n        {&quot;productcode&quot;:&quot;9782070368228&quot;,&quot;productname&quot;:&quot;La Peste&quot;,&quot;mdsweight&quot;:&quot;0.150&quot;,&quot;mdsorigincountry&quot;:&quot;FRA&quot;}\n      ]'\n<\/code><\/pre>\n<h3>R\u00e9ponse<\/h3>\n<pre><code class=\"language-json\">{\n  &quot;success&quot;: true,\n  &quot;result&quot;: {\n    &quot;module&quot;: &quot;Products&quot;,\n    &quot;keyFields&quot;: [&quot;productcode&quot;],\n    &quot;processed&quot;: 2,\n    &quot;created&quot;: 1,\n    &quot;updated&quot;: 1,\n    &quot;unchanged&quot;: 0,\n    &quot;records&quot;: [\n      { &quot;index&quot;: 0, &quot;id&quot;: &quot;14x8842&quot;, &quot;outcome&quot;: &quot;updated&quot; },\n      { &quot;index&quot;: 1, &quot;id&quot;: &quot;14x9317&quot;, &quot;outcome&quot;: &quot;created&quot; }\n    ],\n    &quot;errors&quot;: []\n  }\n}\n<\/code><\/pre>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>Champ<\/th>\n<th>Signification<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>processed<\/code><\/td>\n<td>Nombre d&rsquo;enregistrements trait\u00e9s sans erreur<\/td>\n<\/tr>\n<tr>\n<td><code>created<\/code><\/td>\n<td>La clef \u00e9tait inconnue : l&rsquo;enregistrement vient d&rsquo;\u00eatre cr\u00e9\u00e9<\/td>\n<\/tr>\n<tr>\n<td><code>updated<\/code><\/td>\n<td>La clef existait et au moins une valeur envoy\u00e9e \u00e9tait diff\u00e9rente<\/td>\n<\/tr>\n<tr>\n<td><code>unchanged<\/code><\/td>\n<td>La clef existait et tout \u00e9tait d\u00e9j\u00e0 \u00e0 jour : rien n&rsquo;a \u00e9t\u00e9 \u00e9crit<\/td>\n<\/tr>\n<tr>\n<td><code>records<\/code><\/td>\n<td>Le d\u00e9tail ligne par ligne, avec la <strong>position dans le lot<\/strong> et l&rsquo;identifiant obtenu<\/td>\n<\/tr>\n<tr>\n<td><code>errors<\/code><\/td>\n<td>Les lignes refus\u00e9es, avec leur position dans le lot et le motif<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<hr \/>\n<h2>Choisir la clef m\u00e9tier<\/h2>\n<p>La clef est celle que vous nommez dans <code>keyFields<\/code>, et elle peut compter plusieurs champs. Elle doit<br \/>\nd\u00e9signer <strong>un seul<\/strong> enregistrement : si la clef envoy\u00e9e en retrouve plusieurs, la ligne est refus\u00e9e<br \/>\navec ce motif plut\u00f4t que d&rsquo;en choisir un au hasard. Corrigez la donn\u00e9e en double, puis renvoyez la<br \/>\nligne.<\/p>\n<p>Quelques clefs usuelles :<\/p>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>Ce que vous importez<\/th>\n<th>Clef m\u00e9tier<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Des articles<\/td>\n<td><code>[&quot;productcode&quot;]<\/code><\/td>\n<\/tr>\n<tr>\n<td>Des correspondances d&rsquo;identifiants externes<\/td>\n<td><code>[&quot;sourcesystem&quot;,&quot;objecttype&quot;,&quot;externalref&quot;]<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Les valeurs de clef sont compar\u00e9es apr\u00e8s suppression des espaces de d\u00e9but et de fin. Une valeur de<br \/>\nclef vide fait refuser la ligne : une clef m\u00e9tier ne se devine pas.<\/p>\n<hr \/>\n<h2>Rejouable : relancez sans crainte<\/h2>\n<p>L&rsquo;op\u00e9ration est <strong>idempotente<\/strong>. Le m\u00eame lot envoy\u00e9 deux fois donne <code>unchanged<\/code> au second passage :<br \/>\nni doublon, ni date de modification inutilement remu\u00e9e, ni ligne d&rsquo;historique parasite sur les fiches.<\/p>\n<p>De m\u00eame, <strong>une ligne fautive n&rsquo;annule pas les autres<\/strong> : les lignes valides du lot sont \u00e9crites, les<br \/>\nlignes refus\u00e9es reviennent dans <code>errors<\/code> avec leur position, \u00e0 corriger puis \u00e0 renvoyer seules.<\/p>\n<p>En revanche, si le param\u00e8tre <code>elements<\/code> lui-m\u00eame n&rsquo;est pas lisible (JSON invalide, plus de 500<br \/>\n\u00e9l\u00e9ments), l&rsquo;appel entier est refus\u00e9 : \u00e9crire la moiti\u00e9 d&rsquo;un lot incompr\u00e9hensible serait pire que de<br \/>\nn&rsquo;en \u00e9crire aucune partie.<\/p>\n<p>Enfin, l&rsquo;op\u00e9ration n&rsquo;ouvre aucune porte d\u00e9rob\u00e9e : elle applique les m\u00eames droits et les m\u00eames<br \/>\ncontr\u00f4les de champs obligatoires que <code>create<\/code> et <code>update<\/code>. Ce que ces op\u00e9rations refusent, celle-ci le<br \/>\nrefuse aussi.<\/p>\n<hr \/>\n<h2>Cas d&rsquo;usage : d\u00e9clarer les identifiants d&rsquo;un syst\u00e8me ext\u00e9rieur<\/h2>\n<p>Le besoin le plus fr\u00e9quent est de dire \u00e0 Kafinea <strong>quel enregistrement correspond \u00e0 quel objet d&rsquo;un<br \/>\nsyst\u00e8me ext\u00e9rieur<\/strong> : un client de votre boutique en ligne, un article de votre place de march\u00e9, une<br \/>\nfiche issue de votre ancien logiciel.<\/p>\n<p>C&rsquo;est la table de correspondance que Kafinea consulte <strong>avant<\/strong> toute tentative de rapprochement par<br \/>\nnom ou par e-mail. Une correspondance d\u00e9clar\u00e9e est une <strong>certitude<\/strong>, pas une supposition : elle<br \/>\nsupprime les doublons de fiches clients \u00e0 la source. Une correspondance porte trois informations :<\/p>\n<div style=\"overflow-x:auto\">\n<table>\n<thead>\n<tr>\n<th>Champ<\/th>\n<th>R\u00f4le<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>sourcesystem<\/code><\/td>\n<td>D&rsquo;o\u00f9 vient l&rsquo;identifiant. Pour une boutique en ligne : <code>onlinestore:<\/code> suivi de l&rsquo;identifiant de la fiche boutique<\/td>\n<\/tr>\n<tr>\n<td><code>objecttype<\/code><\/td>\n<td>Le module Kafinea concern\u00e9 (<code>Accounts<\/code>, <code>Products<\/code>, <code>SalesOrder<\/code>\u2026)<\/td>\n<\/tr>\n<tr>\n<td><code>externalref<\/code><\/td>\n<td>La valeur que le syst\u00e8me ext\u00e9rieur donne \u00e0 cet objet<\/td>\n<\/tr>\n<tr>\n<td><code>recordid<\/code><\/td>\n<td>L&rsquo;enregistrement Kafinea vis\u00e9, sous la forme d&rsquo;un identifiant Webservice (<code>10x54325<\/code>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>L&rsquo;unicit\u00e9 est garantie par syst\u00e8me source, et c&rsquo;est le point important.<\/strong> Un m\u00eame client peut<br \/>\nporter un identifiant diff\u00e9rent sur chacune de vos boutiques, et deux boutiques peuvent utiliser le<br \/>\nm\u00eame num\u00e9ro pour deux clients diff\u00e9rents : la correspondance sait l&rsquo;exprimer, un simple champ \u00ab r\u00e9f.<br \/>\nexterne \u00bb sur la fiche client ne le saurait pas.<\/p>\n<p><!-- doc-check-ignore: tech --><\/p>\n<pre><code class=\"language-bash\">curl -X POST https:\/\/apps.kafinea.com\/YourKafinea\/webservice.php \\\n  -d &quot;operation=mass_upsert&quot; \\\n  -d &quot;sessionName=YOUR_SESSION_ID&quot; \\\n  -d &quot;elementType=MdsExternalRef&quot; \\\n  -d 'keyFields=[&quot;sourcesystem&quot;,&quot;objecttype&quot;,&quot;externalref&quot;]' \\\n  -d 'elements=[\n        {&quot;sourcesystem&quot;:&quot;onlinestore:44053&quot;,&quot;objecttype&quot;:&quot;Accounts&quot;,&quot;externalref&quot;:&quot;39146&quot;,&quot;recordid&quot;:&quot;10x54325&quot;},\n        {&quot;sourcesystem&quot;:&quot;onlinestore:44053&quot;,&quot;objecttype&quot;:&quot;Products&quot;,&quot;externalref&quot;:&quot;3760174130121&quot;,&quot;recordid&quot;:&quot;13x8842&quot;}\n      ]'\n<\/code><\/pre>\n<p><code>recordid<\/code> d\u00e9signe un enregistrement : il s&rsquo;\u00e9crit et se relit comme tout lien vers un enregistrement<br \/>\ndans l&rsquo;API, avec l&rsquo;<strong>identifiant Webservice complet<\/strong> que renvoient <code>query<\/code> ou <code>retrieve<\/code>. Un<br \/>\nidentifiant brut (<code>54325<\/code>) est refus\u00e9. L&rsquo;enregistrement vis\u00e9 est ainsi un lien cliquable dans<br \/>\nKafinea, et la fiche client affiche la liste de ses identifiants externes.<\/p>\n<p>Les correspondances d\u00e9clar\u00e9es se relisent comme n&rsquo;importe quel autre module, avec<br \/>\n<a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-requetes-et-interrogation\/\"><code>query<\/code><\/a>.<\/p>\n<h3>Reprendre une base clients existante<\/h3>\n<p>Le sc\u00e9nario typique est la mise en service d&rsquo;une boutique en ligne dont les clients existent d\u00e9j\u00e0<br \/>\ndans Kafinea. Sans correspondances, la synchronisation ne peut que deviner, et cr\u00e9e des doublons.<\/p>\n<ol>\n<li>R\u00e9glez, sur la fiche de la boutique, la <strong>reconnaissance du client<\/strong> sur \u00ab R\u00e9f. client boutique \u00bb<br \/>\n(voir le param\u00e9trage de la boutique en ligne).<\/li>\n<li>D\u00e9clarez les correspondances par lots de 500, avec cette op\u00e9ration.<\/li>\n<li>Lancez la synchronisation : chaque commande retrouve son client par identit\u00e9.<\/li>\n<\/ol>\n<p>Un client absent de la table n&rsquo;est <strong>pas<\/strong> cr\u00e9\u00e9 en silence si vous avez d\u00e9coch\u00e9 \u00ab Cr\u00e9er les clients<br \/>\ndepuis la boutique \u00bb : la commande est rattach\u00e9e au client de repli de la boutique et l&rsquo;anomalie est<br \/>\nnomm\u00e9e dans le journal de synchronisation. Vous compl\u00e9tez la correspondance, puis vous rafra\u00eechissez<br \/>\nla commande depuis la boutique.<\/p>\n<hr \/>\n<h2>R\u00e9f\u00e9rences associ\u00e9es \ud83d\udd17<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-operations-crud\/\">Op\u00e9rations CRUD<\/a><\/li>\n<li><a href=\"100_champs-de-module.md\">Champs d&rsquo;un module<\/a><\/li>\n<li><a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-suppression-en-masse\/\">Suppression en masse (corbeille)<\/a><\/li>\n<li><a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-requetes-et-interrogation\/\">Requ\u00eates et interrogation<\/a><\/li>\n<li><a href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-introduction\/\">Introduction API<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Cette page d\u00e9crit l&rsquo;op\u00e9ration \u00e0 utiliser pour charger ou mettre \u00e0 jour beaucoup d&rsquo;enregistrements d&rsquo;un coup, en les d\u00e9signant par une clef m\u00e9tier (un code article, une r\u00e9f\u00e9rence client, une r\u00e9f\u00e9rence boutique) plut\u00f4t que par leur identifiant Kafinea. Op\u00e9ration M\u00e9thode Description mass_upsert POST \u00c9crire un lot d&rsquo;enregistrements identifi\u00e9s par une clef m\u00e9tier Elle est g\u00e9n\u00e9rique&#8230;<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"doc_category":[58],"doc_tag":[],"class_list":["post-444869","docs","type-docs","status-publish","hentry","doc_category-api"],"year_month":"2026-09","word_count":1371,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"David Valminos","author_nicename":"david","author_url":"https:\/\/www.kafinea.com\/fr\/author\/david\/"},"doc_category_info":[{"term_name":"API","term_url":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/"}],"doc_tag_info":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Documentation - API REST - Import en masse (upsert) &#8226; Kafinea<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentation - API REST - Import en masse (upsert) &#8226; Kafinea\" \/>\n<meta property=\"og:description\" content=\"Cette page d\u00e9crit l&rsquo;op\u00e9ration \u00e0 utiliser pour charger ou mettre \u00e0 jour beaucoup d&rsquo;enregistrements d&rsquo;un coup, en les d\u00e9signant par une clef m\u00e9tier (un code article, une r\u00e9f\u00e9rence client, une r\u00e9f\u00e9rence boutique) plut\u00f4t que par leur identifiant Kafinea. Op\u00e9ration M\u00e9thode Description mass_upsert POST \u00c9crire un lot d&rsquo;enregistrements identifi\u00e9s par une clef m\u00e9tier Elle est g\u00e9n\u00e9rique...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/\" \/>\n<meta property=\"og:site_name\" content=\"Kafinea\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-17T22:57:51+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-import-en-masse\\\/\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-import-en-masse\\\/\",\"name\":\"Documentation - API REST - Import en masse (upsert) &#8226; Kafinea\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#website\"},\"datePublished\":\"2026-09-17T22:57:41+00:00\",\"dateModified\":\"2026-09-17T22:57:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-import-en-masse\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-import-en-masse\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/documentation\\\/api\\\/api-rest-import-en-masse\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API REST &#8211; Import en masse (upsert)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/\",\"name\":\"Kafinea\",\"description\":\"Une solution unique pour toutes vos ambitions\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#organization\",\"name\":\"Kafinea\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.kafinea.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Logo-Kafinea-SVG-orange-bleu.svg\",\"contentUrl\":\"https:\\\/\\\/www.kafinea.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Logo-Kafinea-SVG-orange-bleu.svg\",\"width\":296.31,\"height\":66.48,\"caption\":\"Kafinea\"},\"image\":{\"@id\":\"https:\\\/\\\/www.kafinea.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/kafinea\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Documentation - API REST - Import en masse (upsert) &#8226; Kafinea","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/","og_locale":"fr_FR","og_type":"article","og_title":"Documentation - API REST - Import en masse (upsert) &#8226; Kafinea","og_description":"Cette page d\u00e9crit l&rsquo;op\u00e9ration \u00e0 utiliser pour charger ou mettre \u00e0 jour beaucoup d&rsquo;enregistrements d&rsquo;un coup, en les d\u00e9signant par une clef m\u00e9tier (un code article, une r\u00e9f\u00e9rence client, une r\u00e9f\u00e9rence boutique) plut\u00f4t que par leur identifiant Kafinea. Op\u00e9ration M\u00e9thode Description mass_upsert POST \u00c9crire un lot d&rsquo;enregistrements identifi\u00e9s par une clef m\u00e9tier Elle est g\u00e9n\u00e9rique...","og_url":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/","og_site_name":"Kafinea","article_modified_time":"2026-09-17T22:57:51+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/","url":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/","name":"Documentation - API REST - Import en masse (upsert) &#8226; Kafinea","isPartOf":{"@id":"https:\/\/www.kafinea.com\/fr\/#website"},"datePublished":"2026-09-17T22:57:41+00:00","dateModified":"2026-09-17T22:57:51+00:00","breadcrumb":{"@id":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.kafinea.com\/fr\/documentation\/api\/api-rest-import-en-masse\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.kafinea.com\/fr\/"},{"@type":"ListItem","position":2,"name":"API REST &#8211; Import en masse (upsert)"}]},{"@type":"WebSite","@id":"https:\/\/www.kafinea.com\/fr\/#website","url":"https:\/\/www.kafinea.com\/fr\/","name":"Kafinea","description":"Une solution unique pour toutes vos ambitions","publisher":{"@id":"https:\/\/www.kafinea.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kafinea.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.kafinea.com\/fr\/#organization","name":"Kafinea","url":"https:\/\/www.kafinea.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.kafinea.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.kafinea.com\/wp-content\/uploads\/2024\/10\/Logo-Kafinea-SVG-orange-bleu.svg","contentUrl":"https:\/\/www.kafinea.com\/wp-content\/uploads\/2024\/10\/Logo-Kafinea-SVG-orange-bleu.svg","width":296.31,"height":66.48,"caption":"Kafinea"},"image":{"@id":"https:\/\/www.kafinea.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/kafinea\/"]}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"David Valminos","author_link":"https:\/\/www.kafinea.com\/fr\/author\/david\/"},"uagb_comment_info":0,"uagb_excerpt":"Cette page d\u00e9crit l&rsquo;op\u00e9ration \u00e0 utiliser pour charger ou mettre \u00e0 jour beaucoup d&rsquo;enregistrements d&rsquo;un coup, en les d\u00e9signant par une clef m\u00e9tier (un code article, une r\u00e9f\u00e9rence client, une r\u00e9f\u00e9rence boutique) plut\u00f4t que par leur identifiant Kafinea. Op\u00e9ration M\u00e9thode Description mass_upsert POST \u00c9crire un lot d&rsquo;enregistrements identifi\u00e9s par une clef m\u00e9tier Elle est g\u00e9n\u00e9rique...","_links":{"self":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs\/444869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/comments?post=444869"}],"version-history":[{"count":1,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs\/444869\/revisions"}],"predecessor-version":[{"id":444871,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/docs\/444869\/revisions\/444871"}],"wp:attachment":[{"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/media?parent=444869"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/doc_category?post=444869"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/www.kafinea.com\/fr\/wp-json\/wp\/v2\/doc_tag?post=444869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}