diff --git a/app/__init__.py b/app/__init__.py
index 4432a4e8d7dd248c1eede6dfe62a7315a8c29f81..3afd43e2a222e7a01421c6b18ad5d75985572630 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -24,6 +24,9 @@ def create_app(config_name):
     scheduler.init_app(app)
     scheduler.start()
 
+    from .api import api as api_blueprint
+    app.register_blueprint(api_blueprint, url_prefix='/api')
+
     from .auth import auth as auth_blueprint
     app.register_blueprint(auth_blueprint, url_prefix='/auth')
 
diff --git a/app/api/__init__.py b/app/api/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..27a63156ed63721630000492f12d5c3df57178b5
--- /dev/null
+++ b/app/api/__init__.py
@@ -0,0 +1,5 @@
+from flask import Blueprint
+
+api = Blueprint('api', __name__)
+
+from . import views
diff --git a/app/api/views.py b/app/api/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce3bc87513ac173217e482b2032ed15d0be1d2bc
--- /dev/null
+++ b/app/api/views.py
@@ -0,0 +1,67 @@
+from flask import jsonify
+from flask_login import current_user, login_required
+from . import api
+
+
+@api.route('/v1.0/corpora')
+@login_required
+def corpora():
+    corpora = []
+    for corpus in current_user.corpora.all():
+        corpora.append({'id': corpus.id,
+                        'creation_date': corpus.creation_date.timestamp(),
+                        'description': corpus.description,
+                        'title': corpus.title})
+    return jsonify(corpora)
+
+
+@api.route('/v1.0/corpora/<int:corpus_id>')
+@login_required
+def corpus(corpus_id):
+    corpus = current_user.corpora.filter_by(id=corpus_id).first()
+    if not corpus:
+        ''' This should return 404 '''
+        return jsonify(None)
+    return jsonify({'id': corpus.id,
+                    'creation_date': corpus.creation_date,
+                    'description': corpus.description,
+                    'title': corpus.title})
+
+
+@api.route('/v1.0/jobs')
+@login_required
+def jobs():
+    jobs = []
+    for job in current_user.jobs.all():
+        jobs.append({'id': job.id,
+                     'creation_date': job.creation_date.timestamp(),
+                     'description': job.description,
+                     'end_date': job.end_date.timestamp() if job.end_date else None,
+                     'mem_mb': job.mem_mb,
+                     'n_cores': job.n_cores,
+                     'service': job.service,
+                     'service_args': job.service_args,
+                     'service_version': job.service_version,
+                     'status': job.status,
+                     'title': job.title})
+    return jsonify(jobs)
+
+
+@api.route('/v1.0/jobs/<int:job_id>')
+@login_required
+def job(job_id):
+    job = current_user.jobs.filter_by(id=job_id).first()
+    if not job:
+        ''' This should return 404 '''
+        return jsonify(None)
+    return jsonify({'id': job.id,
+                    'creation_date': job.creation_date.timestamp(),
+                    'description': job.description,
+                    'end_date': job.end_date.timestamp() if job.end_date else None,
+                    'mem_mb': job.mem_mb,
+                    'n_cores': job.n_cores,
+                    'service': job.service,
+                    'service_args': job.service_args,
+                    'service_version': job.service_version,
+                    'status': job.status,
+                    'title': job.title})