diff --git a/data/web/promote.telegram.org/js/promote.js b/data/web/promote.telegram.org/js/promote.js
index deb44b3809..7b9076daf3 100644
--- a/data/web/promote.telegram.org/js/promote.js
+++ b/data/web/promote.telegram.org/js/promote.js
@@ -1719,6 +1719,11 @@ var Account = {
     Aj.onLoad(function(state) {
       cont.on('click.curPage', '.js-copy-token-btn', Account.eCopyToken);
       cont.on('click.curPage', '.js-revoke-token-btn', Account.eRevokeToken);
+      state.$form = $('.api-edit-form', cont);
+      Ads.formInit(state.$form);
+      state.$form.on('submit', preventDefault);
+      cont.on('click.curPage', '.js-save-settings-btn', Account.eApiSubmitForm);
+      cont.on('change.curPage', '.pr-form-control', Account.onFieldChange);
     });
   },
   eCopyToken: function(e) {
@@ -1770,6 +1775,36 @@ var Account = {
       });
     });
     return false;
+  },
+  eApiSubmitForm: function(e) {
+    e.preventDefault();
+    var $form   = Aj.state.$form;
+    var $button = $(this);
+    var params = {
+      owner_id: Aj.state.ownerId,
+      ip_list:  $form.field('ip_list').value()
+    };
+    $button.prop('disabled', true);
+    Aj.apiRequest('saveApiSettings', params, function(result) {
+      $button.prop('disabled', false);
+      if (result.error) {
+        if (result.field) {
+          var $field = $form.field(result.field);
+          if ($field.size()) {
+            Ads.showFieldError($field, result.error, true);
+            return false;
+          }
+        }
+        return showAlert(result.error);
+      }
+      if (result.new_ip_list) {
+        $form.field('ip_list').value(result.new_ip_list).updateAutosize();
+      }
+      if (result.toast) {
+        showToast(result.toast);
+      }
+    });
+    return false;
   }
 };