diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 3c8f30d54401..aca466c9ba72 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -565,6 +565,7 @@ CameraConfiguration::Status CameraConfiguration::validateColorSpaces(ColorSpaceF
  * \brief The vector of stream configurations
  */
 
+#ifndef __DOXYGEN_PUBLIC__
 /**
  * \class Camera::Private
  * \brief Base class for camera private data
@@ -725,6 +726,7 @@ void Camera::Private::setState(State state)
 {
 	state_.store(state, std::memory_order_release);
 }
+#endif /* __DOXYGEN_PUBLIC__ */
 
 /**
  * \class Camera
diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
index 5a21132a08c2..fa44e33a135d 100644
--- a/src/libcamera/camera_manager.cpp
+++ b/src/libcamera/camera_manager.cpp
@@ -35,6 +35,7 @@ namespace libcamera {
 
 LOG_DEFINE_CATEGORY(Camera)
 
+#ifndef __DOXYGEN_PUBLIC__
 CameraManager::Private::Private()
 	: initialized_(false)
 {
@@ -249,6 +250,7 @@ void CameraManager::Private::removeCamera(std::shared_ptr<Camera> camera)
 	CameraManager *const o = LIBCAMERA_O_PTR();
 	o->cameraRemoved.emit(camera);
 }
+#endif /* __DOXYGEN_PUBLIC__ */
 
 /**
  * \class CameraManager
diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp
index f39db1223432..826848f75a56 100644
--- a/src/libcamera/framebuffer.cpp
+++ b/src/libcamera/framebuffer.cpp
@@ -107,6 +107,7 @@ LOG_DEFINE_CATEGORY(Buffer)
  * \return The array of per-plane metadata
  */
 
+#ifndef __DOXYGEN_PUBLIC__
 /**
  * \class FrameBuffer::Private
  * \brief Base class for FrameBuffer private data
@@ -209,6 +210,7 @@ FrameBuffer::Private::~Private()
  * \brief Retrieve the dynamic metadata
  * \return Dynamic metadata for the frame contained in the buffer
  */
+#endif /* __DOXYGEN_PUBLIC__ */
 
 /**
  * \class FrameBuffer
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index 24fa3a57312e..8c56ed30d0c4 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -38,6 +38,7 @@ namespace libcamera {
 
 LOG_DEFINE_CATEGORY(Request)
 
+#ifndef __DOXYGEN_PUBLIC__
 /**
  * \class Request::Private
  * \brief Request private data
@@ -306,6 +307,7 @@ void Request::Private::timeout()
 
 	emitPrepareCompleted();
 }
+#endif /* __DOXYGEN_PUBLIC__ */
 
 /**
  * \enum Request::Status
