diff --git a/changelogs/unreleased/api-return-400-if-post-systemhook-fails.yml b/changelogs/unreleased/api-return-400-if-post-systemhook-fails.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d132d7e79c3ff3a22e9ac4be2e302e2a87e067f9
--- /dev/null
+++ b/changelogs/unreleased/api-return-400-if-post-systemhook-fails.yml
@@ -0,0 +1,4 @@
+---
+title: Return 400 when creating a system hook fails
+merge_request: 7350
+author: Robert Schilling
diff --git a/lib/api/system_hooks.rb b/lib/api/system_hooks.rb
index 32f731c565221eaf2740548345dbb5a5445eec7e..b6bfff9f20f2d2387ac96387a48dca8c167f539a 100644
--- a/lib/api/system_hooks.rb
+++ b/lib/api/system_hooks.rb
@@ -32,7 +32,7 @@ module API
         if hook.save
           present hook, with: Entities::Hook
         else
-          not_found!
+          render_validation_error!(hook)
         end
       end
 
diff --git a/spec/requests/api/system_hooks_spec.rb b/spec/requests/api/system_hooks_spec.rb
index f685a3685e6969f4779d23fa64478cd2a5656624..6c9df21f5983843feda4ad2d08fbbbba0fcf7d80 100644
--- a/spec/requests/api/system_hooks_spec.rb
+++ b/spec/requests/api/system_hooks_spec.rb
@@ -52,6 +52,12 @@ describe API::API, api: true  do
       expect(response).to have_http_status(400)
     end
 
+    it "responds with 400 if url is invalid" do
+      post api("/hooks", admin), url: 'hp://mep.mep'
+
+      expect(response).to have_http_status(400)
+    end
+
     it "does not create new hook without url" do
       expect do
         post api("/hooks", admin)