diff --git src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
index 0661152..ae113a3 100644
--- src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
+++ src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
@@ -1501,10 +1501,12 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
 
 		if ( ! empty( $schema['properties']['content'] ) ) {
 			$data['content'] = array(
-				'raw'       => $post->post_content,
+				'raw'           => $post->post_content,
 				/** This filter is documented in wp-includes/post-template.php */
-				'rendered'  => post_password_required( $post ) ? '' : apply_filters( 'the_content', $post->post_content ),
-				'protected' => (bool) $post->post_password,
+				'rendered'      => post_password_required( $post ) ? '' : apply_filters( 'the_content', $post->post_content ),
+				'protected'     => (bool) $post->post_password,
+				// @todo: Replace with `gutenberg_content_block_version()` (or adjust accordingly) when Gutenberg merges into core.
+				'block_version' => ( false !== strpos( $post->post_content, '<!-- wp:' ) ) ? 1 : 0,
 			);
 		}
 
@@ -1928,18 +1930,24 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
 							'validate_callback' => null, // Note: validation implemented in self::prepare_item_for_database()
 						),
 						'properties'  => array(
-							'raw'       => array(
+							'raw'           => array(
 								'description' => __( 'Content for the object, as it exists in the database.' ),
 								'type'        => 'string',
 								'context'     => array( 'edit' ),
 							),
-							'rendered'  => array(
+							'rendered'      => array(
 								'description' => __( 'HTML content for the object, transformed for display.' ),
 								'type'        => 'string',
 								'context'     => array( 'view', 'edit' ),
 								'readonly'    => true,
 							),
-							'protected' => array(
+							'block_version' => array(
+								'description' => __( 'Version of the content block format, used by the object.' ),
+								'type'        => 'integer',
+								'context'     => array( 'view', 'edit' ),
+								'readonly'    => true,
+							),
+							'protected'     => array(
 								'description' => __( 'Whether the content is protected with a password.' ),
 								'type'        => 'boolean',
 								'context'     => array( 'view', 'edit', 'embed' ),
diff --git tests/phpunit/tests/rest-api/rest-posts-controller.php tests/phpunit/tests/rest-api/rest-posts-controller.php
index 5152399..3008741 100644
--- tests/phpunit/tests/rest-api/rest-posts-controller.php
+++ tests/phpunit/tests/rest-api/rest-posts-controller.php
@@ -1464,6 +1464,96 @@ class WP_Test_REST_Posts_Controller extends WP_Test_REST_Post_Type_Controller_Te
 		$this->assertTrue( $data['excerpt']['protected'] );
 	}
 
+	/**
+	 * The post response should have `block_version` indicate that block content is present when in view context.
+	 *
+	 * @ticket 43887
+	 */
+	public function test_get_post_should_have_block_version_indicate_content_blocks_when_context_view() {
+		$post_id = $this->factory->post->create(
+			array(
+				'post_content' => '<!-- wp:separator -->',
+			)
+		);
+
+		$request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
+		$response = rest_get_server()->dispatch( $request );
+
+		$this->check_get_post_response( $response, 'view' );
+		$data = $response->get_data();
+
+		$this->assertSame( 1, $data['content']['block_version'] );
+	}
+
+	/**
+	 * The post response should have `block_version` indicate that block content is present when in view context.
+	 *
+	 * @ticket 43887
+	 */
+	public function test_get_post_should_have_block_version_indicate_no_content_blocks_when_context_view() {
+		$post_id = $this->factory->post->create(
+			array(
+				'post_content' => '<hr/>',
+			)
+		);
+
+		$request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
+		$response = rest_get_server()->dispatch( $request );
+
+		$this->check_get_post_response( $response, 'view' );
+		$data = $response->get_data();
+
+		$this->assertSame( 0, $data['content']['block_version'] );
+	}
+
+	/**
+	 * The post response should have `block_version` indicate that block content is present when in edit context.
+	 *
+	 * @ticket 43887
+	 */
+	public function test_get_post_should_have_block_version_indicate_block_content_when_context_edit() {
+		wp_set_current_user( self::$editor_id );
+
+		$post_id = $this->factory->post->create(
+			array(
+				'post_content' => '<!-- wp:separator -->',
+			)
+		);
+
+		$request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
+		$request->set_param( 'context', 'edit' );
+		$response = rest_get_server()->dispatch( $request );
+
+		$this->check_get_post_response( $response, 'edit' );
+		$data = $response->get_data();
+
+		$this->assertSame( 1, $data['content']['block_version'] );
+	}
+	
+	/**
+	 * The post response should have `block_version` indicate that no block content is present when in edit context.
+	 *
+	 * @ticket 43887
+	 */
+	public function test_get_post_should_have_block_version_indicate_no_block_content_when_context_edit() {
+		wp_set_current_user( self::$editor_id );
+
+		$post_id = $this->factory->post->create(
+			array(
+				'post_content' => '<hr/>',
+			)
+		);
+
+		$request = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
+		$request->set_param( 'context', 'edit' );
+		$response = rest_get_server()->dispatch( $request );
+
+		$this->check_get_post_response( $response, 'edit' );
+		$data = $response->get_data();
+
+		$this->assertSame( 0, $data['content']['block_version'] );
+	}
+
 	public function test_get_item_read_permission_custom_post_status_not_authenticated() {
 		register_post_status( 'testpubstatus', array( 'public' => true ) );
 		register_post_status( 'testprivtatus', array( 'public' => false ) );
