diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6
index 767abc870..76f51ada8 100644
--- a/app/assets/javascripts/discourse/components/d-editor.js.es6
+++ b/app/assets/javascripts/discourse/components/d-editor.js.es6
@@ -176,8 +176,13 @@ class Toolbar {
   }
 }
 
-export function onToolbarCreate(func) {
+export function addToolbarCallback(func) {
   _createCallbacks.push(func);
+}
+
+export function onToolbarCreate(func) {
+  console.warn('`onToolbarCreate` is deprecated, use the plugin api instead.');
+  addToolbarCallback(func);
 };
 
 export default Ember.Component.extend({
diff --git a/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 b/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6
index 1d6275398..d358a1e1d 100644
--- a/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6
+++ b/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6
@@ -1,4 +1,4 @@
-import { onToolbarCreate } from 'discourse/components/d-editor';
+import { withPluginApi } from 'discourse/lib/plugin-api';
 
 export default {
   name: 'enable-emoji',
@@ -7,13 +7,15 @@ export default {
     const siteSettings = container.lookup('site-settings:main');
 
     if (siteSettings.enable_emoji) {
-      onToolbarCreate(toolbar => {
-        toolbar.addButton({
-          id: 'emoji',
-          group: 'extras',
-          icon: 'smile-o',
-          action: 'emoji',
-          title: 'composer.emoji'
+      withPluginApi('0.1', api => {
+        api.onToolbarCreate(toolbar => {
+          toolbar.addButton({
+            id: 'emoji',
+            group: 'extras',
+            icon: 'smile-o',
+            action: 'emoji',
+            title: 'composer.emoji'
+          });
         });
       });
 
diff --git a/app/assets/javascripts/discourse/lib/plugin-api.js.es6 b/app/assets/javascripts/discourse/lib/plugin-api.js.es6
index 86fe0c0bd..5995bd2b0 100644
--- a/app/assets/javascripts/discourse/lib/plugin-api.js.es6
+++ b/app/assets/javascripts/discourse/lib/plugin-api.js.es6
@@ -3,6 +3,7 @@ import ComposerEditor from 'discourse/components/composer-editor';
 import { addPosterIcon } from 'discourse/widgets/poster-name';
 import { addButton } from 'discourse/widgets/post-menu';
 import { includeAttributes } from 'discourse/lib/transform-post';
+import { addToolbarCallback } from 'discourse/components/d-editor';
 
 let _decorateId = 0;
 function decorate(klass, evt, cb) {
@@ -86,6 +87,10 @@ class PluginApi {
     addButton(name, callback);
   }
 
+  onToolbarCreate(callback) {
+    addToolbarCallback(callback);
+  }
+
 }
 
 let _pluginv01;
diff --git a/test/javascripts/components/d-editor-test.js.es6 b/test/javascripts/components/d-editor-test.js.es6
index ecb486f3a..d8985c19c 100644
--- a/test/javascripts/components/d-editor-test.js.es6
+++ b/test/javascripts/components/d-editor-test.js.es6
@@ -1,5 +1,5 @@
 import componentTest from 'helpers/component-test';
-import { onToolbarCreate } from 'discourse/components/d-editor';
+import { withPluginApi } from 'discourse/lib/plugin-api';
 
 moduleForComponent('d-editor', {integration: true});
 
@@ -540,12 +540,14 @@ componentTest('emoji', {
   template: '{{d-editor value=value}}',
   setup() {
     // Test adding a custom button
-    onToolbarCreate(toolbar => {
-      toolbar.addButton({
-        id: 'emoji',
-        group: 'extras',
-        icon: 'smile-o',
-        action: 'emoji'
+    withPluginApi('0.1', api => {
+      api.onToolbarCreate(toolbar => {
+        toolbar.addButton({
+          id: 'emoji',
+          group: 'extras',
+          icon: 'smile-o',
+          action: 'emoji'
+        });
       });
     });
     this.set('value', 'hello world.');