---
title: "Read your preferences"
method: GET
path: "/api/user/prefs"
tags: ["Your account"]
---

# Read your preferences

`GET /api/user/prefs`

## Request

- Base URL: `https://verifiedhandles.org`
- URL: `https://verifiedhandles.org/api/user/prefs`
- Auth: one of:
  - none
  - HTTP bearer

The preferences of the account the key belongs to. Signed out, it still answers 200, with every value null, so a client need not check first.

## Response `200`

The preferences.

- Prefs: The caller’s preferences, or nulls when nobody is signed in.
  - `signedIn` boolean, required: A key or a session was sent and is good.
  - `csrf` string, nullable, required: The token a browser session sends back as `X-CSRF-Token` on a change. A key needs none. Null signed out.
  - `copyHandleOnly` boolean, nullable, required: Copy a handle without its `@` or address. Null signed out.
  - `saveRecentSearches` boolean, nullable, required: Keep recent searches with the account. Null signed out.

## Other responses

- `400`: Or the request sent a key and a session cookie together (`bearer_with_cookie`): send one.
- `401`: No key was sent (`auth_required`), or the key was refused: unknown, revoked or expired, its holder may no longer use keys, or this instance takes none. Carries `WWW-Authenticate: Bearer`. After 60 refused keys from one IP address in a minute, every key from there is answered `429` (text, with `Retry-After`) until the minute is up.
- `403`: A read-only key tried to change something (`read_only_key`), or the account is blocked (`forbidden`).
- `503`: The site is down for maintenance. The body is the maintenance page, as HTML. Try again later: `Retry-After` gives the seconds.

---

[API](https://skmtc.dev/verifiedhandles/apis/verified-handles-api.md) · [All operations](https://skmtc.dev/verifiedhandles/apis/verified-handles-api/llms.txt) · [OpenAPI document](https://skmtc.dev/verifiedhandles/apis/verified-handles-api/revisions/40720de2e0ec?raw)
