---
title: "Update X profile"
method: PATCH
path: "/x/profile"
tags: ["X Write"]
---

# Update X profile

`PATCH /x/profile`

## Request body

- object
  - `account` string, required — X account (@username or ID) to update profile
  - `name` string — Display name
  - `description` string — Bio description
  - `location` string
  - `url` string — Website URL

## Response `200`

Success

- object
  - `success` true, required

## Other responses

- `400` — Invalid input
- `401` — Unauthenticated
- `402` — Payment required. Fixed-price direct MPP requests return a Machine Payments Protocol problem document and a WWW-Authenticate challenge. Authenticated X data requests return balances and explicit Stripe checkout-creation actions. Guest paid-read keys receive only the accountless guest top-up action. Direct MPP challenges also advertise the Stripe wallet action. Other authenticated endpoints return a legacy error shape. A failed request never creates checkout. Create checkout only after the user confirms a payment option.
- `403` — The connected X account needs reauthentication or is currently restricted (locked, suspended, or recovering). Returns an error code of `account_needs_reauth` or `account_restricted`.
- `404` — Connected X account not found
- `422` — X rejected the write or the media URL could not be downloaded. Possible codes: `x_content_too_long`, `x_duplicate_action`, `x_account_suspended`, `x_account_protected`, `x_dm_not_allowed`, `x_target_not_found`, `x_account_feature_required`, `x_rejected`, `media_download_failed` (URL fetch path only - body.url not HTTPS, resolves to private IP, file too large, origin error, or timeout).
- `429` — A write was throttled by Xquik's tier or action limits (`rate_limit_exceeded`) or by X (`x_rate_limited`, `x_daily_limit`). Respect the `Retry-After` header when present, otherwise back off before retrying.
- `500` — Write operation failed. Possible error codes include x_write_failed, x_write_ambiguous, x_duplicate_action, x_daily_limit (429 - account reached daily posting limit, wait 24 hours), and x_write_unconfirmed (202 - action may have completed but could not be confirmed, verify before retrying).
- `503` — A transient upstream issue occurred. Safe to retry with exponential backoff. Returns error code `x_transient_error`.

## Changes

- **2026-07-13** `83005363f122` — 17 breaking, 153 info
  - added `#/components/schemas/AuthenticatedPaymentRequired, #/components/schemas/GuestPaymentRequired, subschema #3` to the response body `oneOf` list for the response status `402`
  - the response's body type/format changed from `object`/`` to ``/`` for status `402`
  - the response's body type/format changed from `object`/`` to ``/`` for status `429`
  - added `subschema #1: LegacyErrorCode, subschema #2: StructuredError` to the `error` response property `oneOf` list for the response status `400`
  - …166 more
- **2026-04-25** `2adc33156b4b` — 8 warning, 14 info
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `400`
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `401`
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `402`
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `500`
  - …18 more

[Change history](https://skmtc.dev/xquik-dev/apis/xquik-api/changes/x/profile/patch.md)

---

[API](https://skmtc.dev/xquik-dev/apis/xquik-api.md) · [All operations](https://skmtc.dev/xquik-dev/apis/xquik-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/xquik-dev/xquik-api/revisions/83005363f122/schema)
