Skip to content
Reponse.ai LogoDocs
DocsAPISDKsGuides

Search Documentation

Search for an article...

Getting Started

  • Overview
  • Architecture
  • Installation
  • Authentication
  • First Request

Products & Collections

  • Products — List
  • Products — Get
  • Products — Metafields
  • Collections — List
  • Collections — Get
  • Collections — Products

Cart & Checkout

  • Cart — Create
  • Cart — Get
  • Cart — Add Item
  • Cart — Update Item
  • Cart — Remove Item
  • Cart — Apply Promotion
  • Checkout — Stripe
  • Checkout — Payment Intent
  • Checkout — ACP

Orders & Fulfillment

  • Orders — Create
  • Orders — Get
  • Orders — Confirm
  • Orders — Cancel
  • Orders — Fulfill
  • Orders — Refund

Commerce

  • Inventory — Get
  • Inventory — Update
  • Shipping — Rates
  • Discounts — List
  • Discounts — Create
  • Discounts — Validate
  • Subscriptions — Manage

Loyalty & Gift Cards

  • Loyalty — Balance
  • Loyalty — Redeem
  • Loyalty — Referral
  • Gift Cards — List
  • Gift Cards — Redeem

Tickets & Support

  • Tickets — List
  • Tickets — Create
  • Tickets — Reply

Platform

  • Product Feed — JSON
  • Product Feed — CSV
  • Theme — Get
  • Approvals — Execute
  • Approvals — Reject
  • Geocode

SDKs

  • SDK Overview
  • TypeScript SDK
  • React Hooks

Guides

  • Chat Widget
  • Shopify Sync
  • Storefront Starter
  • Loyalty Program
  • Discounts & Promotions
  • Subscriptions
  • Klaviyo Integration
  • Custom Domains
  • Agentic Commerce (ACP)
  • A2A Protocol
  • AI Engines
  • MCP Server

Webhooks

  • Webhooks Overview
  • Events Reference
  • Shopify Webhooks
  • Stripe Webhooks
  • Reviews (Stamped / Trustpilot)
  • Logistics
  • Email Inbound

Resources

  • Environment Variables
  • Rate Limits
  • Changelog
DocsPlatformTheme — Get

Theme — Get

Get the workspace storefront theme settings.

2 min read/Last updated Jul 22, 2026
On this page

Overview

Returns the theme configuration for the authenticated workspace as a set of CSS custom properties. These values are used to style storefronts, embedded chat widgets, checkout pages, and any other Reponse-powered UI consistently with the merchant's brand.

Authentication

This endpoint requires a Bearer token. Include your workspace API key in the `Authorization` header.

Authorization: Bearer <your_api_key>

Request

**GET** `/api/v1/theme`

Headers

HeaderValueRequired
AuthorizationBearer ✅

Query parameters

None.

Response

Success — `200 OK`

**Content-Type:** `application/json`

**Cache headers:** `Cache-Control: public, max-age=300, stale-while-revalidate=600` (5 min fresh, 10 min stale-while-revalidate)

Response schema

The response is a flat JSON object where each key is a CSS custom property name:

json
{
  "--rp-color-primary": "#0A0A0A",
  "--rp-color-primary-hover": "#333333",
  "--rp-color-background": "#ffffff",
  "--rp-color-surface": "#f9fafb",
  "--rp-color-border": "#e5e7eb",
  "--rp-color-text": "#111827",
  "--rp-color-text-secondary": "#6b7280",
  "--rp-color-success": "#22c55e",
  "--rp-color-error": "#ef4444",
  "--rp-radius": "12px",
  "--rp-font-family": "Geist, system-ui, -apple-system, sans-serif",
  "--rp-brand-name": "My Store",
  "--rp-brand-logo": "https://cdn.reponse.ai/brands/my-store/logo.svg"
}

Property reference

PropertyTypeDefaultSourceDescription
--rp-color-primaryCSS color#000000brand_dna.primary_colorPrimary brand colour (buttons, links, accents)
--rp-color-primary-hoverCSS color#333333brand_dna.primary_hoverHover state of primary colour
--rp-color-backgroundCSS color#ffffffbrand_dna.background_colorPage background colour
--rp-color-surfaceCSS color#f9fafbbrand_dna.surface_colorCard/panel surface colour
--rp-color-borderCSS color#e5e7ebConstantBorder colour
--rp-color-textCSS color#111827ConstantPrimary text colour
--rp-color-text-secondaryCSS color#6b7280ConstantSecondary/muted text colour
--rp-color-successCSS color#22c55eConstantSuccess state colour
--rp-color-errorCSS color#ef4444ConstantError state colour
--rp-radiusCSS length12pxbrand_dna.border_radiusDefault border radius
--rp-font-familyCSS font-familysystem-ui, -apple-system, sans-serifbrand_dna.font_familyTypography font stack
--rp-brand-namestring""marketing_policy.brand_persona.nameBrand display name
--rp-brand-logoURL""marketing_policy.brand_persona.avatar_urlBrand logo URL

Error responses

StatusBodyCause
401{ "error": "Unauthorized" }Missing or invalid API key
404{ "error": "Workspace not found" }Workspace ID from token doesn't match a record

Data sources

Theme values are derived from two workspace fields:

Workspace fieldProperties sourced
brand_dna (JSONB)primary_color, primary_hover, background_color, surface_color, border_radius, font_family
marketing_policy (JSONB)brand_persona.name, brand_persona.avatar_url

Constant values (`--rp-color-border`, `--rp-color-text`, etc.) are not configurable via the API — they follow a neutral palette designed to work with any primary colour.

Usage example

Applying theme to a storefront

typescript
// Fetch theme
const { data } = await reponse.theme.get();

// Apply CSS custom properties to the document root
Object.entries(data).forEach(([property, value]) => {
  document.documentElement.style.setProperty(property, value);
});

Using in CSS

css
.rp-button {
  background-color: var(--rp-color-primary);
  color: var(--rp-color-background);
  border-radius: var(--rp-radius);
  font-family: var(--rp-font-family);
  transition: background-color 150ms ease;
}

.rp-button:hover {
  background-color: var(--rp-color-primary-hover);
}

.rp-card {
  background: var(--rp-color-surface);
  border: 1px solid var(--rp-color-border);
  border-radius: var(--rp-radius);
}

Using with the SDK

typescript
const { data } = await reponse.theme.get();

console.log(data["--rp-color-primary"]); // "#0A0A0A"
console.log(data["--rp-brand-name"]);    // "My Store"
console.log(data["--rp-brand-logo"]);    // "https://cdn.reponse.ai/..."

Caching

The response is cached with:

  • max-age=300 — the response is considered fresh for 5 minutes.
  • stale-while-revalidate=600 — after 5 minutes, stale data can be served for up to 10 more minutes while revalidating in the background.

This means theme changes may take up to 5 minutes to propagate to all clients.

Related

  • Custom Domains — configure a custom domain for your storefront
  • Chat Widget — embed the AI chat widget with automatic theme application
PreviousProduct Feed — CSV
NextApprovals — Execute