diff --git src/wp-includes/blocks.php src/wp-includes/blocks.php
index 0bbc6a3..4795631 100644
--- src/wp-includes/blocks.php
+++ src/wp-includes/blocks.php
@@ -261,4 +261,18 @@ function _recurse_do_blocks( $blocks, $all_blocks ) {
 	$rendered_content = preg_replace( '/<!--\s+\/?wp:.*?-->/m', '', $rendered_content );
 
 	return $rendered_content;
-}
\ No newline at end of file
+}
+
+/**
+ * Returns the current version of the block format that the content string is using.
+ *
+ * If the string doesn't contain blocks, it returns 0.
+ *
+ * @since 5.0.0
+ *
+ * @param string $content Content to test.
+ * @return int The block format version.
+ */
+function block_version( $content ) {
+	return has_blocks( $content ) ? 1 : 0;
+}
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 3fbf169..6750a6b 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
@@ -1509,10 +1509,11 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
 
 		if ( in_array( 'content', $fields, true ) ) {
 			$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,
+				'block_version' => block_version( $post->post_content ),
 			);
 		}
 
@@ -2062,6 +2063,12 @@ class WP_REST_Posts_Controller extends WP_REST_Controller {
 								'context'     => array( 'view', 'edit' ),
 								'readonly'    => true,
 							),
+							'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',
diff --git tests/phpunit/tests/blocks/block-type.php tests/phpunit/tests/blocks/block-type.php
index 5eed28d..ba80ab6 100644
--- tests/phpunit/tests/blocks/block-type.php
+++ tests/phpunit/tests/blocks/block-type.php
@@ -310,4 +310,47 @@ class WP_Test_Block_Type extends WP_UnitTestCase {
 
 		return json_encode( $attributes );
 	}
+
+	/**
+	 * Testing the block version.
+	 *
+	 * @ticket 43887
+	 *
+	 * @dataProvider data_block_version
+	 *
+	 * @param string|null $content  Content.
+	 * @param int         $expected Expected block version.
+	 */
+	public function test_block_version( $content, $expected ) {
+		$this->assertSame( $expected, block_version( $content ) );
+	}
+
+	/**
+	 * Test cases for test_block_version().
+	 *
+	 * @since 5.0.0
+	 *
+	 * @return array {
+	 *     @type array {
+	 *         @type string|null Content.
+	 *         @type int         Expected block version.
+	 *     }
+	 * }
+	 */
+	public function data_block_version() {
+		return array(
+			// Null.
+			array( null, 0 ),
+			// Empty post content.
+			array( '', 0 ),
+			// Post content without blocks.
+			array( '<hr class="wp-block-separator" />', 0 ),
+			// Post content with a block.
+			array( '<!-- wp:core/separator -->', 1 ),
+			// Post content with a fake block.
+			array( '<!-- wp:core/fake --><!-- /wp:core/fake -->', 1 ),
+			// Post content with an invalid block.
+			array( '<!- - wp:core/separator -->', 0 ),
+		);
+	}
 }
diff --git tests/phpunit/tests/rest-api/rest-posts-controller.php tests/phpunit/tests/rest-api/rest-posts-controller.php
index 7969a84..7eb7c29 100644
--- tests/phpunit/tests/rest-api/rest-posts-controller.php
+++ tests/phpunit/tests/rest-api/rest-posts-controller.php
@@ -1332,6 +1332,83 @@ 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:core/separator -->',
+			)
+		);
+
+		$request  = new WP_REST_Request( 'GET', sprintf( '/wp/v2/posts/%d', $post_id ) );
+		$response = rest_get_server()->dispatch( $request );
+		$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 );
+		$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:core/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 );
+		$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 );
+		$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 ) );
