Set your picture
Replaces the person's picture with the image in the body and returns their profile.
Only a person can change it, and not through an app limited to reading.
Guide: Your account
A project secret key: vh_sk_... for production, vh_sk_test_... for test. Keep it on your servers.
In: header
Request body
application/json
TypeScript definitions
Use the request body type in TypeScript.
The image's media type: image/png, image/jpeg or image/webp.
The image file, base64-encoded, up to 2 MB before encoding.
Examples
curl -X PUT "https://api.voidhash.com/api/v1/me/avatar" \ -H "Authorization: Bearer vh_sk_..." \ -H "Content-Type: application/json" \ -d '{ "contentType": "image/png", "imageBase64": "iVBORw0KGgoAAAANSUhEUgAA..." }'{ "id": "user_k3m8q1z6v9c2x5b7n4w0e8r1", "name": "Grace Hopper", "email": "grace@example.com", "isEmailVerified": true, "avatarUrl": "https://api.voidhash.com/files/file_w3e6r9t2y5u8i1o4p7a0s3d6", "createdAt": "2026-01-12T10:00:00.000Z"}{ "error": { "type": "invalid_request", "code": "invalid_image", "message": "File type or size is not allowed.", "param": "imageBase64" }}{ "error": { "type": "unauthenticated", "code": "invalid_api_key", "message": "This secret key is not valid." }}{ "error": { "type": "permission_denied", "code": "permission_denied", "message": "Insufficient permissions." }}{ "error": { "type": "conflict", "code": "avatar_busy", "message": "Avatar is still being validated." }}{ "error": { "type": "internal", "code": "internal_error", "message": "Something went wrong on our side. Try again, and contact support with the Request-Id header if it keeps failing." }}{ "error": { "type": "unavailable", "code": "file_storage_unavailable", "message": "File storage is temporarily unavailable. Try again shortly." }}Response body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
Errors
| Status | type | code | When |
|---|---|---|---|
| 400 | invalid_request | invalid_image | For an image of the wrong type or size. |
| 409 | conflict | avatar_busy | While an earlier upload is still being processed. |
| 503 | unavailable | file_storage_unavailable | When file storage cannot be reached. |
It can also fail with the errors every operation shares, such as unauthenticated; see Errors.
More in Profile
- Retrieve your profile
GET - Remove your picture
DELETE
Something wrong or missing on this page? Tell us by email or on Discord.