---
title: "Report Browser Timezone"
method: PUT
path: "/v1/notification-preferences/browser-timezone"
tags: ["notification-preferences"]
---

# Report Browser Timezone

`PUT /v1/notification-preferences/browser-timezone`

## Request

- Base URL: `https://api.usekeel.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.usekeel.io/v1/notification-preferences/browser-timezone`
- Auth: none declared

Record the zone the caller's browser reports (Q-2797, D26 #10).

The notification send window schedules by it when Settings holds no zone.
A name that is not an IANA zone is a 422; a UTC-equivalent report
(privacy modes send ``UTC`` whatever the real zone) answers
``stored: false, reason: "uninformative"`` and stores nothing.

## Headers

- `Authorization` string, nullable
- `X-Org-Id` string, nullable

## Request body

- BrowserTimezoneRequest: `PUT /v1/notification-preferences/browser-timezone` body (Q-2797). keel-app sends the browser's own IANA zone (``Intl.DateTimeFormat().resolvedOptions().timeZone``) on app load and on the OAuth connect page. Validation (an exact IANA name; a UTC-equivalent privacy-mode report refused as uninformative) is the one writer's, ``notifications.timezones.record_browser_timezone``.
  - `timezone` string, required
  - `source` 'app_load' | 'oauth_consent', required

## Response `200`

Successful Response

- BrowserTimezoneResponse: Whether the report was stored; ``reason`` names why not.
  - `stored` boolean, required
  - `reason` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/usekeel/apis/keel-api.md) · [All operations](https://skmtc.dev/usekeel/apis/keel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usekeel/apis/keel-api/revisions/3191ca10b0ab?raw)
