---
title: "Update Preferred Model"
method: PATCH
path: "/auth/me/preferred-model"
tags: ["auth"]
---

# Update Preferred Model

`PATCH /auth/me/preferred-model`

Persist the user's preferred LLM model id.

The catalogue lives in /billing/models; this endpoint stores an opaque
string. Pass `null` to clear the preference and fall back to the
catalogue default at request time.

## Request body

- PreferredModelRequest — Body for PATCH /auth/me/preferred-model. Opaque text — validated client-side against /billing/models so the column doesn't need a migration when a provider adds a model. `None` clears the preference and falls back to the catalogue default.
  - `preferred_model` string, nullable

## Response `200`

Successful Response

- UserResponse
  - `id` string, required
  - `github_username` string, nullable
  - `avatar_url` string, nullable
  - `email` string, nullable
  - `tier` 'free' | 'pro' | 'teams' | 'admin', required
  - `personal_tier` 'free' | 'pro' | 'teams' | 'admin', required
  - `effective_tier` 'free' | 'pro' | 'teams' | 'admin', required
  - `billing_access_source` 'none' | 'subscription' | 'comped' | 'legacy_unknown', required
  - `subscription_status` 'pending' | 'active' | 'past_due' | 'on_hold' | 'paused' | 'cancelled' | 'failed' | 'expired', nullable
  - `cancel_at_period_end` boolean
  - `current_period_end` string, date-time, nullable
  - `past_due_ends_at` string, date-time, nullable
  - `llm_credit_balance_cents` integer, required
  - `monthly_credit_reset_at` string, date-time, nullable
  - `billing_interval` string, nullable
  - `preferred_model` string, nullable
  - `theme_preference` 'system' | 'light' | 'dark', nullable
  - `notification_preferences` object
  - `deleted_at` string, date-time, nullable
  - `has_subscription` boolean
  - `has_billing_account` boolean
  - `free_answers_used` integer, nullable
  - `free_answers_limit` integer, nullable
  - `free_answers_remaining` integer, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-12** `ab200f4d1489` — 7 info
  - added the optional property `cancel_at_period_end` to the response with the `200` status
  - added the optional property `current_period_end` to the response with the `200` status
  - added the optional property `past_due_ends_at` to the response with the `200` status
  - added the optional property `subscription_status` to the response with the `200` status
  - …3 more

[Change history](https://skmtc.dev/repowise/apis/repowise-hosted-api/changes/auth/me/preferred-model/patch.md)

---

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