---
title: "Update Avatar"
method: POST
path: "/user/update_avatar"
tags: ["Write Actions"]
---

# Update Avatar

`POST /user/update_avatar`

## Request

- Base URL: `https://api.twitterapis.com/twitter`
- URL: `https://api.twitterapis.com/twitter/user/update_avatar`
- Auth: HTTP bearer

Replace the profile picture on the account behind your registered session. Send the image base64-encoded in the request body; there is no URL-fetch form and no multipart form. Billed at $0.0016 per call. Cost: $0.0016 per call.

## Request body

- object
  - `image` string, required: Base64-encoded image bytes, sent in the JSON request body. Not a URL and not multipart. `banner` and `data` are accepted as aliases for the same field.

## Response `200`

Replace your own profile picture with a base64-encoded image.

- object
  - `ok` boolean: True when X accepted the upload. A payload X cannot decode is refused upstream and surfaces as an error rather than as ok: false. On a rare 200 that applies nothing, the avatar route answers 422 with ok: false and a reason, because its check reads the account X returns; the banner route has no equivalent check and would report ok, which is why the read-back below is the confirmation rather than this field.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `402`: Insufficient credits
- `403`: Forbidden
- `404`: Not found
- `429`: Rate limited
- `5XX`: Server error

---

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