> ## Documentation Index
> Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Theme Settings

> Manage theme global settings

# Theme Settings

Manage global theme settings (colors, typography, layout options, etc.).

## Get Theme Settings

Retrieve the current theme settings.

### Request

```bash theme={null}
curl -X GET "https://api.launchmystore.io/api/v1/themes/theme_abc123/settings.json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

### Response

The response uses the standard envelope (`status`, `state`, `message`, `data`).
`data.settings` holds the current setting values, `data.schema` holds the
theme's settings schema groups, and `data.presets` lists the available preset
names (`data.currentPreset` is the active preset name, or `null` when settings
are stored as a direct object).

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "success": true,
    "schema": [
      {
        "name": "Colors",
        "settings": [
          { "type": "color", "id": "colors_accent_1", "label": "Accent 1", "default": "#121212" },
          { "type": "color", "id": "colors_background_1", "label": "Background 1", "default": "#ffffff" }
        ]
      }
    ],
    "settings": {
      "colors_solid_button_labels": "#ffffff",
      "colors_accent_1": "#121212",
      "colors_accent_2": "#334FB4",
      "colors_text": "#121212",
      "colors_outline_button_labels": "#121212",
      "colors_background_1": "#ffffff",
      "colors_background_2": "#f3f3f3",
      "type_header_font": "Assistant",
      "type_body_font": "Assistant",
      "type_header_font_size_scale": 100,
      "type_body_font_size_scale": 100
    },
    "colorSchemeOptions": [],
    "colorSchemes": [],
    "colorSchemeDefinition": null,
    "presets": ["Default", "Dark"],
    "currentPreset": "Default"
  },
  "count": null,
  "pagination": null
}
```

***

## Update Theme Settings

Update one or more theme settings.

### Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT "https://api.launchmystore.io/api/v1/themes/theme_abc123/settings.json" \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "settings": {
        "colors_accent_1": "#FF5733",
        "colors_background_1": "#FAFAFA",
        "type_header_font": "Roboto"
      }
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.launchmystore.io/api/v1/themes/theme_abc123/settings.json', {
    method: 'PUT',
    headers: {
      'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      settings: {
        colors_accent_1: '#FF5733',
        colors_background_1: '#FAFAFA',
        type_header_font: 'Roboto'
      }
    })
  });
  ```
</CodeGroup>

### Body Parameters

<ParamField body="settings" type="object" required>
  Object containing setting key-value pairs to update
</ParamField>

### Response

The submitted settings are merged into the active preset (or the current
settings object) and saved. The response uses the standard envelope; the
proxied save result is returned verbatim under `data`.

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "success": true,
    "message": "Theme settings saved successfully"
  },
  "count": null,
  "pagination": null
}
```

***

## Common Settings

Theme settings are defined by the theme's `settings_schema.json`. Common settings include:

| Setting Key                   | Type          | Description                |
| ----------------------------- | ------------- | -------------------------- |
| `colors_accent_1`             | color         | Primary accent color       |
| `colors_accent_2`             | color         | Secondary accent color     |
| `colors_text`                 | color         | Body text color            |
| `colors_background_1`         | color         | Primary background         |
| `colors_background_2`         | color         | Secondary background       |
| `type_header_font`            | font\_picker  | Header font family         |
| `type_body_font`              | font\_picker  | Body font family           |
| `type_header_font_size_scale` | range         | Header font size scale (%) |
| `type_body_font_size_scale`   | range         | Body font size scale (%)   |
| `logo`                        | image\_picker | Store logo                 |
| `favicon`                     | image\_picker | Browser favicon            |

## Errors

Errors return a numeric HTTP status with an envelope of the form
`{ "status": <code>, "state": "error", "message": "<reason>", "data": null }`.

```json theme={null}
{
  "status": 404,
  "state": "error",
  "message": "Store not found",
  "data": null
}
```

| HTTP Status | When                                                                                    |
| ----------- | --------------------------------------------------------------------------------------- |
| `401`       | Invalid or missing access token                                                         |
| `403`       | App doesn't have the required scope (`read_themes` for GET, `write_themes` for PUT)     |
| `404`       | Store not found                                                                         |
| `400`       | The settings could not be saved (the underlying error message is returned in `message`) |
| `500`       | Unexpected server error                                                                 |
