diff --git a/config/install/jsonapi_image_styles.settings.yml b/config/install/jsonapi_image_styles.settings.yml
new file mode 100644
index 0000000000000000000000000000000000000000..81e73a29c5cb8be0d8bd2dac24685af9e501fb1f
--- /dev/null
+++ b/config/install/jsonapi_image_styles.settings.yml
@@ -0,0 +1 @@
+image_styles: []
diff --git a/config/schema/jsonapi_image_styles.schema.yml b/config/schema/jsonapi_image_styles.schema.yml
new file mode 100644
index 0000000000000000000000000000000000000000..85ad8d2e451ec75487d77a11cfb4191a43e8e640
--- /dev/null
+++ b/config/schema/jsonapi_image_styles.schema.yml
@@ -0,0 +1,11 @@
+jsonapi_image_styles.settings:
+  type: config_object
+  label: 'JSON:API Image Styles settings'
+  mapping:
+    image_styles:
+      type: sequence
+      label: 'Image styles'
+      description: 'Image styles to include in JSON:API responses.'
+      sequence:
+        type: string
+        label: 'Image style'
diff --git a/tests/src/Functional/JsonApiImageStylesFunctionalTest.php b/tests/src/Functional/JsonApiImageStylesFunctionalTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..f9f5b44fd50373be3ca37c1938b68e5abedf8d0e
--- /dev/null
+++ b/tests/src/Functional/JsonApiImageStylesFunctionalTest.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Drupal\Tests\jsonapi_image_styles\Functional;
+
+use Drupal\Component\Serialization\Json;
+
+/**
+ * The test class for the main functionality.
+ *
+ * @group jsonapi_image_styles
+ */
+class JsonApiImageStylesFunctionalTest extends JsonApiImageStylesFunctionalTestBase {
+
+  /**
+   * Tests that only the configured image styles are on the JSON:API response.
+   */
+  public function testImageStylesOnJsonApiResponse() {
+    $this->createDefaultContent(1, 1, TRUE, TRUE, static::IS_NOT_MULTILINGUAL);
+    $response = $this->drupalGet('/jsonapi/node/article', [
+      'query' => ['include' => 'field_image'],
+    ]);
+    $output = Json::decode($response);
+    $this->assertArrayHasKey('image_style_uri', $output['included'][0]['attributes']);
+
+    // Assert only the two configured image styles (large, thumbnail).
+    $styles = $output['included'][0]['attributes']['image_style_uri'];
+    $this->assertCount(2, $styles);
+    $this->assertNotEmpty(array_column($styles, 'large'));
+    $this->assertNotEmpty(array_column($styles, 'thumbnail'));
+    $this->assertEmpty(array_column($styles, 'wide'));
+    $this->assertEmpty(array_column($styles, 'medium'));
+  }
+
+}
diff --git a/tests/src/Functional/JsonApiImageStylesFunctionalTestBase.php b/tests/src/Functional/JsonApiImageStylesFunctionalTestBase.php
new file mode 100644
index 0000000000000000000000000000000000000000..66e8665c62a50c71a3abfa37269265a637e7d693
--- /dev/null
+++ b/tests/src/Functional/JsonApiImageStylesFunctionalTestBase.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Drupal\Tests\jsonapi_image_styles\Functional;
+
+use Drupal\Tests\jsonapi\Functional\JsonApiFunctionalTestBase;
+
+/**
+ * Provides helper methods for the module's functional tests.
+ *
+ * @internal
+ */
+abstract class JsonApiImageStylesFunctionalTestBase extends JsonApiFunctionalTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = [
+    'jsonapi_image_styles',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $config = \Drupal::configFactory()->getEditable('jsonapi_image_styles.settings');
+    $config->set('image_styles', [
+      'large' => 'large',
+      'thumbnail' => 'thumbnail',
+    ]);
+    $config->save(TRUE);
+    $this->resetAll();
+  }
+
+}