diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py
index 987a04ec819617b774cdc541a364601eb7831f4e..0a26ee8b71704eafcdc530fd3c5dd68d2ab6e08c 100644
--- a/arkindex/dataimport/api.py
+++ b/arkindex/dataimport/api.py
@@ -6,6 +6,7 @@ from django.conf import settings
 from rest_framework.generics import (
     GenericAPIView, ListAPIView, CreateAPIView, RetrieveAPIView,
     ListCreateAPIView, RetrieveUpdateDestroyAPIView, RetrieveDestroyAPIView,
+    RetrieveUpdateAPIView
 )
 from rest_framework.views import APIView
 from rest_framework.parsers import MultiPartParser, FileUploadParser
@@ -654,7 +655,7 @@ class WorkerVersionList(ListCreateAPIView):
         return Response(WorkerVersionSerializer(version).data, status=reponse_status)
 
 
-class WorkerVersionRetrieve(CorpusACLMixin, RetrieveAPIView):
+class WorkerVersionRetrieve(CorpusACLMixin, RetrieveUpdateAPIView):
     """
     Retrieve a specific worker version
     """
diff --git a/arkindex/dataimport/migrations/0010_workerversion_docker_image.py b/arkindex/dataimport/migrations/0010_workerversion_docker_image.py
new file mode 100644
index 0000000000000000000000000000000000000000..152e2ac3de4fabecbcf70bc4aaff7b4c8cf646bd
--- /dev/null
+++ b/arkindex/dataimport/migrations/0010_workerversion_docker_image.py
@@ -0,0 +1,20 @@
+# Generated by Django 2.2.13 on 2020-06-18 12:52
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ponos', '0015_task_has_docker_socket'),
+        ('dataimport', '0009_remove_datafile_hash'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='workerversion',
+            name='docker_image',
+            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='ponos.Artifact'),
+        ),
+    ]
diff --git a/arkindex/dataimport/models.py b/arkindex/dataimport/models.py
index 10ed21f33d4d126863848af4ab53b22577c5a8e2..664d492523ade2e9abb235ffcf196ace44a6eb06 100644
--- a/arkindex/dataimport/models.py
+++ b/arkindex/dataimport/models.py
@@ -4,6 +4,7 @@ from django.conf import settings
 from django.utils.functional import cached_property
 from rest_framework.exceptions import ValidationError
 from enumfields import EnumField, Enum
+from ponos.models import Artifact
 from arkindex_common.enums import DataImportMode
 from arkindex_common.ml_tool import MLToolType
 from arkindex.project.aws import S3FileMixin, S3FileStatus
@@ -341,6 +342,7 @@ class WorkerVersion(models.Model):
     worker = models.ForeignKey('dataimport.Worker', on_delete=models.CASCADE)
     revision = models.ForeignKey('dataimport.Revision', on_delete=models.CASCADE)
     configuration = JSONField()
+    docker_image = models.ForeignKey(Artifact, on_delete=models.CASCADE, null=True)
 
     class Meta:
         unique_together = (('worker', 'revision'),)
diff --git a/arkindex/dataimport/serializers/workers.py b/arkindex/dataimport/serializers/workers.py
index 691f99f5bb195457a2005ad2eb90bd6a2449133c..3b4ee4219bb6f42a8550b05742bbd50939a1a998 100644
--- a/arkindex/dataimport/serializers/workers.py
+++ b/arkindex/dataimport/serializers/workers.py
@@ -31,6 +31,7 @@ class WorkerVersionSerializer(serializers.ModelSerializer):
             'id',
             'configuration',
             'revision',
+            'docker_image',
         )
 
     def to_representation(self, instance):
diff --git a/arkindex/dataimport/tests/test_workers_api.py b/arkindex/dataimport/tests/test_workers_api.py
index 7694a94c5097f6f95cdec0f74b8971ec8f8a711e..03c3383382cb10ebf2b56777d28560776d883cb0 100644
--- a/arkindex/dataimport/tests/test_workers_api.py
+++ b/arkindex/dataimport/tests/test_workers_api.py
@@ -3,6 +3,17 @@ from rest_framework import status
 from arkindex_common.ml_tool import MLToolType
 from arkindex.dataimport.models import Repository, Revision, Worker, WorkerVersion
 from arkindex.project.tests import FixtureAPITestCase
+from ponos.models import Workflow
+
+RECIPE = '''
+tasks:
+  first:
+    image: alpine
+  second:
+    parents:
+      - first
+    image: hello-world
+'''
 
 
 class TestWorkersWorkerVersions(FixtureAPITestCase):
@@ -240,3 +251,49 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         self.assertEqual(data['id'], str(self.version_1.id))
         self.assertEqual(data['configuration'], {"test": "test1"})
         self.assertEqual(data['revision']['id'], str(self.rev.id))
+
+    def test_update_version_requires_login(self):
+        response = self.client.patch(
+            reverse('api:version-retrieve', kwargs={'pk': str(self.version_1.id)}),
+            data={
+                'configuration': {"test": "test2"},
+                'docker_image': '12341234-1234-1234-1234-123412341234'
+            }, format='json'
+        )
+        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
+
+    def test_update_version_invalid_id(self):
+        self.client.force_login(self.user)
+        response = self.client.patch(
+            reverse('api:version-retrieve', kwargs={'pk': '12341234-1234-1234-1234-123412341234'}),
+            data={
+                'configuration': {"test": "test2"},
+                'docker_image': '12341234-1234-1234-1234-123412341234'
+            }, format='json'
+        )
+        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
+
+    def test_update_version(self):
+        self.assertEqual(self.version_1.docker_image, None)
+
+        workflow = Workflow.objects.create(recipe=RECIPE)
+        task = workflow.tasks.get(slug='first')
+        artifact = task.artifacts.create(
+            path='path/to/file.json',
+            size=100,
+            content_type='application/json',
+        )
+
+        self.client.force_login(self.user)
+        response = self.client.patch(
+            reverse('api:version-retrieve', kwargs={'pk': str(self.version_1.id)}),
+            data={
+                'configuration': {"test": "test2"},
+                'docker_image': str(artifact.id)
+            }, format='json'
+        )
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        data = response.json()
+        self.assertEqual(data['id'], str(self.version_1.id))
+        self.assertEqual(data['configuration'], {"test": "test2"})
+        self.assertEqual(data['docker_image'], str(artifact.id))