diff --git src/wp-includes/default-filters.php src/wp-includes/default-filters.php
index cfdd709..4df448c 100644
--- src/wp-includes/default-filters.php
+++ src/wp-includes/default-filters.php
@@ -204,17 +204,6 @@ add_filter( 'title_save_pre',           'trim'                                );
 
 add_filter( 'http_request_host_is_external', 'allowed_http_request_hosts', 10, 2 );
 
-// REST API filters.
-add_action( 'xmlrpc_rsd_apis',            'rest_output_rsd' );
-add_action( 'wp_head',                    'rest_output_link_wp_head', 10, 0 );
-add_action( 'template_redirect',          'rest_output_link_header', 11, 0 );
-add_action( 'auth_cookie_malformed',      'rest_cookie_collect_status' );
-add_action( 'auth_cookie_expired',        'rest_cookie_collect_status' );
-add_action( 'auth_cookie_bad_username',   'rest_cookie_collect_status' );
-add_action( 'auth_cookie_bad_hash',       'rest_cookie_collect_status' );
-add_action( 'auth_cookie_valid',          'rest_cookie_collect_status' );
-add_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
-
 // Actions
 add_action( 'wp_head',             '_wp_render_title_tag',            1     );
 add_action( 'wp_head',             'wp_enqueue_scripts',              1     );
@@ -358,10 +347,36 @@ add_action( 'after_password_reset', 'wp_password_change_notification' );
 add_action( 'register_new_user',      'wp_send_new_user_notifications' );
 add_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );
 
-// REST API actions.
-add_action( 'init',          'rest_api_init' );
-add_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
-add_action( 'parse_request', 'rest_api_loaded' );
+/*
+ * REST API actions and filters.
+ */
+
+add_action( 'init',                              'rest_api_init' );
+add_action( 'parse_request',                     'rest_api_loaded' );
+
+// Deprecated reporting.
+add_action( 'deprecated_function_run',           '_rest_handle_deprecated_function', 10, 3 );
+add_filter( 'deprecated_function_trigger_error', '_rest_deprecated_trigger_error' );
+add_action( 'deprecated_argument_run',           '_rest_handle_deprecated_argument', 10, 3 );
+add_filter( 'deprecated_argument_trigger_error', '_rest_deprecated_trigger_error' );
+
+// Visibility
+add_action( 'xmlrpc_rsd_apis',                   'rest_output_rsd' );
+add_action( 'wp_head',                           'rest_output_link_wp_head', 10, 0 );
+add_action( 'template_redirect',                 'rest_output_link_header', 11, 0 );
+
+// Authentication
+add_action( 'auth_cookie_malformed',             'rest_cookie_collect_status' );
+add_action( 'auth_cookie_expired',               'rest_cookie_collect_status' );
+add_action( 'auth_cookie_bad_username',          'rest_cookie_collect_status' );
+add_action( 'auth_cookie_bad_hash',              'rest_cookie_collect_status' );
+add_action( 'auth_cookie_valid',                 'rest_cookie_collect_status' );
+add_filter( 'rest_authentication_errors',        'rest_cookie_check_errors', 100 );
+
+// Default serving.
+add_filter( 'rest_pre_serve_request',            'rest_send_cors_headers' );
+add_filter( 'rest_post_dispatch',                'rest_send_allow_header', 10, 3 );
+add_filter( 'rest_pre_dispatch',                 'rest_handle_options_request', 10, 3 );
 
 /**
  * Filters formerly mixed into wp-includes
diff --git src/wp-includes/rest-api/rest-functions.php src/wp-includes/rest-api/rest-functions.php
index 8a687f7..2ebf10a 100644
--- src/wp-includes/rest-api/rest-functions.php
+++ src/wp-includes/rest-api/rest-functions.php
@@ -129,27 +129,6 @@ function rest_api_register_rewrites() {
 }
 
 /**
- * Registers the default REST API filters.
- *
- * @since 4.4.0
- *
- * @internal This will live in default-filters.php
- */
-function rest_api_default_filters() {
-	// Deprecated reporting.
-	add_action( 'deprecated_function_run', 'rest_handle_deprecated_function', 10, 3 );
-	add_filter( 'deprecated_function_trigger_error', '__return_false' );
-	add_action( 'deprecated_argument_run', 'rest_handle_deprecated_argument', 10, 3 );
-	add_filter( 'deprecated_argument_trigger_error', '__return_false' );
-
-	// Default serving.
-	add_filter( 'rest_pre_serve_request', 'rest_send_cors_headers' );
-	add_filter( 'rest_post_dispatch', 'rest_send_allow_header', 10, 3 );
-
-	add_filter( 'rest_pre_dispatch', 'rest_handle_options_request', 10, 3 );
-}
-
-/**
  * Loads the REST API.
  *
  * @since 4.4.0
@@ -342,38 +321,62 @@ function rest_ensure_response( $response ) {
  * Handles _deprecated_function() errors.
  *
  * @since 4.4.0
+ * @access private
  *
  * @param string $function    Function name.
  * @param string $replacement Replacement function name.
  * @param string $version     Version.
  */
-function rest_handle_deprecated_function( $function, $replacement, $version ) {
+function _rest_handle_deprecated_function( $function, $replacement, $version ) {
 	if ( ! empty( $replacement ) ) {
 		$string = sprintf( __( '%1$s (since %2$s; use %3$s instead)' ), $function, $version, $replacement );
 	} else {
 		$string = sprintf( __( '%1$s (since %2$s; no alternative available)' ), $function, $version );
 	}
 
-	header( sprintf( 'X-WP-DeprecatedFunction: %s', $string ) );
+	if ( defined( 'REST_REQUEST' ) && ! headers_sent() ) {
+		header( sprintf( 'X-WP-DeprecatedFunction: %s', $string ) );
+	}
 }
 
 /**
  * Handles _deprecated_argument() errors.
  *
  * @since 4.4.0
+ * @access private
  *
  * @param string $function    Function name.
  * @param string $replacement Replacement function name.
  * @param string $version     Version.
  */
-function rest_handle_deprecated_argument( $function, $replacement, $version ) {
+function _rest_handle_deprecated_argument( $function, $replacement, $version ) {
 	if ( ! empty( $replacement ) ) {
 		$string = sprintf( __( '%1$s (since %2$s; %3$s)' ), $function, $version, $replacement );
 	} else {
 		$string = sprintf( __( '%1$s (since %2$s; no alternative available)' ), $function, $version );
 	}
 
-	header( sprintf( 'X-WP-DeprecatedParam: %s', $string ) );
+	if ( defined( 'REST_REQUEST' ) && ! headers_sent() ) {
+		header( sprintf( 'X-WP-DeprecatedParam: %s', $string ) );
+	}
+}
+
+/**
+ * Filters whether to trigger an error for deprecated functions
+ * and arguments during a REST request.
+ *
+ * @since 4.4.0
+ * @access private
+ *
+ * @param bool $trigger Whether to trigger the error for deprecated functions.
+ * @return bool False when it is a REST Request, `$trigger` otherwise.
+ */
+function _rest_deprecated_trigger_error( $trigger ) {
+	if ( defined( 'REST_REQUEST' ) ) {
+		return false;
+	}
+
+	return $trigger;
 }
 
 /**
