diff --git a/ChangeLog.API b/ChangeLog.API
--- a/ChangeLog.API
+++ b/ChangeLog.API
@@ -45,12 +45,6 @@
 		* purple_protocol_factory_iface_* for factory interface methods
 		* purple_protocol_action_new
 		* purple_protocol_action_free
-		* purple_protocols_add
-		* purple_protocols_remove
-		* purple_protocols_find
-		* purple_protocols_get_all
-		* purple_protocols_init
-		* purple_protocols_uninit
 		* purple_request_certificate
 		* purple_request_field_certificate_new
 		* purple_request_field_certificate_get_value
diff --git a/libpurple/protocols.h b/libpurple/protocols.h
--- a/libpurple/protocols.h
+++ b/libpurple/protocols.h
@@ -366,57 +366,6 @@
  */
 void purple_protocol_got_media_caps(PurpleAccount *account, const char *who);
 
-/**************************************************************************/
-/* Protocols API                                                          */
-/**************************************************************************/
-
-/**
- * purple_protocols_find:
- * @id: The protocol's ID.
- *
- * Finds a protocol by ID.
- *
- * Returns: (transfer none): The protocol, if found, or %NULL otherwise.
- */
-PurpleProtocol *purple_protocols_find(const char *id);
-
-/**
- * purple_protocols_add:
- * @protocol_type:  The type of the protocol to add.
- * @error:  Return location for a #GError or %NULL. If provided, this
- *          will be set to the reason if adding fails.
- *
- * Adds a protocol to the list of protocols.
- *
- * Returns: (transfer none): The protocol instance if the protocol was added,
- *          else %NULL.
- */
-PurpleProtocol *purple_protocols_add(GType protocol_type, GError **error);
-
-/**
- * purple_protocols_remove:
- * @protocol:  The protocol to remove.
- * @error:  Return location for a #GError or %NULL. If provided, this
- *          will be set to the reason if removing fails.
- *
- * Removes a protocol from the list of protocols. This will disconnect all
- * connected accounts using this protocol, and free the protocol's user splits
- * and protocol options.
- *
- * Returns: TRUE if the protocol was removed, else FALSE.
- */
-gboolean purple_protocols_remove(PurpleProtocol *protocol, GError **error);
-
-/**
- * purple_protocols_get_all:
- *
- * Returns a list of all loaded protocols.
- *
- * Returns: (element-type PurpleProtocol) (transfer container): A list of all
- *          loaded protocols.
- */
-GList *purple_protocols_get_all(void);
-
 G_END_DECLS
 
 #endif /* PURPLE_PROTOCOLS_H */
diff --git a/libpurple/protocols.c b/libpurple/protocols.c
--- a/libpurple/protocols.c
+++ b/libpurple/protocols.c
@@ -555,65 +555,3 @@
 #endif
 }
 
-/**************************************************************************
- * Protocols API
- **************************************************************************/
-#define PURPLE_PROTOCOLS_DOMAIN  (g_quark_from_static_string("protocols"))
-
-PurpleProtocol *
-purple_protocols_find(const char *id) {
-	PurpleProtocolManager *manager = purple_protocol_manager_get_default();
-
-	return purple_protocol_manager_find(manager, id);
-}
-
-PurpleProtocol *
-purple_protocols_add(GType protocol_type, GError **error) {
-	PurpleProtocol *protocol = NULL;
-	PurpleProtocolManager *manager = NULL;
-
-	if (protocol_type == G_TYPE_INVALID) {
-		g_set_error_literal(error, PURPLE_PROTOCOLS_DOMAIN, 0,
-		                    _("Protocol type is not registered"));
-		return NULL;
-	}
-
-	if (!g_type_is_a(protocol_type, PURPLE_TYPE_PROTOCOL)) {
-		g_set_error_literal(error, PURPLE_PROTOCOLS_DOMAIN, 0,
-		                    _("Protocol type does not inherit PurpleProtocol"));
-		return NULL;
-	}
-
-	if (G_TYPE_IS_ABSTRACT(protocol_type)) {
-		g_set_error_literal(error, PURPLE_PROTOCOLS_DOMAIN, 0,
-		                    _("Protocol type is abstract"));
-		return NULL;
-	}
-
-	protocol = g_object_new(protocol_type, NULL);
-
-	manager = purple_protocol_manager_get_default();
-	if(!purple_protocol_manager_register(manager, protocol, error)) {
-		return NULL;
-	}
-
-	return protocol;
-}
-
-gboolean
-purple_protocols_remove(PurpleProtocol *protocol, GError **error) {
-	PurpleProtocolManager *manager;
-
-	g_return_val_if_fail(PURPLE_IS_PROTOCOL(protocol), FALSE);
-	g_return_val_if_fail(purple_protocol_get_id(protocol) != NULL, FALSE);
-
-	manager = purple_protocol_manager_get_default();
-	return purple_protocol_manager_unregister(manager, protocol, error);
-}
-
-GList *
-purple_protocols_get_all(void) {
-	PurpleProtocolManager *manager = purple_protocol_manager_get_default();
-
-	return purple_protocol_manager_get_all(manager);
-}
