---
title: "Get theme settings"
method: GET
path: "/projects/{projectId}/theme-settings"
tags: ["Theme settings"]
---

# Get theme settings

`GET /projects/{projectId}/theme-settings`

## Request

- Base URL: `https://studio.weaverse.io/api/v1/content`
- URL: `https://studio.weaverse.io/api/v1/content/projects/{projectId}/theme-settings`
- Auth: HTTP bearer

Returns the project's theme settings: the global design tokens, colors, typography and other settings configured in Studio. The shape of `theme` depends on the theme's schema; it is an empty object when nothing is configured.

- `locale` (for example `fr-fr`) adds `staticTranslations`: the theme's static text (cart labels, button text and so on) resolved for that locale. Each key uses the translated value when available and falls back to the default. An exact locale match is tried first, then the language prefix. An empty `locale` returns `400`. Discover locales with `GET /projects/{projectId}/languages`.
- `format=portable-text` (or `Accept: application/portable-text+json`) replaces every HTML string inside `theme` or `staticTranslations` with a Portable Text block array; everything else is unchanged.
- `view=own` (default) returns this project's own theme plus its `revision`, the baseline for `PATCH`. `view=effective` returns the parent theme merged under this project's overrides with inheritance metadata; it is read-only and carries no revision.

Required scope: `content:read`

## Path parameters

- `projectId` string, required

## Query parameters

- `locale` string
- `format` 'weaverse' | 'portable-text'
- `view` 'own' | 'effective'

## Response `200`

Theme settings with optional static translations

- object
  - `object` 'theme_settings' | 'theme_settings_effective': theme_settings for view=own; theme_settings_effective for view=effective
  - `projectId` string
  - `theme` object: Theme configuration JSON. Empty object if not configured.
  - `staticTranslations` object, nullable: Nested translation keys with resolved values for the requested locale. Only present when `locale` query parameter is provided. Uses translated value when available, falls back to default value.
  - `revision` string, date-time, nullable: Project revision captured together with the `theme` in this response (they are cached as one snapshot). Pass back as `expectedRevision` on PATCH: if the settings changed since this snapshot — including when the snapshot itself was served from cache — the PATCH is rejected with 409 STALE_PROJECT; re-read and reapply.
  - `inheritance` object: Only for view=effective (which carries no revision).
    - `inherited` boolean
    - `sourceProjectIds` string[]
    - `overrideCount` integer
    - `inheritedKeys` string[]
    - `overriddenKeys` string[]

## Other responses

- `400`: Invalid `format` value (must be `weaverse` or `portable-text`)
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project not found

---

[API](https://skmtc.dev/weaverse/apis/weaverse-content-api.md) - [All operations](https://skmtc.dev/weaverse/apis/weaverse-content-api/llms.txt) - [OpenAPI document](https://skmtc.dev/weaverse/apis/weaverse-content-api/revisions/d189794169bb?raw)
