diff --git a/__manifest__.py b/__manifest__.py
index 0803a59de65c7a8ba3ab764d0a32112ba3a8acc1..7ea573fe62e14f65c0c3723e6d49d97d93287721 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -5,7 +5,7 @@
     "website": "https://le-filament.com",
     "version": "16.0.1.0.0",
     "license": "AGPL-3",
-    "depends": ["oacc", "api_enedis_acc"],
+    "depends": ["oacc", "api_enedis_acc", "queue_job"],
     "data": [
         "security/ir.model.access.csv",
         # datas
diff --git a/tools/key_file.py b/tools/key_file.py
index 7f48d85d94c60379700dda9b1d50f0f5689b95ee..70d324149a61addbaa48c8dbf3f8b1ca30f2fb3d 100644
--- a/tools/key_file.py
+++ b/tools/key_file.py
@@ -66,7 +66,7 @@ class RepartitionKeyEntryFile:
                 )
         return json
 
-    def data_to_send(self, agreement_id, send_empty_key=True):
+    def data_to_send(self, send_empty_key=True):
         """
         build route and body for api sending
         return dict {"route", "body} to enedis
@@ -74,17 +74,18 @@ class RepartitionKeyEntryFile:
         call_list = []
         for horo in self.json:
             date = datetime.strptime(horo, "%d-%m-%Y %H:%M")
-            route = f"{agreement_id}/repartition_keys/{date.strftime('%Y%m%dT%H%MZ')}"
+            route = f"/repartition_keys/{date.strftime('%Y%m%dT%H%M%SZ')}"
             body = []
-            # specification enedis si la somme des clefs est nulle on envoi un body vide
-            if self._get_key_sum(self.json.get(horo)) > 0:
-                for keys in self.json.get(horo):
-                    if send_empty_key:
-                        body.append(keys)
-                    else:
-                        if float(keys.get("key")) > 0:
-                            body.append(keys)
-            call_list.append({"route": route, "body": body})
+            for key in self.json.get(horo):
+                if send_empty_key:
+                    body.append(key)
+                else:
+                    if float(key.get("key")) > 0:
+                        body.append(key)
+            
+            if send_empty_key or body:
+                call_list.append({"route": route, "body": body})
+                
         return call_list
 
     def _check_counter(self):
diff --git a/wizard/acc_repartition_keys_wizard.py b/wizard/acc_repartition_keys_wizard.py
index caa0f41ede6813b97bc09f72080be1893a8a82e3..4758365af03bbd51e95f98ccfe7b1dbe40d8e097 100644
--- a/wizard/acc_repartition_keys_wizard.py
+++ b/wizard/acc_repartition_keys_wizard.py
@@ -4,7 +4,7 @@ import base64
 import datetime
 
 from odoo import fields, models
-from odoo.exceptions import UserError
+from odoo.exceptions import UserError, ValidationError
 
 from ..tools.key_file import RepartitionKeyEntryFile
 
@@ -83,14 +83,14 @@ class AccRepartitionKeysWizard(models.TransientModel):
             if not file_check_result.get("check"):
                 raise UserError(file_check_result.get("message"))
 
-            data_to_send = entry_file_handler.data_to_send(
-                agreement_id=self.operation_id.name
-            )
+            data_to_send = entry_file_handler.data_to_send(send_empty_key=False)
 
             for key in data_to_send:
-                response = self.env["api.enedis.acc"].send_repartition_key(key=key)
-                # TODO: test api
-                print(response)
+                job_description = f"Send repartition key at {key.get('route')}"
+                try:
+                    self.operation_id.with_delay(description=job_description).send_repartition_key(key=key)
+                except ValidationError as exc:
+                    raise UserError(str(exc))
 
             self.env["acc.repartition.keys"].create(
                 {