diff --git a/arkindex/process/serializers/workers.py b/arkindex/process/serializers/workers.py
index 24c6bb162acf27713a002442ce0aaddd1e4c6eda..e896adf8c1837f0af4a17f87ae89edda2ae18eda 100644
--- a/arkindex/process/serializers/workers.py
+++ b/arkindex/process/serializers/workers.py
@@ -88,7 +88,7 @@ class WorkerCreateSerializer(WorkerSerializer):
                 Worker.objects
                 .using("default")
                 .filter(
-                    repository_url=validated_data["repository_url"],
+                    repository_url=validated_data.get("repository_url"),
                     slug=validated_data["slug"],
                 )
                 .first()
diff --git a/arkindex/process/tests/test_workers.py b/arkindex/process/tests/test_workers.py
index 96b792003d1b233a5302818fa1dc281d3842a158..923724c89751ad8c18edf03369d699ad45feca7a 100644
--- a/arkindex/process/tests/test_workers.py
+++ b/arkindex/process/tests/test_workers.py
@@ -544,7 +544,6 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                 data={
                     "name": "Worker post",
                     "slug": self.worker_custom.slug,
-                    "repository_url": "",
                     "type": "new_type"
                 }
             )
@@ -563,7 +562,7 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
 
     def test_worker_create_task_return_existing_worker(self):
         """
-        Creation with an existing slug returns the existing worker with a HTTP status 200
+        Creation with an existing slug and no repo URL returns the existing worker with a HTTP status 200
         """
         test_worker = Worker.objects.create(
             name="Prog Knife",
@@ -577,7 +576,6 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     "name": "Progressive Knife",
                     "slug": "prog_knife",
                     "type": self.worker_type_dla.slug,
-                    "repository_url": "",
                 },
                 HTTP_AUTHORIZATION=f"Ponos {self.task.token}",
             )
@@ -591,6 +589,36 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         self.assertEqual(data["repository_url"], None)
         self.assertEqual(test_worker.repository_url, None)
 
+    def test_worker_create_existing_with_repository_url(self):
+        """
+        Creation with an existing slug and repo URL returns the existing worker with a HTTP status 200
+        """
+        test_worker = Worker.objects.create(
+            name="Prog Knife",
+            slug="prog_knife",
+            type=self.worker_reco.type,
+            repository_url="https://gitlab.nerv.co.jp/eva:eva-01",
+        )
+        with self.assertNumQueries(6):
+            response = self.client.post(
+                reverse("api:workers-list"),
+                data={
+                    "name": "Progressive Knife",
+                    "slug": "prog_knife",
+                    "type": self.worker_type_dla.slug,
+                    "repository_url": "https://gitlab.nerv.co.jp/eva:eva-01",
+                },
+                HTTP_AUTHORIZATION=f"Ponos {self.task.token}",
+            )
+            self.assertEqual(response.status_code, status.HTTP_200_OK)
+
+        data = response.json()
+        self.assertEqual(data["id"], str(test_worker.id))
+        self.assertEqual(data["name"], "Prog Knife")
+        self.assertEqual(data["slug"], "prog_knife")
+        self.assertEqual(data["type"], "recognizer")
+        self.assertEqual(data["repository_url"], "https://gitlab.nerv.co.jp/eva:eva-01")
+
     def test_worker_create_task_new_type(self):
         """
         Ponos task can create a worker with a non pre-existing worker type
@@ -605,7 +633,6 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     "name": "Worker post",
                     "slug": "worker_post",
                     "type": "newType",
-                    "repository_url": "",
                 },
                 HTTP_AUTHORIZATION=f"Ponos {self.task.token}",
             )