diff --git a/ee/app/controllers/projects/security/api_fuzzing_configuration_controller.rb b/ee/app/controllers/projects/security/api_fuzzing_configuration_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e25c05bbdbab660ca96142223460ebae1ed6aa47
--- /dev/null
+++ b/ee/app/controllers/projects/security/api_fuzzing_configuration_controller.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Projects
+  module Security
+    class ApiFuzzingConfigurationController < Projects::ApplicationController
+      include SecurityDashboardsPermissions
+
+      alias_method :vulnerable, :project
+
+      feature_category :fuzz_testing
+
+      def show
+        not_found unless Feature.enabled?(:api_fuzzing_configuration_ui, @project, default_enabled: :yaml)
+      end
+    end
+  end
+end
diff --git a/ee/app/controllers/projects/security/configuration_controller.rb b/ee/app/controllers/projects/security/configuration_controller.rb
index c0df5df217104825d3d163210383028d1287ad15..b916a3e50dea0a003584db88880a7f45cfa7c4b0 100644
--- a/ee/app/controllers/projects/security/configuration_controller.rb
+++ b/ee/app/controllers/projects/security/configuration_controller.rb
@@ -10,6 +10,7 @@ class ConfigurationController < Projects::ApplicationController
       before_action only: [:show] do
         push_frontend_feature_flag(:security_auto_fix, project, default_enabled: false)
         push_frontend_feature_flag(:sast_configuration_ui, project, default_enabled: true)
+        push_frontend_feature_flag(:api_fuzzing_configuration_ui, project, default_enabled: :yaml)
       end
 
       before_action only: [:auto_fix] do
