---
title: "Update User Timezone"
method: PUT
path: "/users/timezone"
tags: ["users", "users"]
---

# Update User Timezone

`PUT /users/timezone`

Set the account's timezone. Every account type, one column.

Two things were wrong here until 2026-09-05, and together they are why 85%
of accounts have no timezone at all:

  * the parameter was a bare `timezone_str: str`, which FastAPI reads as a
    QUERY parameter. Both callers (DashboardNew, BookingsPage) send a JSON
    body, so every request 422'd before reaching the handler.
  * for a student it wrote nothing and answered "Stored locally in
    browser". `users.timezone` is what quiet hours, the Word-of-the-Day
    send hour and every per-recipient time format read, so a student's
    choice reached none of them.

Tutors keep their `tutor_profiles.timezone` in step, because the booking
surfaces read that one.

## Headers

- `authorization` string, nullable

## Request body

- object

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

## Changes

> 25 revisions in range; 1 not diffed.

- **2026-09-05** `b4e00183a0a2` — 1 breaking, 1 warning
  - added required request body
  - deleted the `query` request parameter `timezone_str`

[Change history](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/changes/users/timezone/put.md)

---

[API](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored.md) · [All operations](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/llms.txt) · [OpenAPI document](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/revisions/be75c0eba493?raw)
