diff --git a/zesje/api.py b/zesje/api.py
index 1b4bf94bdc36d35af0dc1db1a2d37c734232ba89..737ae7ac38c76aad21eabce368a28042f1fc1f6b 100644
--- a/zesje/api.py
+++ b/zesje/api.py
@@ -4,6 +4,7 @@ from flask_restful import Api
 from .resources.graders import Graders
 from .resources.exams import Exams, ExamConfig
 from .resources.pdfs import Pdfs
+from .resources.students import Students
 
 api_bp = Blueprint(__name__, __name__)
 
@@ -20,3 +21,4 @@ api.add_resource(Graders, '/graders')
 api.add_resource(Exams, '/exams')
 api.add_resource(ExamConfig, '/exams/<int:exam_id>')
 api.add_resource(Pdfs, '/pdfs/<int:exam_id>')
+api.add_resource(Students, '/students')
diff --git a/zesje/resources/students.py b/zesje/resources/students.py
new file mode 100644
index 0000000000000000000000000000000000000000..24aa37ea449dd5611405e8a33b5664178653c521
--- /dev/null
+++ b/zesje/resources/students.py
@@ -0,0 +1,29 @@
+from flask_restful import Resource
+from pony import orm
+
+from ..models import Student
+
+class Students(Resource):
+    """Getting a list of students."""
+
+    @orm.db_session
+    def get(self):
+        """get all students for the course.
+
+        Returns
+        -------
+        list of:
+            id: int
+            first_name: str
+            last_name: str
+            email: str
+        """
+        return [
+            {
+                'id': s.id,
+                'first_name': s.first_name,
+                'last_name': s.last_name,
+                'email': s.email,
+            }
+            for s in Student.select()
+        ]