diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
index 6a9f4d3e52..a4f92c8e77 100644
--- a/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
+++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
@@ -222,6 +222,38 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
 			)
 		);
 
+		/**
+		 * Expose previous slugs in the REST API.
+		 *
+		 * Available only in edit context.
+		 *
+		 * @since 6.x.x
+		 */
+		register_rest_field(
+			$this->post_type,
+			'old_slugs',
+			array(
+				'get_callback' => function ( $object ) {
+					$post_id = isset( $object['id'] ) ? (int) $object['id'] : 0;
+
+					if ( ! $post_id ) {
+						return null;
+					}
+
+					$old_slugs = get_post_meta( $post_id, '_wp_old_slug' );
+
+					if ( empty( $old_slugs ) ) {
+						return null;
+					}
+
+					return array_values( array_unique( $old_slugs ) );
+				},
+				'schema'       => array(
+					'description' => __( 'Previous slugs used for this post.' ),
+					'type'        => array( 'array', 'null' ),
+					'context'     => array( 'edit' ),
+					'items'       => array(
+						'type' => 'string',
+					),
+				),
+			)
+		);
+
 		return $fields;
 	}
diff --git a/tests/phpunit/tests/rest-api/rest-posts-controller.php b/tests/phpunit/tests/rest-api/rest-posts-controller.php
index 51c6a4df12..3c91d8f8aa 100644
--- a/tests/phpunit/tests/rest-api/rest-posts-controller.php
+++ b/tests/phpunit/tests/rest-api/rest-posts-controller.php
@@ -4123,6 +4123,38 @@ class WP_Test_REST_Posts_Controller extends WP_Test_REST_Controller_Testcase {
 		$this->assertArrayNotHasKey( 'old_slugs', $data );
 	}
 
+	/**
+	 * Ticket #41616
+	 *
+	 * Old slugs should be exposed only in edit context.
+	 */
+	public function test_old_slugs_available_in_edit_context() {
+		$post_id = self::factory()->post->create(
+			array(
+				'post_name' => 'current-slug',
+			)
+		);
+
+		add_post_meta( $post_id, '_wp_old_slug', 'old-slug-1' );
+		add_post_meta( $post_id, '_wp_old_slug', 'old-slug-2' );
+
+		wp_set_current_user( self::$editor_id );
+
+		$request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . $post_id );
+		$request->set_param( 'context', 'edit' );
+
+		$response = rest_get_server()->dispatch( $request );
+		$data     = $response->get_data();
+
+		$this->assertArrayHasKey( 'old_slugs', $data );
+		$this->assertSame(
+			array( 'old-slug-1', 'old-slug-2' ),
+			$data['old_slugs']
+		);
+	}
 }
