diff --git a/include/libcamera/request.h b/include/libcamera/request.h
index 1eb537e9..29da397c 100644
--- a/include/libcamera/request.h
+++ b/include/libcamera/request.h
@@ -64,6 +64,8 @@ public:
 
 	std::string toString() const;
 
+	std::shared_ptr<Camera> camera() const;
+
 private:
 	LIBCAMERA_DISABLE_COPY(Request)
 
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 9c8da6ca..de3c1f80 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -513,6 +513,11 @@ FrameBuffer *Request::findBuffer(const Stream *stream) const
 	return it->second;
 }
 
+std::shared_ptr<Camera> Request::camera() const
+{
+	return _d()->camera()->shared_from_this();
+}
+
 /**
  * \fn Request::metadata()
  * \brief Retrieve the request's metadata
