API Personnages
Génération avec des personnages, et mécanisme pour rémunérer les ayants droit de cet usage.
Ce que vous pouvez faire
- Générer des images qui conservent l'apparence d'un personnage, à partir d'une image de référence (GPT-Image-2.5 Flare / Sunburst, GPT-Image-2, Nano Banana 2)
- Historique d'utilisation par personnage — le registre comptable enregistre quel personnage a été utilisé et dans quelle mesure
- Répartition des redevances — appliquer un taux au montant utilisé et calculer ce qui est dû à chaque ayant droit
Quand on travaille avec des personnages en génération par IA, la difficulté pratique n'est pas la technique mais qui est payé, et combien. api.aicu.ai inscrit le personnage dans un registre à chaque génération, ce qui permet de calculer les versements après coup, preuves à l'appui.
Les bases : dessiner votre propre personnage en une requête
La question à laquelle cette page répond le plus souvent : « Je veux une illustration de mon personnage pour un billet de blog. Est-ce possible avec GPT-Image-2.5, et que dois-je envoyer ? » Oui — un seul corps JSON avec une image du personnage, la scène et le modèle.
import base64, requests
ref = base64.b64encode(open("luc4.png", "rb").read()).decode() # une image du personnage
res = requests.post(
"https://api.aicu.ai/v1/images/generations",
headers={"Authorization": "Bearer aicu_live_xxx"},
json={
"model": "gpt-image-2.5-flare", # ou gpt-image-2.5-sunburst / gpt-image-2 / nano-banana
"character": "luc4", # ← qui est représenté, et qui est crédité
"reference_image": ref, # l'apparence vient d'ici
"prompt": "Anime style. LuC4: 20-year-old kind boyfriend, (streaked hair), "
"red short hair with a light highlight streak, red eyes, hoodie. "
"Scene: sitting at a sunny cafe table, typing a blog post on a laptop, "
"looking up with a big smile and a thumbs-up. No text.",
"size": "1536x1024",
"quality": "high",
"visibility": "public", # public : listée dans la galerie avec la ligne de crédit. private : rien n'est conservé, ×2
},
timeout=240,
)
j = res.json()
open("cover.png", "wb").write(base64.b64decode(j["data"][0]["b64_json"]))
print(j["ap_cost"], j["data"][0]["url"]) # 5100 https://api.aicu.ai/v1/images/file/<id>
C'est exactement la requête donnée en exemple sur la page d'accueil : 1536×1024 en high coûte 5,100 AP et a pris environ 25 secondes avec Flare.
characterdésigne la personne à qui la redevance est attribuée. Les noms non enregistrés sont acceptés à condition d'envoyer aussireference_image: vous pouvez donc apporter vos propres personnages. Un nom inconnu sans image de référence renvoie une erreur — c'est voulu, pour attraper les fautes de frappe.modelest respecté dès que vous fournissez votre propre image de référence. Un preset enregistré impose son propre modèle (voir Presets).- Placez les mots qui décrivent l'apparence officielle du personnage avant la scène. La référence fixe l'aspect général ; les mots stabilisent d'une image à l'autre des détails comme une mèche éclaircie.
- La réponse contient
id,data[0].url,data[0].b64_jsonetap_cost; le coût figure aussi dans l'en-têteX-AICU-AP-Cost. Si la connexion tombe après 100 secondes, récupérez le résultat avecGET /v1/images/status/{id}. - Vous utilisez le SDK OpenAI ?
images.edit()fonctionne avecbase_url="https://api.aicu.ai/v2.5", mais cette interface n'a pas de champcharacter: les redevances ne sont donc pas attribuées. Utilisez/v1quand le personnage compte.
Retouches partielles (masque)
Vous pouvez redessiner une partie seulement d'une image déjà générée. Passez un masque PNG où blanc = conserver / noir = redessiner.
res = requests.post(
"https://api.aicu.ai/v1/images/generations",
headers={"Authorization": "Bearer aicu_live_xxx"},
json={
"model": "gpt-image-2",
"character": "nao",
"prompt": "change the background to a night city",
"reference_image": base64.b64encode(previous_image).decode(),
"mask": base64.b64encode(mask_png).decode(),
},
)
Choisir le format d'image (Nano Banana 2)
json={"model": "nano-banana", "character": "nao",
"prompt": "...", "reference_image": ref, "aspect_ratio": "16:9"}
Pratique quand le format est imposé par la destination — bannières de réseaux sociaux, images de couverture de blog, etc.
Presets
Les personnages enregistrés dans GET /v1/images/characters peuvent être appelés avec character seul, sans image de référence. Le serveur détient déjà l'image de référence, un prompt de base et le modèle, et le ap_cost affiché est le prix par image.
curl https://api.aicu.ai/v1/images/characters
{ "character": "MeiSoleil", "prompt": "waving hello at a summer festival", "visibility": "public" }
L'enregistrement se fait après examen. Les ayants droit peuvent nous contacter ; les personnages enregistrés sont présentés sur Character IP.
Deux listes, deux questions
Il existe deux endpoints de personnages, et ils répondent à des questions différentes. Aucun des deux ne demande de clé API.
GET /v1/images/characters | GET /v1/char | |
|---|---|---|
| Répond à | Que puis-je générer, et combien cela coûte-t-il ? | Qui est ce personnage ? |
| Chaque entrée contient | slug, model, size, quality, ap_cost, private_ap_cost, rights | char_id, slug, name, name_jp, description, voice, visibility |
| À utiliser pour | choisir un preset pour character dans une requête d'image | afficher un nom, un profil, ou choisir la voix correspondante pour la parole |
GET /v1/char est le registre des personnages : il décrit ce que les personnages sont, y compris la voix qui appartient à chacun.
curl https://api.aicu.ai/v1/char
{
"characters": [
{
"char_id": 2,
"slug": "mei",
"name": "Mei Soleil",
"name_jp": "メイ・ソレイユ",
"description": "元気いっぱいのムードメーカー。ダンスが得意。キービジュアル&画像担当",
"voice": {
"id": "mei",
"provider": "elevenlabs",
"model": "eleven_multilingual_v2",
"seed": 721,
"tagline": "元気で子供でも聴きやすい、明るい少女の声"
},
"visibility": "public"
}
]
}
Un seul personnage, par char_id ou par slug :
curl https://api.aicu.ai/v1/char/mei
curl https://api.aicu.ai/v1/char/2
Un personnage seul contient plus d'informations que la liste — character_id, birthday, color_name, un sample_text écrit pour ce personnage, et _links, qui détaille l'appel de synthèse vocale à votre place :
{
"character_id": "aicuty_mei",
"birthday": "07-21",
"color_name": "黄色",
"sample_text": "こんにちは、メイ・ソレイユです。メイはキービジュアルと画像を担当しています。一緒に、うちの子を描こうね。",
"_links": {
"self": "/v1/char/2",
"by_slug": "/v1/char/mei",
"generate": { "method": "POST", "url": "/v1/audio/speech", "body": { "input": "...", "voice": "mei" } }
}
}
Le voice.id est la valeur voice à passer à la synthèse vocale : un seul appel vous dit donc à la fois qui est le personnage et comment il sonne. Un personnage sans voix attribuée a voice: null.
Répartition des redevances
Chaque génération réussie est inscrite dans le registre AP en ajout seul, avec le nom du personnage.
character | model | amount | description
hakase | gpt-image-2 | -2400 | Image: gpt-image-2
Le versement correspond au montant utilisé multiplié par le taux enregistré dans la table maîtresse des ayants droit (character_rights).
| Personnage | Ayant droit | Générations | Montant utilisé | Taux | Redevance |
|---|---|---|---|---|---|
| Mei Soleil | AICU Inc. | 3 | ¥60.00 | 40 % de la marge brute | ¥9.60 |
Ce tableau et les chiffres ci-dessous sont des exemples approximatifs destinés à expliquer le mécanisme. Les prix unitaires réels sont fixés en AP (libellés en USD, 10,000 AP = $1) et sont susceptibles de révision tarifaire. Les montants en yens varient avec le taux de change.
La répartition s'applique à la marge brute (chiffre d'affaires − coût de l'API).
Chiffre d'affaires ¥100 − coût de l'API ¥50 = marge brute ¥50
├ Frais de plateforme (redevance de brevet incluse) 20% = ¥10 → AICU
├ Redevance au titulaire du droit d'auteur 40% = ¥20 → ayant droit
└ Reste 40% = ¥20 → bénéfice d'AICU
Les taux sont configurables par personnage : c'est ce que vous avez convenu avec l'ayant droit qui s'applique. Les totaux sont aussi agrégés par bénéficiaire (ayant droit), ce qui correspond à l'unité sur laquelle vous facturez.
Lignes de crédit
Les métadonnées de droits sont conservées séparément du bénéficiaire, car le bénéficiaire (une société) et l'auteur original (la personne citée dans le crédit) ne sont pas forcément les mêmes.
| Champ | Rôle |
|---|---|
holder | À qui la redevance est versée |
original_author | Le créateur ou designer d'origine (pour la ligne de crédit) |
credit_text | Le texte exact à afficher sur les images et dans les galeries |
license | Identifiant des conditions d'utilisation |
source_url | Source primaire des informations sur les droits |
Les entrées publiées dans la galerie figent le crédit tel qu'il était au moment de la publication : si la mention des droits change ensuite, le texte associé aux images déjà publiées reste inchangé.
Notez que les sorties d'api.aicu.ai ne sont pas conformes à C2PA. Si vous avez besoin d'une provenance signée, utilisez cert.aicu.ai.
Garanties de conception
- Le registre est en ajout seul. Rien n'est réécrit après coup ; les corrections se font en ajoutant une ligne compensatoire
- api.aicu.ai ne détient pas de fonds. Le registre sert à calculer les versements, ce n'est pas un solde en dépôt
- Les réponses en cache ne sont pas facturées, donc aucune redevance n'est due non plus — vous avez seulement récupéré à nouveau la même image
Fonctionnement du cache
Une génération aux paramètres identiques (modèle, prompt, image de référence, masque, taille) est servie depuis le cache R2 et revient avec cached: true. Ni facturation ni redevance ne s'appliquent. Ajoutez force: true si vous voulez la régénérer.
Assistance
- Tableau de bord : https://api.aicu.ai/dashboard
- Historique d'utilisation : https://api.aicu.ai/dashboard/history
© 2026 AICU Inc.