Account Experience Overview
The Ory Account Experience is the default user interface for all self-service screens like login, registration, or consent. It can
be accessed under https://your-slug.projects.oryapis.com/login. New Ory Network projects are automatically configured to use the
Account Experience. You can find various customizations and settings in the Ory Console under Account Experience.
Settings and expired sessions
Opening account settings requires an active session. If your session expires before an existing settings flow loads, the Account
Experience redirects you to sign in again. Any return_to parameter is preserved and remains subject to the project's allowed
return URLs.
Theming
The Account Experience can be themed using the Ory Console. Head over to the theming settings. It is also possible to set a custom logo and favicon.
In Customize UI on Branding → Theming in the Ory Console, you configure the light color palette. Ory Console does not provide an editor for a separate dark palette.
You can configure a separate dark palette through the project API by setting
theme_variables_dark under services.account_experience.config. The hosted Ory Account Experience applies these colors when the
visitor's system or browser prefers dark mode (prefers-color-scheme: dark). Without a dark palette, the light palette is used
for both preferences. The hosted pages do not include a manual theme switch.
The dark palette is a JSON object with the same keys as the light palette, such as ax_background_default or
form_background_default. If you have customized the light palette, you can use its saved colors as a starting point for the dark
palette. GET /projects/{project_id} returns these colors under services.account_experience.config.theme_variables_light.
Without custom colors, this object is empty.
Use the Ory CLI to update individual color keys:
ory patch project <project-id> \
--add '/services/account_experience/config/theme_variables_dark/ax_background_default="#0f172a"' \
--add '/services/account_experience/config/theme_variables_dark/form_background_default="#1e293b"' \
--add '/services/account_experience/config/theme_variables_dark/interface_foreground_default_primary="#f8fafc"'
This example sets the page background, form background, and primary text color for dark mode.
For your own theme switch or full control over styling, build your UI with Ory Elements or the Ory SDKs and set the styles in your own CSS.
Legal footer links
The Account Experience can show links to your Terms of Service, Privacy Policy, and Contact pages in the footer of all self-service pages. Configure them in Branding → Theming in the Ory Console under Legal and footer links:
- Terms of Service URL and Privacy Policy URL accept
http(s)URLs. - Contact URL accepts an
http(s)URL or amailto:link.
Leave a field empty to hide that link. If no URL is set, the Account Experience doesn't render the footer. All links open in a new tab.
The link labels are localized automatically based on the user's language and can be customized per language.
Translations (i18n) & Message Customization
The Ory Account Experience includes built-in translations for 83 languages. You can enable languages per project. If
enabled_locales is unset or empty, the project uses these 10 languages: en, de, es, fr, it, ja, nl, pt, ru,
and zh. This list applies only when locale_behavior is respect_accept_language.
Manage enabled languages and the default language in Branding → Localization in the Ory Console. You can enable additional languages from the full list below.
Full list of supported languages
- Afrikaans (
af) - Akan (
ak) - Amharic (
am) - Arabic (
ar) - Assamese (
as) - Azerbaijani (Latin) (
az) - Belarusian (
be) - Bulgarian (
bg) - Bamanankan (
bm) - Bangla (
bn) - Catalan (
ca) - Czech (
cs) - Danish (
da) - German (
de) - Greek (
el) - English (
en) - Spanish (
es) - Estonian (
et) - Persian (
fa) - Finnish (
fi) - French (
fr) - Gujarati (
gu) - Hausa (Latin) (
ha) - Hebrew (
he) - Hindi (
hi) - Croatian (
hr) - Hungarian (
hu) - Armenian (
hy) - Indonesian (
id) - Igbo (
ig) - Italian (
it) - Japanese (
ja) - Georgian (
ka) - Kazakh (
kk) - Khmer (
km) - Kannada (
kn) - Korean (
ko) - Central Kurdish (
ku) - Kyrgyz (
ky) - Lithuanian (
lt) - Latvian (
lv) - Macedonian (
mk) - Malayalam (
ml) - Mongolian (Cyrillic) (
mn) - Marathi (
mr) - Malay (
ms) - Burmese (
my) - Nepali (
ne) - Dutch (
nl) - Norwegian (Bokmal) (
no) - Odia (
or) - Punjabi (
pa) - Polish (
pl) - Pashto (
ps) - Portuguese (
pt) - Romanian (
ro) - Russian (
ru) - Sindhi (
sd) - Sinhala (
si) - Slovak (
sk) - Slovenian (
sl) - Somali (
so) - Albanian (
sq) - Serbian (Latin) (
sr) - Sundanese (
su) - Swedish (
sv) - Kiswahili (
sw) - Tamil (
ta) - Telugu (
te) - Tajik (Cyrillic) (
tg) - Thai (
th) - Turkmen (
tk) - Tagalog (
tl) - Turkish (
tr) - Uyghur (
ug) - Ukrainian (
uk) - Urdu (
ur) - Uzbek (Latin) (
uz) - Vietnamese (
vi) - Xhosa (
xh) - Yoruba (
yo) - Chinese (Simplified) (
zh) - Zulu (
zu)
The source is available in the GitHub repository of Ory Elements.
Language selection depends on the project's locale_behavior setting:
force_default: All users see the project'sdefault_locale, regardless of their browser preferences. The default locale is English (en) unless you change it.respect_accept_language: The Ory Account Experience matches the browser'sAccept-Languageheader against the project's enabled languages. If the header is missing or no enabled language matches, it falls back to English (en).
Custom translations replace individual built-in messages for a language. Use the edit button next to that language in Ory Console to customize them. Languages without custom translations, and messages you don't customize, use the built-in text.
The Reset to default option in Branding → Localization in the Ory Console is available when
respect_accept_language is enabled. Once confirmed, it restores the 10 default enabled languages, sets English (en) as the
default language, and removes all custom translations.
Footer link labels
The legal footer links use these translation keys:
| Key | Default (English) |
|---|---|
footer.terms_of_service.label | Terms of Service |
footer.privacy_policy.label | Privacy Policy |
footer.contact.label | Contact |
Override them like any other message in Branding → Localization in the Ory Console to change a label for a specific language. If a language has no override or built-in translation, the English label is used.
A label override can also contain a markdown link, for example [Nutzungsbedingungen](https://example.com/agb). In that case the
URL from the label replaces the URL configured on the theming page for that language. Use this to point users to a translated
version of the document. Only http(s) and mailto: URLs are allowed in markdown links; other URLs render as plain text. The
corresponding URL must still be set on the theming page — an empty field hides the link for all languages.
Custom Domains
The Account Experience is also available under custom domains the same way it works on the slug URL.