diff --git a/src/InternshipSystem.Api/Controllers/RegistrationController.cs b/src/InternshipSystem.Api/Controllers/RegistrationController.cs
index 19a92c6..a808437 100644
--- a/src/InternshipSystem.Api/Controllers/RegistrationController.cs
+++ b/src/InternshipSystem.Api/Controllers/RegistrationController.cs
@@ -47,8 +47,15 @@ namespace InternshipSystem.Api.Controllers
 
             var student = await _context.Students.FindAsync(user.PersonNumber);
 
-            edition.RegisterInternship(student);
-            await _context.SaveChangesAsync(token);
+            try
+            {
+                edition.RegisterInternship(student);
+                await _context.SaveChangesAsync(token);
+            }
+            catch (ArgumentException e)
+            {
+                return BadRequest(e.Message);
+            }
 
             return Ok();
         }
diff --git a/src/InternshipSystem.Core/Entity/Edition.cs b/src/InternshipSystem.Core/Entity/Edition.cs
index a34c83c..c22eb53 100644
--- a/src/InternshipSystem.Core/Entity/Edition.cs
+++ b/src/InternshipSystem.Core/Entity/Edition.cs
@@ -31,6 +31,11 @@ namespace InternshipSystem.Core
 
         public void RegisterInternship(Student student)
         {
+            if (Internships.Any(i => i.Student.Id == student.Id))
+            {
+                throw new ArgumentException("error.registration.already_registered");
+            }
+            
             var internship = Internship.CreateStudentsInternship(student);
             
             Internships.Add(internship);