---
title: "Update Current User"
method: PATCH
path: "/users/me"
tags: ["accepts-api-key"]
---

# Update Current User

`PATCH /users/me`

## Request

- Base URL: `https://api.tellers.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tellers.ai/users/me`
- Auth: none declared

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Request body

- UpdateUserRequest
  - `first_name` string, nullable
  - `last_name` string, nullable
  - `user_preferences` UserPreferences
    - `analysis` AssetAnalysisSettings
      - `reasoning` 'low' | 'medium' | 'high', nullable
      - `fps` number, nullable
      - `entity_quality` 'low' | 'medium' | 'high', nullable
      - `asset_quality` 'low' | 'medium' | 'high', nullable
      - `prompt` string, nullable
      - `long_video` LongVideoAnalysisSettings: How descriptions of long videos differ from short ones. Only scene-description generation reads this; ``video_analyse_gemini`` takes its processing mode as a tool argument instead. Every field is optional so a folder config can override one of them and inherit the rest.
        - `enabled` boolean, nullable: Whether videos longer than 'min_duration_s' use these settings. When false, every video is described like a short one (static frame sampling, 5-minute chunks).
        - `min_duration_s` integer, nullable: Videos longer than this many seconds count as long.
        - `processing` 'static' | 'agentic', nullable: 'agentic' lets Gemini pick which frames to look at (cheaper on long footage); 'static' samples at the configured fps.
        - `split_duration_s` integer, nullable: Length in seconds of each Gemini call a long video is split into. 0 sends the whole video in one call.
    - `upload` UserUploadPreferences: What runs automatically on every file the user uploads. Same fields, same meaning as on ``TellersConfigFile``. Resolution order is the folder's tellers-config, then these, then the app default.
      - `generate_stt_from_op_atom` boolean, nullable: Transcribe uploaded Avid OP-Atom MXF files. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_stt_from_master_clip` boolean, nullable: Transcribe uploaded media and master clips. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_stt_with_diarization` boolean, nullable: Split upload transcripts by speaker. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_description_from_op_atom` boolean, nullable: Generate a description for uploaded Avid OP-Atom MXF files. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_description_from_master_clip` boolean, nullable: Generate a description for uploaded media and master clips. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.

## Response `200`

Successful Response

