> ## Documentation Index
> Fetch the complete documentation index at: https://docs.famulor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Avatars IA personnalisés

> Créez des avatars privés à partir d’une photo ou de votre webcam.

Dans l’éditeur du widget, choisissez **Avatar → Choisir un avatar → Mes avatars → Créer un avatar personnalisé**. Saisissez un nom et importez une photo ou utilisez la webcam.

Utilisez une image carrée nette JPEG, PNG ou WebP de **4,5 Mo maximum**, idéalement au moins **1152 × 1152** pixels, avec de l’espace autour de la tête et des épaules. Confirmez vos droits et l’autorisation d’utiliser cette image.

La création a un **prix unique en crédits**, affiché avant confirmation. Les crédits sont réservés pendant le traitement et débités une seule fois après réussite. Un échec confirmé libère la réservation. Un résultat incertain reste en traitement pendant sa vérification ; réutilisez le même identifiant au lieu de lancer une nouvelle création payante. Si aucun résultat ne peut être confirmé sous 24 heures, la réservation est libérée et tout résultat tardif est supprimé. Aucun coût de stockage récurrent. L’utilisation en direct est facturée séparément.

Si les crédits sont insuffisants, la règle de recharge automatique enregistrée et activée est essayée selon ses conditions existantes. Sinon, choisissez **Ajouter des crédits**, actualisez le solde et réessayez. La recharge doit être créditée à l’espace de travail.

Les avatars personnalisés appartiennent à l’espace de travail actif et sont utilisables par son équipe. Les autres espaces ne peuvent pas les voir ni les sélectionner. Les avatars de la bibliothèque commune restent partagés. Une fois prêt, sélectionnez l’avatar dans **Mes avatars**. Avant de le supprimer, choisissez un autre avatar dans tous les widgets concernés. Les crédits de création ne sont pas remboursés.

## API, MCP, CLI et SDK

REST: `GET /api/v1/avatars/capability`, `POST /api/v1/avatars/uploads`, `POST /api/v1/avatars`, `GET /api/v1/avatars`, `GET /api/v1/avatars/{id}`, `DELETE /api/v1/avatars/{id}`, `GET /api/v1/avatars/catalog`.

MCP: `get_avatar_capability`, `create_avatar_upload`, `submit_avatar`, `list_avatars`, `get_avatar`, `delete_avatar`, `list_avatar_catalog`.

```bash theme={null}
famulor get-avatar-capability
famulor create-avatar-upload --name "My avatar" --style custom \
  --content-type image/jpeg --size-bytes 123456
# Upload the photo to the returned upload_url before submitting.
famulor submit-avatar --id <prepared-id> --consent true --expected-credits <quoted-price>
famulor get-avatar <prepared-id>
famulor list-avatars
famulor list-avatar-catalog --style realistic
famulor delete-avatar <avatar-id>
```

```typescript theme={null}
import { Famulor } from "famulor-sdk";
import { readFile } from "node:fs/promises";
const photo = new Blob([new Uint8Array(await readFile("photo.jpg"))], { type: "image/jpeg" });
const client = new Famulor({ apiKey: process.env.FAMULOR_API_KEY! });
const quote = await client.avatars.capability();
const upload = await client.avatars.prepareUpload({
  name: "My avatar", style: "custom",
  content_type: "image/jpeg", size_bytes: photo.size,
});
const form = new FormData();
form.append("", photo, "photo.jpg");
form.append("cacheControl", "0");
const uploaded = await fetch(upload.data.upload_url, {
  method: "PUT", headers: { "x-upsert": "false" }, body: form,
});
if (!uploaded.ok) throw new Error("Photo upload failed");
const avatar = await client.avatars.submit({
  id: upload.data.id, consent: true,
  expected_credits: quote.data.creation_credits,
});
const status = await client.avatars.get(avatar.data.id);
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.