diff --git a/ee/app/helpers/ee/projects_helper.rb b/ee/app/helpers/ee/projects_helper.rb
index afed7001315797c82f0262b4ac4496bc4e58beeb..274f16523b927851388d95998927f84333547df5 100644
--- a/ee/app/helpers/ee/projects_helper.rb
+++ b/ee/app/helpers/ee/projects_helper.rb
@@ -162,6 +162,7 @@ def sidebar_security_paths
       %w[
         projects/security/configuration#show
         projects/security/sast_configuration#show
+        projects/security/api_fuzzing_configuration#show
         projects/security/vulnerabilities#show
         projects/security/vulnerability_report#index
         projects/security/dashboard#index
@@ -200,6 +201,7 @@ def sidebar_security_configuration_paths
       %w[
         projects/security/configuration#show
         projects/security/sast_configuration#show
+        projects/security/api_fuzzing_configuration#show
         projects/security/dast_profiles#show
         projects/security/dast_site_profiles#new
         projects/security/dast_site_profiles#edit
diff --git a/ee/app/presenters/projects/security/configuration_presenter.rb b/ee/app/presenters/projects/security/configuration_presenter.rb
index eccd873e189fddc353d174bb931943edf94707a1..5b3c0c16785ac4159ee29883337d47da8eddcdd0 100644
--- a/ee/app/presenters/projects/security/configuration_presenter.rb
+++ b/ee/app/presenters/projects/security/configuration_presenter.rb
@@ -183,7 +183,8 @@ def project_settings
       def configuration_path(type)
         {
           sast: project_security_configuration_sast_path(project),
-          dast_profiles: project_security_configuration_dast_profiles_path(project)
+          dast_profiles: project_security_configuration_dast_profiles_path(project),
+          api_fuzzing: ::Feature.enabled?(:api_fuzzing_configuration_ui, project, default_enabled: :yaml) ? project_security_configuration_api_fuzzing_path(project) : nil
         }[type]
       end
     end
diff --git a/ee/app/views/projects/security/api_fuzzing_configuration/show.html.haml b/ee/app/views/projects/security/api_fuzzing_configuration/show.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..a92c186168be2633544da6d91ff11feba9fcad9a
--- /dev/null
+++ b/ee/app/views/projects/security/api_fuzzing_configuration/show.html.haml
@@ -0,0 +1,5 @@
+- add_to_breadcrumbs _("Security Configuration"), project_security_configuration_path(@project)
+- breadcrumb_title _("API Fuzzing Configuration")
+- page_title _("API Fuzzing Configuration")
+
+%h1= "API fuzzing configuration"
diff --git a/ee/config/feature_flags/development/api_fuzzing_configuration_ui.yml b/ee/config/feature_flags/development/api_fuzzing_configuration_ui.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ad15a26b93f3c4ba15037a3574d4263ac1956517
--- /dev/null
+++ b/ee/config/feature_flags/development/api_fuzzing_configuration_ui.yml
@@ -0,0 +1,8 @@
+---
+name: api_fuzzing_configuration_ui
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/51940
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/299234
+milestone: '13.9'
+type: development
+group: group::fuzz testing
+default_enabled: false
diff --git a/ee/config/routes/project.rb b/ee/config/routes/project.rb
index 4da2046b0082462dd12fb7c1da526f940bc59468..9efc0d55f1d250a75acd7395e9a21b375ca9ed66 100644
--- a/ee/config/routes/project.rb
+++ b/ee/config/routes/project.rb
@@ -67,6 +67,7 @@
             post :auto_fix, on: :collection
             resource :corpus_management, only: [:show], controller: :corpus_management
             resource :sast, only: [:show, :create], controller: :sast_configuration
+            resource :api_fuzzing, only: :show, controller: :api_fuzzing_configuration
             resource :dast_profiles, only: [:show] do
               resources :dast_site_profiles, only: [:new, :edit]
               resources :dast_scanner_profiles, only: [:new, :edit]
diff --git a/ee/spec/controllers/projects/security/api_fuzzing_configuration_controller_spec.rb b/ee/spec/controllers/projects/security/api_fuzzing_configuration_controller_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2ea82e028ff133e2b61f5f359af21fb957faeab0
--- /dev/null
+++ b/ee/spec/controllers/projects/security/api_fuzzing_configuration_controller_spec.rb
@@ -0,0 +1,73 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Projects::Security::ApiFuzzingConfigurationController do
+  let_it_be(:group) { create(:group) }
+  let_it_be(:project) { create(:project, namespace: group) }
+  let_it_be(:developer) { create(:user) }
+  let_it_be(:guest) { create(:user) }
+
+  before_all do
+    group.add_developer(developer)
+    group.add_guest(guest)
+  end
+
+  describe 'GET #show' do
+    subject(:request) { get :show, params: { namespace_id: project.namespace, project_id: project } }
+
+    render_views
+
+    it_behaves_like SecurityDashboardsPermissions do
+      let(:vulnerable) { project }
+      let(:security_dashboard_action) { request }
+    end
+
+    context 'with authorized user' do
+      before do
+        stub_licensed_features(security_dashboard: true)
+
+        sign_in(developer)
+      end
+
+      it 'renders the show template' do
+        request
+
+        expect(response).to have_gitlab_http_status(:ok)
+        expect(response).to render_template(:show)
+      end
+
+      it 'renders the side navigation with the correct submenu set as active' do
+        request
+
+        expect(response.body).to have_active_sub_navigation('Configuration')
+      end
+
+      context 'with feature flag disabled' do
+        before do
+          stub_feature_flags(api_fuzzing_configuration_ui: false)
+        end
+
+        it 'returns a 404 for an HTML request' do
+          request
+
+          expect(response).to have_gitlab_http_status(:not_found)
+        end
+      end
+    end
+
+    context 'with unauthorized user' do
+      before do
+        stub_licensed_features(security_dashboard: true)
+
+        sign_in(guest)
+      end
+
+      it 'returns a 403' do
+        request
+
+        expect(response).to have_gitlab_http_status(:forbidden)
+      end
+    end
+  end
+end
diff --git a/ee/spec/helpers/projects_helper_spec.rb b/ee/spec/helpers/projects_helper_spec.rb
index 5fca91caf7e54034a6914045fc3822704aedecad..53771168ecc063cb071d38bfa4bdb39c369c6abd 100644
--- a/ee/spec/helpers/projects_helper_spec.rb
+++ b/ee/spec/helpers/projects_helper_spec.rb
@@ -204,6 +204,7 @@
       %w[
         projects/security/configuration#show
         projects/security/sast_configuration#show
+        projects/security/api_fuzzing_configuration#show
         projects/security/vulnerabilities#show
         projects/security/vulnerability_report#index
         projects/security/dashboard#index
@@ -248,6 +249,7 @@
       %w[
         projects/security/configuration#show
         projects/security/sast_configuration#show
+        projects/security/api_fuzzing_configuration#show
         projects/security/dast_profiles#show
         projects/security/dast_site_profiles#new
         projects/security/dast_site_profiles#edit
diff --git a/ee/spec/presenters/projects/security/configuration_presenter_spec.rb b/ee/spec/presenters/projects/security/configuration_presenter_spec.rb
index 5d51976778dbebe0a30af1c08196f887cd32b847..2444b9a3cfab21187f316533329de21b0d01b738 100644
--- a/ee/spec/presenters/projects/security/configuration_presenter_spec.rb
+++ b/ee/spec/presenters/projects/security/configuration_presenter_spec.rb
@@ -274,13 +274,11 @@ def security_scan(type, configured:, auto_dev_ops_enabled: false)
   end
 
   def configuration_path(type)
-    if type === :dast_profiles
-      project_security_configuration_dast_profiles_path(project)
-    elsif type === :sast
-      project_security_configuration_sast_path(project)
-    else
-      nil
-    end
+    {
+      dast_profiles: project_security_configuration_dast_profiles_path(project),
+      sast: project_security_configuration_sast_path(project),
+      api_fuzzing: project_security_configuration_api_fuzzing_path(project)
+    }[type]
   end
 
   def scan_status(type, configured, auto_dev_ops_enabled)
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index fd23f9b9cfef9924cd7090e16605a61a1e8b25b4..3ed2267acaafb73a115a0a234faf63ef019391de 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -1361,6 +1361,9 @@ msgstr ""
 msgid "API Fuzzing"
 msgstr ""
 
+msgid "API Fuzzing Configuration"
+msgstr ""
+
 msgid "API Help"
 msgstr ""