- ApiUser
  - `firebase_uid` string, nullable, required
  - `email` string, required
  - `company` string, nullable, required
  - `first_name` string, nullable, required
  - `job_title` string, nullable, required
  - `last_name` string, nullable, required
  - `profile_pic` string, nullable, required
  - `created_at_str` string, required: ``created_at`` as UTC ISO-8601 ending in Z (e.g. for debugging / clients).
  - `last_seen_at_str` string, required: ``last_seen_at`` as UTC ISO-8601 ending in Z.
  - `updated_at_str` string, required: ``updated_at`` as UTC ISO-8601 ending in Z.
  - `credits` number, required: Spendable balance from grants (`get_token`), not legacy columns.
  - `storage_quota_gb` integer, required: Total storage quota available to the user in GB.
  - `storage_used_gb` number, nullable: Gigabytes this user's assets and their renditions occupy, counting each stored object once and rounded to two decimals. The same unit as ``storage_quota_gb``, so the pair reads directly as "3.4 of 5 GB". Null when no total has been computed for the account yet. Read from a cache refreshed hourly, so it can lag a worker that has just written a proxy.
  - `subscription` ApiUserSubscription, required
    - `type` 'Monthly' | 'Yearly' | 'Enterprise', required: User-facing subscription cadence label. Enterprise is a plan set up by the Tellers team, billed outside the app: it unlocks every feature and cannot be changed or cancelled from the app.
    - `tier` 'basic' | 'pro' | 'expert' | 'enterprise_user', required: Named subscription offer; subscriptions that predate tiers read as basic. ``enterprise_user`` is granted by hand outside Stripe (see :mod:`tellers_common.enterprise_user_subscription`) and ranks above every paid tier.
    - `pricing_tier` string, nullable: Billing catalog plan `tier_id` the subscription is on (for example `monthly` or `pro_yearly`), including existing subscribers on retired prices; null when it matches no catalog plan.
    - `can_configure_tokens` boolean, required: True when the user can buy extra tokens on top of the plan (expert only).
    - `monthly_tokens` number, required: Subscription token amount available each month.
    - `storage_quota_gb` integer, required: Total storage quota available to the user in GB.
    - `pricing` ApiUserSubscriptionPricingLine[]: Current Stripe subscription price lines with price id and quantity.
      - `id` string, required: Stripe price id for this subscription line.
      - `quantity` integer, required: Quantity for this Stripe price line.
    - `currency` string, nullable: Lowercase ISO 4217 code the subscription is billed in. Stripe can't change it, so plan changes are priced in it. Null for a subscription not synced since this was added.
    - `cancel_at_period_end` boolean: True when Stripe will cancel the subscription at period end.
    - `cancel_at` string, nullable: UTC ISO-8601 time when Stripe will cancel the subscription.
    - `current_period_end` string, nullable: UTC ISO-8601 end of the current subscription period.
    - `tokens_renew_at` string, nullable: UTC ISO-8601 time the plan's monthly tokens are next granted: the renewal for a monthly plan, the next monthly drop for a yearly one. Null when no further grant is due (e.g. the subscription is set to cancel first).
    - `latest_payment_issue` object, nullable: When set, an invoice needs payment or customer action (e.g. 3DS). Fields may include invoice_id, invoice_status, hosted_invoice_url, customer_action_url.
  - `role` object: Role flags for roles held by the user. Missing roles are omitted.
  - `user_preferences` UserPreferences, required
    - `analysis` AssetAnalysisSettings
      - `reasoning` 'low' | 'medium' | 'high', nullable
      - `fps` number, nullable
      - `entity_quality` 'low' | 'medium' | 'high', nullable
      - `asset_quality` 'low' | 'medium' | 'high', nullable
      - `prompt` string, nullable
      - `long_video` LongVideoAnalysisSettings: How descriptions of long videos differ from short ones. Only scene-description generation reads this; ``video_analyse_gemini`` takes its processing mode as a tool argument instead. Every field is optional so a folder config can override one of them and inherit the rest.
        - `enabled` boolean, nullable: Whether videos longer than 'min_duration_s' use these settings. When false, every video is described like a short one (static frame sampling, 5-minute chunks).
        - `min_duration_s` integer, nullable: Videos longer than this many seconds count as long.
        - `processing` 'static' | 'agentic', nullable: 'agentic' lets Gemini pick which frames to look at (cheaper on long footage); 'static' samples at the configured fps.
        - `split_duration_s` integer, nullable: Length in seconds of each Gemini call a long video is split into. 0 sends the whole video in one call.
    - `upload` UserUploadPreferences: What runs automatically on every file the user uploads. Same fields, same meaning as on ``TellersConfigFile``. Resolution order is the folder's tellers-config, then these, then the app default.
      - `generate_stt_from_op_atom` boolean, nullable: Transcribe uploaded Avid OP-Atom MXF files. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_stt_from_master_clip` boolean, nullable: Transcribe uploaded media and master clips. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_stt_with_diarization` boolean, nullable: Split upload transcripts by speaker. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_description_from_op_atom` boolean, nullable: Generate a description for uploaded Avid OP-Atom MXF files. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.
      - `generate_description_from_master_clip` boolean, nullable: Generate a description for uploaded media and master clips. Applies when a file is uploaded. Unset falls back to the app default; a tellers-config file in the asset's folder tree that sets this field takes precedence.

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-05** `fdaa0fa44a26`: 2 info
  - added the new optional request property `user_preferences/anyOf[subschema #1: UserPreferences]/analysis/anyOf[subschema #1: AssetAnalysisSettings]/long_video`
  - added the optional property `user_preferences/analysis/anyOf[subschema #1: AssetAnalysisSettings]/long_video` to the response with the `200` status

[Operation history](https://skmtc.dev/tellers/apis/tellers-api/changes/users/me/patch.md)

---

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