---
title: "Put Preferences"
method: PUT
path: "/auth/me/preferences"
---

# Put Preferences

`PUT /auth/me/preferences`

## Request

- Base URL: `https://api-docs.session-exchange.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api-docs.session-exchange.com/auth/me/preferences`
- Auth: none declared

Set the signed-in human's own account preferences. Body `{summary_opt_in: bool}` and/or
`{sales_report: "off" | "daily" | "weekly" | "monthly", sales_report_scope: "own" | "workspace"}`
(the seller sales report, #594) and/or `{signup_source: str | null}` — the optional "How did you
hear about us?" answer (collector/signup_source.py, #775): at most 200 characters, scrubbed
before it is stored; "" skips the question, null removes an earlier answer. While
AGENT_MDX_SIGNUP_SOURCE is off every value is refused with 403 `signup_source_off` (nothing is
recorded) — except null for an account that still holds an answer, which removes it.

Session-only, like GET /auth/me: a `ge_sess_` bearer from a sign-in. Machine tokens (admin /
emit / read / unified) and library tokens are refused with 401 `not_logged_in` — consent to
sending your session text to an LLM is a human's decision, never a token's. There is no user
id in the path or body, so a caller can only ever change their OWN account.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/session-exchange/apis/a4sx.md) · [All operations](https://skmtc.dev/session-exchange/apis/a4sx/llms.txt) · [OpenAPI document](https://skmtc.dev/session-exchange/apis/a4sx/revisions/abaefc33dfc7?raw)
