diff --git a/plugins/webapi/drng/collectiveBeacon/handler.go b/plugins/webapi/drng/collectiveBeacon/handler.go
new file mode 100644
index 0000000000000000000000000000000000000000..6180a02a6f85858f3a06a011abc54d37134e1d69
--- /dev/null
+++ b/plugins/webapi/drng/collectiveBeacon/handler.go
@@ -0,0 +1,44 @@
+package collectiveBeacon
+
+import (
+ "net/http"
+
+ cb "github.com/iotaledger/goshimmer/packages/binary/drng/subtypes/collectiveBeacon/payload"
+ generic "github.com/iotaledger/goshimmer/packages/binary/messagelayer/payload"
+ "github.com/iotaledger/goshimmer/plugins/messagelayer"
+ "github.com/iotaledger/hive.go/marshalutil"
+ "github.com/labstack/echo"
+ "github.com/labstack/gommon/log"
+)
+
+// Handler creates a message of the given payload and
+// broadcasts it to the node's neighbors. It returns the message ID if successful.
+func Handler(c echo.Context) error {
+ var request Request
+ if err := c.Bind(&request); err != nil {
+ log.Info(err.Error())
+ return c.JSON(http.StatusBadRequest, Response{Error: err.Error()})
+ }
+
+ //TODO: to check max payload size allowed, if exceeding return an error
+
+ marshalUtil := marshalutil.New(request.Payload)
+ cbPayload, err := cb.Parse(marshalUtil)
+
+ parsedPayload, err := generic.Parse(marshalUtil)
+ if err != nil {
+ return c.JSON(http.StatusBadRequest, Response{Error: "Not a valid Payload"})
+ }
+ tx := messagelayer.MessageFactory.IssuePayload(parsedPayload)
+
+ return c.JSON(http.StatusOK, Response{Id: tx.Id().String()})
+}
+
+type Response struct {
+ Id string `json:"id,omitempty"`
+ Error string `json:"error,omitempty"`
+}
+
+type Request struct {
+ Payload []byte `json:"payload"`
+}
diff --git a/plugins/webapi/drng/plugin.go b/plugins/webapi/drng/plugin.go
new file mode 100644
index 0000000000000000000000000000000000000000..9b9649d297c6e41e23052e74d03768550f0ec325
--- /dev/null
+++ b/plugins/webapi/drng/plugin.go
@@ -0,0 +1,16 @@
+package drng
+
+import (
+ "github.com/iotaledger/goshimmer/plugins/webapi"
+ "github.com/iotaledger/goshimmer/plugins/webapi/drng/collectiveBeacon"
+ "github.com/iotaledger/hive.go/logger"
+ "github.com/iotaledger/hive.go/node"
+)
+
+var PLUGIN = node.NewPlugin("WebAPI dRNG Endpoint", node.Enabled, configure)
+var log *logger.Logger
+
+func configure(plugin *node.Plugin) {
+ log = logger.NewLogger("API-dRNG")
+ webapi.Server.POST("drng/collectiveBeacon", collectiveBeacon.Handler)
+}