---
title: User-generated content
description: How Sudomimus handles user-provided profile media, generated
  avatars, moderation, and avatar delivery to applications.
editUrl: true
head: []
template: doc
sidebar:
  order: 1
  hidden: false
  attrs: {}
pagefind: true
draft: false
---

import { CardGrid, LinkCard } from "@astrojs/starlight/components";

Sudomimus user-generated content currently centers on account avatars: users can keep a generated avatar, upload their own image, and decide which applications may receive a static or animated avatar claim.

The system separates three concerns:

- **Account media** is controlled by the user in the With portal.
- **Processing and moderation** normalize uploaded media into safe public WebP projections.
- **Application delivery** uses claim policy, user consent, and sector-scoped opaque URLs.

<CardGrid>
<LinkCard
    title="Avatar uploads"
    description="The upload intent flow, file constraints, processing states, and moderation behavior."
    href="/en-us/user-generated-content/avatar-uploads/"
/>
<LinkCard
    title="Avatar review lifecycle"
    description="What pending, approved, and rejected uploads mean for account pages and applications."
    href="/en-us/user-generated-content/avatar-review-lifecycle/"
/>
<LinkCard
    title="Avatar claims and delivery"
    description="How static and animated avatar URLs appear in access tokens and OIDC responses."
    href="/en-us/user-generated-content/avatar-claims-and-delivery/"
/>
</CardGrid>

## Account avatars

Each account has one current account avatar. It can come from:

| Source | Meaning |
| --- | --- |
| `GENERATED` | A Sudomimus-generated account avatar. This is the default and can be reset at any time. |
| `UPLOAD` | A user-uploaded image accepted by the upload pipeline. |

The account avatar is not automatically shared with every application. Applications receive it only when their claim policy requests `STATIC_AVATAR` or `ANIMATED_AVATAR` and the user's grant allows the real avatar. Otherwise, applications may receive a sector placeholder avatar or no avatar field, depending on policy.

## Processing model

Uploaded originals are private upload candidates. After the user completes an upload intent, Sudomimus validates the uploaded object, creates a new avatar asset, and enqueues asynchronous normalization. Public avatar delivery uses normalized WebP files, not the original upload.

The normalized output is square, `512x512`, and has a static projection. Animated inputs can also produce an animated WebP projection. If an avatar has no animation, animated delivery falls back to the static URL.

## Related

- [Identity claims and sharing](/en-us/concepts/identity-claims/) - the developer policy and user grant model.
- [Avatar uploads](/en-us/user-generated-content/avatar-uploads/) - the account-side upload flow.
- [Avatar review lifecycle](/en-us/user-generated-content/avatar-review-lifecycle/) - what review state means before an upload reaches applications.
- [Avatar claims and delivery](/en-us/user-generated-content/avatar-claims-and-delivery/) - the application-side delivery contract.