Docs API reference Changelog
Sign in

Themes

6 endpoints

GET /{account_slug}/themes

list themes

Returns a paginated list of the account's themes. Themes are account-level and reusable across events. Readable with any valid account token.

Requires authentication

Path parameters

Name Description
account_slug string Required The unique slug identifier for your Tito account.

Query parameters

Name Description
page integer Page number for pagination (default: 1)

Response fields

Field Description
themes array
themes[].id integer
themes[].name string
themes[].is_default boolean
themes[].created_at string
themes[].updated_at string

Error responses

  • 401 – unauthorized - no bearer token provided or token is invalid

Example request

curl \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://api.pro.tito.io/{account_slug}/themes
POST /{account_slug}/themes

create theme

Creates a new theme for the account. Writes require an API token with access to all events.

Requires authentication

Path parameters

Name Description
account_slug string Required The unique slug identifier for your Tito account.

Request body

Field Type Required Description
name string Yes Name of the theme.
settings object No Theme style settings. Colours are hex strings and auto-render to CSS custom properties, so raw CSS is rarely needed. The calculated colour keys (text_color_muted, *_hover, text_background_color_contrast) are read-only and derived on save.
settings.background_color string No
settings.text_color string No
settings.text_background_color string No
settings.accent_color string No
settings.heading_typeface string No One of the curated typeface keys (e.g. system_ui, old_style, neo_grotesque).
settings.body_typeface string No
settings.card_border_radius_px integer No 0–64.
settings.button_border_radius_px integer No 0–64.
settings.card_shadow_preset string No
settings.background_source string No
settings.default_web_html_template_id integer | null No ID of an account HtmlTemplate (kind: layout) to wrap web pages.
settings.default_email_html_template_id integer | null No
settings.default_attendee_hub_html_template_id integer | null No
settings.hide_powered_by boolean No Only honoured on plans that allow it.
logo_url string No Public http(s) URL of an image to fetch and attach as the logo.
banner_url string No Public http(s) URL of an image to fetch and attach as the banner.
background_url string No Public http(s) URL of an image to fetch and attach as the background.

Response fields

Field Description
theme object
theme.id integer
theme.name string
theme.is_default boolean Whether this is the account's default theme.
theme.logo_url string | null URL of the attached logo (null if none).
theme.banner_url string | null URL of the attached banner (null if none).
theme.background_url string | null URL of the attached background (null if none).
theme.settings object Theme style settings. Colours are hex strings and auto-render to CSS custom properties, so raw CSS is rarely needed. The calculated colour keys (text_color_muted, *_hover, text_background_color_contrast) are read-only and derived on save.
theme.settings.background_color string
theme.settings.text_color string
theme.settings.text_background_color string
theme.settings.accent_color string
theme.settings.heading_typeface string One of the curated typeface keys (e.g. system_ui, old_style, neo_grotesque).
theme.settings.body_typeface string
theme.settings.card_border_radius_px integer 0–64.
theme.settings.button_border_radius_px integer 0–64.
theme.settings.card_shadow_preset string
theme.settings.background_source string
theme.settings.default_web_html_template_id integer | null ID of an account HtmlTemplate (kind: layout) to wrap web pages.
theme.settings.default_email_html_template_id integer | null
theme.settings.default_attendee_hub_html_template_id integer | null
theme.settings.hide_powered_by boolean Only honoured on plans that allow it.
theme.created_at string
theme.updated_at string

Error responses

  • 422 – unprocessable entity - validation errors
  • 403 – forbidden - token does not have access to all events

Example request

curl \
  -X POST \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Acme Conference 2026","settings":null,"logo_url":"https://cdn.example.com/logo.png","banner_url":"string","background_url":"string"}' \
  https://api.pro.tito.io/{account_slug}/themes
GET /{account_slug}/themes/options

options

Returns the valid option space for building a theme: colour roles and their defaults, typeface keys, card shadow presets and border-radius limits, background sources, HTML template kinds and reserved component names, the account's web and email layout templates, supported locales, and whether hiding the Tito branding is allowed on this plan. Readable with any valid account token.

Requires authentication

Path parameters

Name Description
account_slug string Required The unique slug identifier for your Tito account.

Response fields

Field Description
colors array
typefaces array
typeface_defaults object
card_shadow_presets array
card_shadow_default string
border_radius object
background_sources array
background_source_default string
html_template_kinds array
reserved_component_names array
web_html_templates array
email_html_templates array
locales array
hide_powered_by_allowed boolean

Example request

curl \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://api.pro.tito.io/{account_slug}/themes/options
GET /{account_slug}/themes/{id}

show theme

Returns a theme with its full settings, including the read-only calculated colours.

Requires authentication

Path parameters

Name Description
account_slug string Required The unique slug identifier for your Tito account.
id string Required The unique identifier for the theme.

Response fields

