---
title: "Patch preferences with a durable receipt"
method: POST
path: "/v1/users/me/preferences/commands"
tags: ["user"]
---

# Patch preferences with a durable receipt

`POST /v1/users/me/preferences/commands`

## Request

- Base URL: `https://app.legend.trade/api/rest`
- URL: `https://app.legend.trade/api/rest/v1/users/me/preferences/commands`
- Auth: HTTP bearer

## Request body

- object
  - `operationId` string, uuid, required: Persist this UUID and input before transport. Retry the same pair after an unknown outcome. A new intent needs a new UUID.
  - `expectedUserId` string, uuid, required: The Legend account UUID, not the Privy account ID.
  - `patch` object, required
    - `feedMinNotional` number
    - `tickerView` 'watchlist' | 'traders'
    - `tickerPeriod` '7d' | '30d' | 'all' | '24h'
    - `tickerFavoriteOrder` string[]
    - `tokenSelectorSort` TokenSelectorSort
      - `sortColumn` 'price' | 'change24h' | 'volume' | 'openInterest', required
      - `sortDirection` 'asc' | 'desc', required
    - `favoriteTimeframes` string[]
    - `chartType` 'bars' | 'candles' | 'hollow-candles' | 'line' | 'area' | 'baseline' | 'heikin-ashi'
    - `chartIndicators` ChartIndicators
      - `version` 1, required
      - `content` string, required
    - `chartInterval` '1' | '3' | '5' | '15' | '30' | '60' | '120' | '240' | '480' | '720' | '1S' | '1D' | '3D' | '1W'
    - `chartTradingOverlays` ChartTradingOverlays
      - `position` boolean, required
      - `liquidation` boolean, required
      - `orders` boolean, required
      - `fills` boolean, required
    - `chartColors` ChartColors
      - `up` string, nullable, required
      - `down` string, nullable, required
    - `netWorthChartRange` '1d' | '1w' | '1m' | 'all'
    - `tradeTab` 'info' | 'positions' | 'copying' | 'spot' | 'open-orders' | 'trades' | 'algo-orders' | 'funding'
    - `locale` 'en' | 'fr' | 'th' | 'ko' | 'ja' | 'zh-CN' | 'de' | 'es'

## Response `200`

Successful response

- PreferenceCommandReceipt: The preferences at the original command. Read current preferences after recovery. Serialize conflicting patches in the client.
  - `operationId` string, uuid, required
  - `status` 'succeeded' | 'rejected', required
  - `result` PreferenceCommandResult, required
    - `viewerId` string, uuid, required
    - `preferences` UserPreferences, required
      - `feedMinNotional` number, required
      - `tickerView` 'watchlist' | 'traders', required
      - `tickerPeriod` '7d' | '30d' | 'all' | '24h', required
      - `tickerFavoriteOrder` string[], required
      - `tokenSelectorSort` TokenSelectorSortOutput, required
        - `sortColumn` 'price' | 'change24h' | 'volume' | 'openInterest', required
        - `sortDirection` 'asc' | 'desc', required
      - `favoriteTimeframes` string[], required
      - `chartType` 'bars' | 'candles' | 'hollow-candles' | 'line' | 'area' | 'baseline' | 'heikin-ashi', required
      - `chartIndicators` ChartIndicatorsOutput, required
        - `version` 1, required
        - `content` string, required
      - `chartInterval` '1' | '3' | '5' | '15' | '30' | '60' | '120' | '240' | '480' | '720' | '1S' | '1D' | '3D' | '1W', required
      - `chartTradingOverlays` ChartTradingOverlaysOutput, required
        - `position` boolean, required
        - `liquidation` boolean, required
        - `orders` boolean, required
        - `fills` boolean, required
      - `chartColors` ChartColorsOutput, required
        - `up` string, nullable, required
        - `down` string, nullable, required
      - `netWorthChartRange` '1d' | '1w' | '1m' | 'all', required
      - `tradeTab` union, required
        - 'info' | 'positions' | 'copying' | 'spot' | 'open-orders' | 'trades' | 'algo-orders' | 'funding'
        - string
      - `locale` union, required
        - 'en' | 'fr' | 'th' | 'ko' | 'ja' | 'zh-CN' | 'de' | 'es'
        - string
  - `error` object, nullable, required
    - `code` string, required
    - `message` string, required

## Other responses

- `400`: Invalid input data
- `401`: Authorization not provided
- `403`: Insufficient access
- `500`: Internal server error

## Changes

- **2026-10-29** `c3e45061cf81`: 1 info
  - the `chartTradingOverlays` response's property default value changed from `{"position":true,"liquidation":true,"orders":true,"fills":false}` to `{"position":true,"liquidation":true,"orders":true,"fills":true}` for the status `200`
- **2026-10-26** `97ecc6caa9a3`: 1 breaking, 9 info
  - the `result/anyOf[#/components/schemas/PreferenceCommandResult]/preferences/locale` response's property type changed from `string` to no type for status `200`
  - added the new `de` enum value to the request property `patch/locale`
  - added the new `es` enum value to the request property `patch/locale`
  - added `subschema #1, subschema #2` to the `result/anyOf[#/components/schemas/PreferenceCommandResult]/preferences/locale` response property `anyOf` list for the response status `200`
  - …6 more
- **2026-10-24** `47071fafc154`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/legend/apis/legend-api/changes/v1/users/me/preferences/commands/post.md)

---

[API](https://skmtc.dev/legend/apis/legend-api.md) - [All operations](https://skmtc.dev/legend/apis/legend-api/llms.txt) - [OpenAPI document](https://skmtc.dev/legend/apis/legend-api/revisions/c3e45061cf81?raw)
