Browse API docs
Shop look
These endpoints read and change what the look studio edits: the shop’s theme, accent color and fonts, and an event’s own look for its event page, ticket embed, seat selection and lounges. Checkout and the rest of the shop always wear the shop’s look.
Unlike the look studio, there is no preview step: a successful update applies to the live shop immediately.
Reading requires a token with Read or Read + Write permission. Updating requires Read + Write. The shop’s look is an account setting for account-wide tokens; personal co-organizer tokens can read and change the look of their assigned events only. See Authentication.
GET /admin/account_settings/look
curl \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/account_settings/look
Response (the fonts list is shortened here; it always contains the whole library):
{
"data": {
"theme": "dark",
"accent_color": "#0055FF",
"shop_heading_font": "geist",
"shop_body_font": "geist",
"themes": [
{ "key": "light", "scheme": "light" },
{ "key": "dark", "scheme": "dark" },
{ "key": "paper", "scheme": "light" },
{ "key": "midnight", "scheme": "dark" },
{ "key": "tinted_light", "scheme": "light" },
{ "key": "tinted_dark", "scheme": "dark" }
],
"fonts": [
{ "key": "geist", "name": "Geist", "category": "sans", "body": true },
{ "key": "syne", "name": "Syne", "category": "display", "body": false },
{ "key": "literata", "name": "Literata", "category": "serif", "body": true }
]
}
}
| Field | Type | Notes |
|---|---|---|
theme |
string | One of the six theme keys below. |
accent_color |
string | Six-digit hex color such as #0055FF, used for links, buttons and highlights. The two tinted themes also derive their surfaces from it. |
shop_heading_font |
string | Font key for headings. Any font in the library. |
shop_body_font |
string | Font key for body text. Only fonts with body: true. |
themes |
array | Read-only. Every theme as { key, scheme }; scheme is light or dark. |
fonts |
array | Read-only. Every font as { key, name, category, body }. category is sans, display, serif, mono or script; body says whether it is offered for body text. |
PATCH /admin/account_settings/look
Send only the fields you want to change, either inside account or directly at the JSON top level. This example switches to the Midnight theme with a purple accent, Syne headings and Inter body text:
curl -X PATCH \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"account": {"theme": "midnight", "accent_color": "#895EC9", "shop_heading_font": "syne", "shop_body_font": "inter"}}' \
https://app.usetix.io/admin/account_settings/look
Writable fields: theme, accent_color, shop_heading_font and shop_body_font, with the values described above. Omitted fields keep their value.
Response: 200 OK with the complete data object in the same shape as GET.
Validation failures return 422 Unprocessable Entity, for example for a body font that is not offered for body text:
{
"errors": {
"shop_body_font": ["is not included in the list"]
}
}
A Read token attempting PATCH receives 401 Unauthorized and nothing is changed.
GET /admin/events/:slug/look
curl \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/look
Response:
{
"data": {
"shop_theme": null,
"shop_heading_font": "syne",
"shop_body_font": null,
"ticket_accent_color": "#895EC9",
"effective": {
"theme": "dark",
"scheme": "dark",
"accent_color": "#895EC9",
"heading_font": "syne",
"body_font": "geist"
}
}
}
| Field | Type | Notes |
|---|---|---|
shop_theme |
string | null | The event’s own theme. null follows the shop. |
shop_heading_font |
string | null | The event’s own heading font. null follows the shop. |
shop_body_font |
string | null | The event’s own body font, one with body: true. null follows the shop. |
ticket_accent_color |
string | null | The event color as six-digit hex. It also colors the event’s PDF ticket and Wallet pass. null follows the shop’s accent color. |
effective |
object | Read-only. What the event page actually shows: theme, its scheme (light or dark), accent_color, heading_font and body_font, with every part that follows the shop already resolved. |
PATCH /admin/events/:slug/look
Send only the parts you want to change, either inside event or directly at the JSON top level. An empty string or null makes that part follow the shop again. This example gives the event the Paper theme and a green event color, and lets its headings follow the shop:
curl -X PATCH \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"event": {"shop_theme": "paper", "shop_heading_font": "", "ticket_accent_color": "#2FBF71"}}' \
https://app.usetix.io/admin/events/spring-showcase/look
Writable fields: shop_theme, shop_heading_font, shop_body_font and ticket_accent_color. Omitted fields keep their value.
Response: 200 OK with the complete data object in the same shape as GET. Validation failures return 422 Unprocessable Entity with an errors map, as for the shop’s look.
Personal co-organizer tokens with write permission can update the look of their assigned events. Other events return 404.
Create an event with its look
POST /admin/events also accepts shop_theme, shop_heading_font, shop_body_font and ticket_accent_color, next to the other event fields. Leave them out to follow the shop.
curl -X POST \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title": "Poetry Night", "venue_id": 7, "starts_at": "2026-11-12T19:30:00Z", "shop_theme": "paper", "shop_heading_font": "instrument_serif", "shop_body_font": "literata", "ticket_accent_color": "#B5562E"}' \
https://app.usetix.io/admin/events
To change the look of an existing event, use PATCH /admin/events/:slug/look.
Themes
| Key | Scheme | Looks like |
|---|---|---|
light |
light | White surfaces with dark text. |
dark |
dark | Near-black surfaces with light text. The default for new shops. |
paper |
light | A warm off-white. |
midnight |
dark | Deep blue. |
tinted_light |
light | Light surfaces tinted with the accent color. |
tinted_dark |
dark | Dark surfaces tinted with the accent color. |
Fonts
Every font can be used for headings. Only fonts marked body can be used for body text. All fonts are self-hosted by Usetix; none is loaded from Google Fonts. New shops start with geist for both.
| Category | Keys |
|---|---|
sans |
geist (body), inter (body), dm_sans (body), manrope (body), plus_jakarta_sans (body), figtree (body), instrument_sans (body), space_grotesk (body), sora (body), work_sans (body), bricolage_grotesque (body) |
display |
unbounded, syne, bebas_neue, anton, big_shoulders_display, bungee, shrikhand, righteous, orbitron, dela_gothic_one |
serif |
fraunces (body), source_serif_4 (body), literata (body), instrument_serif, playfair_display, young_serif, gloock, cormorant_garamond |
mono |
geist_mono, space_mono, jetbrains_mono |
script |
caveat, pacifico, permanent_marker |
Read the fonts list from GET /admin/account_settings/look instead of hard-coding it; the library can grow.
AI and MCP
The built-in assistant and MCP clients change the same settings through account_settings and manage_event_look. See MCP.