---
title: "Create Avatar Upload"
method: POST
path: "/v1/profile/avatar/upload-url"
---

# Create Avatar Upload

`POST /v1/profile/avatar/upload-url`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/profile/avatar/upload-url`
- Auth: HTTP bearer

Presigned PUT for the caller's own avatar (png/jpeg/webp/gif/avif).

The browser uploads straight to S3 -- the bytes never touch this service, which is a
1-vCPU single-process task. Then POST /v1/profile/avatar with the returned key.

## Request body

- AvatarUploadRequest: Ask for a presigned PUT. The client declares the type it is about to send; it is pinned into the signature, so sending something else fails at S3.
  - `contentType` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
