Index: src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php
===================================================================
--- src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php	(revision 42349)
+++ src/wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php	(working copy)
@@ -419,7 +419,7 @@
 			if ( $term_id = $term->get_error_data( 'term_exists' ) ) {
 				$existing_term = get_term( $term_id, $this->taxonomy );
 				$term->add_data( $existing_term->term_id, 'term_exists' );
-				$term->add_data( array( 'status' => 409 ) );
+				$term->add_data( array( 'status' => 409, 'term_id' => $term_id ) );
 			}
 
 			return $term;
Index: tests/phpunit/tests/rest-api/rest-categories-controller.php
===================================================================
--- tests/phpunit/tests/rest-api/rest-categories-controller.php	(revision 42349)
+++ tests/phpunit/tests/rest-api/rest-categories-controller.php	(working copy)
@@ -696,14 +696,18 @@
 	 */
 	public function test_create_item_term_already_exists() {
 		wp_set_current_user( self::$administrator );
+		$existing_id = $this->factory->category->create( array( 'name' => 'Existing' ) );
+
 		$request = new WP_REST_Request( 'POST', '/wp/v2/categories' );
-		$request->set_param( 'name', 'test' );
+		$request->set_param( 'name', 'Existing' );
+
 		$response = $this->server->dispatch( $request );
-		$this->assertEquals( 201, $response->get_status() );
-		$response = $this->server->dispatch( $request );
 		$this->assertEquals( 409, $response->get_status() );
 		$data = $response->get_data();
 		$this->assertEquals( 'term_exists', $data['code'] );
+		$this->assertEquals( $existing_id, (int) $data['data']['term_id'] );
+
+		wp_delete_term( $existing_id, 'category' );
 	}
 
 	public function test_create_item_invalid_taxonomy() {
