Themes
6 endpoints
/{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
/{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
/{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
/{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
/{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
/{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