diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h
index 4d1a4a9f52ec..aee3a69881fc 100644
--- a/include/libcamera/camera.h
+++ b/include/libcamera/camera.h
@@ -38,7 +38,8 @@ public:
 
 	virtual ~CameraConfiguration();
 
-	void addConfiguration(const StreamConfiguration &cfg);
+	StreamConfiguration &addConfiguration(const StreamConfiguration &cfg);
+
 	virtual Status validate() = 0;
 
 	StreamConfiguration &at(unsigned int index);
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 69a1b4428e3f..a3b91cecc86d 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -104,10 +104,18 @@ CameraConfiguration::~CameraConfiguration()
 /**
  * \brief Add a stream configuration to the camera configuration
  * \param[in] cfg The stream configuration
+ *
+ * This method adds a new stream configuration to the CameraConfiguration using
+ * the values given in cfg, which are copied. A reference to the destination
+ * new StreamConfiguration is returned.
+ *
+ * \return A reference to the newly added stream configuration
  */
-void CameraConfiguration::addConfiguration(const StreamConfiguration &cfg)
+StreamConfiguration &CameraConfiguration::addConfiguration(const StreamConfiguration &cfg)
 {
 	config_.push_back(cfg);
+
+	return config_.back();
 }
 
 /**
