diff --git a/Makefile b/Makefile
index 55c692e2efd099d085b6ada3c71153fe5868931d..ab14b3871bba3ca80d2b5c425bf3af356bd8f374 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-TAG=0.3.0
+TAG=0.4.0
 
 build:
 	DOCKER_DEFAULT_PLATFORM=linux/amd64 docker build -t gitlab.sauerburger.com:5049/frank/wakefield-movie-recommender:$(TAG) .
diff --git a/app.py b/app.py
index 22d9b34adf1fd917c300f031bac84b93cee4e7c0..ba37e805667e1ee0c116303c30759d3cb6f2829d 100644
--- a/app.py
+++ b/app.py
@@ -4,7 +4,7 @@
 """Movie title suggestion api"""
 
 import json
-from flask import Flask, request
+from flask import Flask, request, abort
 import qgram
 
 app = Flask(__name__)
@@ -13,9 +13,12 @@ with open("examples/titles.json", encoding="utf-8") as fileobj:
     titles = json.load(fileobj)
 
 movie_ids = {}
+movie_titles = {}
 index = qgram.QGramIndex()
-for tid, (title, _) in titles.items():
-    movie_ids[title] = int(tid)
+for tid, (title, year) in titles.items():
+    tid = int(tid)
+    movie_titles[tid] = (title, year)
+    movie_ids[title] = tid
     index.add_term(title)
 
 
@@ -46,6 +49,20 @@ def suggest():
         "suggestions": results
     }
 
+
+@app.route("/titles/<int:mid>")
+def byid(mid):
+    """Show healthz status"""
+    if mid not in movie_titles:
+        abort(404)
+
+    title, year = movie_titles[mid]
+    return {
+        "id": mid,
+        "title": title,
+        "year": year
+    }
+
 @app.route("/titles/healthz")
 def healthz():
     """Show healthz status"""
diff --git a/deployment.yaml b/deployment.yaml
index 2c0d86595c705959d4cf31e82e7bc23728605c1a..7f8de97c81aad02d5ca4fb6d4186d2d44cf31a0b 100644
--- a/deployment.yaml
+++ b/deployment.yaml
@@ -16,7 +16,7 @@ spec:
     spec:
       containers:
       - name: titles
-        image: gitlab.sauerburger.com:5049/frank/wakefield-movie-recommender:0.3.0
+        image: gitlab.sauerburger.com:5049/frank/wakefield-movie-recommender:0.4.0
         livenessProbe:
           httpGet:
             path: /titles/healthz