diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index fa76a54c2d89e463c1f87ba2565b39e1272dbee7..8d0664386b402f49910ff50817bde9eefd43ea76 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -270,5 +270,9 @@ module API
     class Contributor < Grape::Entity
       expose :name, :email, :commits, :additions, :deletions
     end
+
+    class BroadcastMessage < Grape::Entity
+      expose :message, :starts_at, :ends_at, :color, :font
+    end
   end
 end
diff --git a/lib/api/internal.rb b/lib/api/internal.rb
index 7a89a26facc8d8f974b12c19bdda5811de3f51d8..b5542c1874b05274fb81dc9ac62003743f2177f0 100644
--- a/lib/api/internal.rb
+++ b/lib/api/internal.rb
@@ -69,6 +69,14 @@ module API
           gitlab_rev: Gitlab::REVISION,
         }
       end
+
+      get "/broadcast_message" do
+        if message = BroadcastMessage.current
+          present message, with: Entities::BroadcastMessage
+        else
+          not_found!
+        end
+      end
     end
   end
 end
diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb
index 4faa1f9b964337f128e0062c885d3c46553e5215..1e8e9eb38d67645374b991d676d35179183528db 100644
--- a/spec/requests/api/internal_spec.rb
+++ b/spec/requests/api/internal_spec.rb
@@ -16,6 +16,27 @@ describe API::API, api: true  do
     end
   end
 
+  describe "GET /internal/broadcast_message" do
+    context "broadcast message exists" do
+      let!(:broadcast_message) { create(:broadcast_message, starts_at: Time.now.yesterday, ends_at: Time.now.tomorrow ) }
+
+      it do
+        get api("/internal/broadcast_message"), secret_token: secret_token
+
+        response.status.should == 200
+        json_response["message"].should == broadcast_message.message
+      end
+    end
+
+    context "broadcast message doesn't exist" do
+      it do
+        get api("/internal/broadcast_message"), secret_token: secret_token
+
+        response.status.should == 404
+      end
+    end
+  end
+
   describe "GET /internal/discover" do
     it do
       get(api("/internal/discover"), key_id: key.id, secret_token: secret_token)
@@ -37,7 +58,7 @@ describe API::API, api: true  do
           pull(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
 
@@ -46,7 +67,7 @@ describe API::API, api: true  do
           push(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
     end
@@ -61,7 +82,7 @@ describe API::API, api: true  do
           pull(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
 
@@ -70,7 +91,7 @@ describe API::API, api: true  do
           push(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -87,7 +108,7 @@ describe API::API, api: true  do
           pull(key, personal_project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
 
@@ -96,7 +117,7 @@ describe API::API, api: true  do
           push(key, personal_project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -114,7 +135,7 @@ describe API::API, api: true  do
           pull(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
 
@@ -123,7 +144,7 @@ describe API::API, api: true  do
           push(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -140,7 +161,7 @@ describe API::API, api: true  do
           archive(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_true
+          json_response["status"].should be_true
         end
       end
 
@@ -149,7 +170,7 @@ describe API::API, api: true  do
           archive(key, project)
 
           response.status.should == 200
-          JSON.parse(response.body)["status"].should be_false
+          json_response["status"].should be_false
         end
       end
     end
@@ -159,7 +180,7 @@ describe API::API, api: true  do
         pull(key, OpenStruct.new(path_with_namespace: 'gitlab/notexists'))
 
         response.status.should == 200
-        JSON.parse(response.body)["status"].should be_false
+        json_response["status"].should be_false
       end
     end
 
@@ -168,7 +189,7 @@ describe API::API, api: true  do
         pull(OpenStruct.new(id: 0), project)
 
         response.status.should == 200
-        JSON.parse(response.body)["status"].should be_false
+        json_response["status"].should be_false
       end
     end
   end