diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php
index ea2d0d1..95dc27b 100644
--- a/src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php
+++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php
@@ -159,6 +159,17 @@ class WP_REST_Terms_Controller extends WP_REST_Controller {
 	 */
 	public function get_items( $request ) {
 
+		// Check for taxonomy param.
+		$taxonomy = isset( $request['taxonomy'] ) ? $request['taxonomy'] : $this->taxonomy;
+
+		$taxonomy_obj = get_taxonomy( $taxonomy );
+
+		if ( false === $taxonomy_obj ) {
+			return new WP_Error( 'invalid-taxonomy', sprintf( __( "Invalid '%s' taxonomy" ), $taxonomy ), array( 'status' => 405 ) );
+		}
+
+		$this->taxonomy = $taxonomy;
+
 		// Retrieve the list of registered collection query parameters.
 		$registered = $this->get_collection_params();
 
@@ -208,8 +219,6 @@ class WP_REST_Terms_Controller extends WP_REST_Controller {
 			$prepared_args['offset'] = ( $request['page'] - 1 ) * $prepared_args['number'];
 		}
 
-		$taxonomy_obj = get_taxonomy( $this->taxonomy );
-
 		if ( $taxonomy_obj->hierarchical && isset( $registered['parent'], $request['parent'] ) ) {
 			if ( 0 === $request['parent'] ) {
 				// Only query top-level terms.
@@ -985,6 +994,12 @@ class WP_REST_Terms_Controller extends WP_REST_Controller {
 			),
 		);
 
+		$query_params['taxonomy'] = array(
+			'description' => __( 'Taxonomy.' ),
+			'type'        => 'string',
+			'default'     => null,
+		);
+
 		/**
 		 * Filter collection parameters for the terms controller.
 		 *
diff --git a/tests/phpunit/tests/rest-api/rest-tags-controller.php b/tests/phpunit/tests/rest-api/rest-tags-controller.php
index f2cd6a7..48026dd 100644
--- a/tests/phpunit/tests/rest-api/rest-tags-controller.php
+++ b/tests/phpunit/tests/rest-api/rest-tags-controller.php
@@ -91,6 +91,7 @@ class WP_Test_REST_Tags_Controller extends WP_Test_REST_Controller_Testcase {
 				'post',
 				'search',
 				'slug',
+				'taxonomy',
 			), $keys
 		);
 	}
