Avatar endpoints require a signed-in user session. See Authentication
for the initial sign-in flow.
Step 1: Get Upload URL
Step 2: Upload the Image
Upload the raw file bytes directly to the presigned URL:Step 3: Wait for Processing
The image is processed asynchronously after upload. If you want the client to explicitly finish the flow, retryupdateUser({ confirmAvatar: true }) until the processed asset is ready:
GET /users/me until avatarUrl
appears after processing finishes: