Skip to main content
AfterCare’s accessibility preferences control how the app renders for each user — text scale, line spacing, contrast, motion, and more. The API stores preferences server-side so they follow the user across devices. Both endpoints require a valid bearer token and operate on the full preferences object: a POST always replaces all fields rather than merging a partial update.
The AfterCare web app also stores preferences locally on the device so the correct display settings apply immediately on load — before the API response arrives. The server-side preferences synced by these endpoints are the authoritative copy and win when you sign in on a new device.

Get accessibility preferences

Return the current accessibility preferences for the authenticated user. If the user has never set preferences explicitly, the server returns the application defaults.

Example

cURL

Response — 200 OK

Example response

Set accessibility preferences

Replace all accessibility preferences for the authenticated user. You must send every field — the endpoint does not support partial updates. The response echoes back the saved preferences.

Request body

string
required
Font size scaling applied across the entire app. Accepted values: "normal", "large", "largest". Maps to CSS scale factors of 1×, 1.15×, and 1.35× respectively.
string
required
Line height applied to body text. Accepted values: "normal", "relaxed", "loose". Maps to line-height values of 1.6, 1.85, and 2.1 respectively.
boolean
required
When true, enables the high-contrast colour theme. Mirrors the OS-level prefers-contrast: more signal unless the user has explicitly overridden it.
boolean
required
When true, enables the dark colour theme. Mirrors the OS-level prefers-color-scheme: dark signal unless the user has explicitly overridden it.
boolean
required
When true, disables or minimises animations throughout the app. Mirrors the OS-level prefers-reduced-motion signal unless explicitly overridden.
boolean
required
When true, switches body text to a font designed to reduce letter confusion for readers with dyslexia.
When true, underlines every link so that colour is never the only visual cue distinguishing a link from surrounding text (satisfies WCAG 1.4.1).
boolean
required
When true, enforces a 48 px minimum tap/click target on all interactive controls (satisfies WCAG 2.5.8).
number
required
Speech rate for the read-aloud feature, expressed as a multiplier. Must be between 0.6 (slowest) and 1.4 (fastest). The default is 0.95.

Response fields

string
The saved text scale value: "normal", "large", or "largest".
string
The saved line spacing value: "normal", "relaxed", or "loose".
boolean
Whether high-contrast mode is enabled.
boolean
Whether dark mode is enabled.
boolean
Whether reduced motion is enabled.
boolean
Whether the dyslexia-friendly font is enabled.
Whether link underlining is enabled.
boolean
Whether large tap targets are enforced.
number
The saved read-aloud speech rate multiplier, clamped to the range 0.6–1.4.

Example

cURL

Response — 200 OK

Returns the full saved preferences object using the same shape as the GET response.
Example response

Response — 400 Bad Request

Returned when any field is missing, of the wrong type, or outside the accepted range.

Application defaults

If you have never posted preferences, the GET endpoint returns these values:
The defaults for contrast, darkMode, and reduceMotion are false at the API layer. In the web app, these three settings are seeded from OS-level media queries before a user explicitly sets them, so the app may behave differently from the raw API defaults on first load.