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 9d33eaa..1a31630 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
@@ -978,7 +978,10 @@ class WP_REST_Terms_Controller extends WP_REST_Controller {
 
 		$query_params['slug'] = array(
 			'description'       => __( 'Limit result set to terms with a specific slug.' ),
-			'type'              => 'string',
+			'type'              => 'array',
+			'items'             => array(
+				'type'          => 'string'
+			),
 		);
 
 		/**
diff --git a/tests/phpunit/tests/rest-api/rest-tags-controller.php b/tests/phpunit/tests/rest-api/rest-tags-controller.php
index cb81b17..fccc4d7 100644
--- a/tests/phpunit/tests/rest-api/rest-tags-controller.php
+++ b/tests/phpunit/tests/rest-api/rest-tags-controller.php
@@ -378,6 +378,40 @@ class WP_Test_REST_Tags_Controller extends WP_Test_REST_Controller_Testcase {
 		$this->assertEquals( 'Apple', $data[0]['name'] );
 	}
 
+	public function test_get_items_slug_array_arg() {
+		$id1 = $this->factory->tag->create( array( 'name' => 'Taco' ) );
+		$id2 = $this->factory->tag->create( array( 'name' => 'Enchilada' ) );
+		$id3 = $this->factory->tag->create( array( 'name' => 'Burrito' ) );
+		$this->factory->tag->create( array( 'name' => 'Pizza' ) );
+		$request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
+		$request->set_param( 'slug', array(
+			'taco',
+			'burrito',
+			'enchilada',
+		) );
+		$response = $this->server->dispatch( $request );
+		$this->assertEquals( 200, $response->get_status() );
+		$data = $response->get_data();
+		$names = wp_list_pluck( $data, 'name' );
+		sort( $names );
+		$this->assertEquals( array( 'Burrito', 'Enchilada', 'Taco' ), $names );
+	}
+
+	public function test_get_items_slug_csv_arg() {
+		$id1 = $this->factory->tag->create( array( 'name' => 'Taco' ) );
+		$id2 = $this->factory->tag->create( array( 'name' => 'Enchilada' ) );
+		$id3 = $this->factory->tag->create( array( 'name' => 'Burrito' ) );
+		$this->factory->tag->create( array( 'name' => 'Pizza' ) );
+		$request = new WP_REST_Request( 'GET', '/wp/v2/tags' );
+		$request->set_param( 'slug', 'taco,burrito, enchilada');
+		$response = $this->server->dispatch( $request );
+		$this->assertEquals( 200, $response->get_status() );
+		$data = $response->get_data();
+		$names = wp_list_pluck( $data, 'name' );
+		sort( $names );
+		$this->assertEquals( array( 'Burrito', 'Enchilada', 'Taco' ), $names );
+	}
+
 	public function test_get_terms_private_taxonomy() {
 		register_taxonomy( 'robin', 'post', array( 'public' => false ) );
 		$term1 = $this->factory->term->create( array( 'name' => 'Cape', 'taxonomy' => 'robin' ) );
diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js
index b4c6109..2e47935 100644
--- a/tests/qunit/fixtures/wp-api-generated.js
+++ b/tests/qunit/fixtures/wp-api-generated.js
@@ -1990,7 +1990,10 @@ mockedApiResponse.Schema = {
                         "slug": {
                             "required": false,
                             "description": "Limit result set to terms with a specific slug.",
-                            "type": "string"
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
                         }
                     }
                 },
@@ -2225,7 +2228,10 @@ mockedApiResponse.Schema = {
                         "slug": {
                             "required": false,
                             "description": "Limit result set to terms with a specific slug.",
-                            "type": "string"
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
                         }
                     }
                 },