Field Description
theme object
theme.id integer
theme.name string
theme.is_default boolean Whether this is the account's default theme.
theme.logo_url string | null URL of the attached logo (null if none).
theme.banner_url string | null URL of the attached banner (null if none).
theme.background_url string | null URL of the attached background (null if none).
theme.settings object Theme style settings. Colours are hex strings and auto-render to CSS custom properties, so raw CSS is rarely needed. The calculated colour keys (text_color_muted, *_hover, text_background_color_contrast) are read-only and derived on save.
theme.settings.background_color string
theme.settings.text_color string
theme.settings.text_background_color string
theme.settings.accent_color string
theme.settings.heading_typeface string One of the curated typeface keys (e.g. system_ui, old_style, neo_grotesque).
theme.settings.body_typeface string
theme.settings.card_border_radius_px integer 0–64.
theme.settings.button_border_radius_px integer 0–64.
theme.settings.card_shadow_preset string
theme.settings.background_source string
theme.settings.default_web_html_template_id integer | null ID of an account HtmlTemplate (kind: layout) to wrap web pages.
theme.settings.default_email_html_template_id integer | null
theme.settings.default_attendee_hub_html_template_id integer | null
theme.settings.hide_powered_by boolean Only honoured on plans that allow it.
theme.created_at string
theme.updated_at string

Error responses

  • 404 – not found - theme does not exist

Example request

curl \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://api.pro.tito.io/{account_slug}/themes/123
PATCH /{account_slug}/themes/{id}

update theme

Updates a theme. Settings are merged, so a partial update leaves keys you don't send unchanged. Writes require an all-events token.

Requires authentication

Path parameters

Name Description
account_slug string Required The unique slug identifier for your Tito account.
id string Required The unique identifier for the theme.

Request body

Field Type Required Description
name string No
settings object No Theme style settings. Colours are hex strings and auto-render to CSS custom properties, so raw CSS is rarely needed. The calculated colour keys (text_color_muted, *_hover, text_background_color_contrast) are read-only and derived on save.
settings.background_color string No
settings.text_color string No
settings.text_background_color string No
settings.accent_color string No
settings.heading_typeface string No One of the curated typeface keys (e.g. system_ui, old_style, neo_grotesque).
settings.body_typeface string No
settings.card_border_radius_px integer No 0–64.
settings.button_border_radius_px integer No 0–64.
settings.card_shadow_preset string No
settings.background_source string No
settings.default_web_html_template_id integer | null No ID of an account HtmlTemplate (kind: layout) to wrap web pages.
settings.default_email_html_template_id integer | null No
settings.default_attendee_hub_html_template_id integer | null No
settings.hide_powered_by boolean No Only honoured on plans that allow it.
logo_url string No Public http(s) URL of an image to fetch and attach as the logo.
banner_url string No Public http(s) URL of an image to fetch and attach as the banner.
background_url string No Public http(s) URL of an image to fetch and attach as the background.

Response fields

Field Description
theme object
theme.id integer
theme.name string
theme.is_default boolean Whether this is the account's default theme.
theme.logo_url string | null URL of the attached logo (null if none).
theme.banner_url string | null URL of the attached banner (null if none).
theme.background_url string | null URL of the attached background (null if none).
theme.settings object Theme style settings. Colours are hex strings and auto-render to CSS custom properties, so raw CSS is rarely needed. The calculated colour keys (text_color_muted, *_hover, text_background_color_contrast) are read-only and derived on save.
theme.settings.background_color string
theme.settings.text_color string
theme.settings.text_background_color string
theme.settings.accent_color string
theme.settings.heading_typeface string One of the curated typeface keys (e.g. system_ui, old_style, neo_grotesque).
theme.settings.body_typeface string
theme.settings.card_border_radius_px integer 0–64.
theme.settings.button_border_radius_px integer 0–64.
theme.settings.card_shadow_preset string
theme.settings.background_source string
theme.settings.default_web_html_template_id integer | null ID of an account HtmlTemplate (kind: layout) to wrap web pages.
theme.settings.default_email_html_template_id integer | null
theme.settings.default_attendee_hub_html_template_id integer | null
theme.settings.hide_powered_by boolean Only honoured on plans that allow it.
theme.created_at string
theme.updated_at string

Example request

curl \
  -X PATCH \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Acme Conference 2026","settings":null,"logo_url":"https://cdn.example.com/logo.png","banner_url":"string","background_url":"string"}' \
  https://api.pro.tito.io/{account_slug}/themes/123
DELETE /{account_slug}/themes/{id}

delete theme

Soft-deletes a theme. Writes require an all-events token.

Requires authentication

Path parameters

Name Description
account_slug string Required The unique slug identifier for your Tito account.
id string Required The unique identifier for the theme.

Example request

curl \
  -X DELETE \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://api.pro.tito.io/{account_slug}/themes/123
← Previous Orders Next → Ticket Types

API token

Paste your test-mode API key below to personalise the curl examples on this page. This key is stored only in your browser and is never sent to our servers.