API Presets
Les presets sont des configurations de style prédéfinies qui guident le rendu visuel de l’IA. Ils donnent un accès rapide à des styles de miniature éprouvés, sans avoir besoin d’une image de template.Lister les presets
GET /api/presets
bash
curl https://youthumb.ai/api/presets \
-H "x-api-key: your_api_key"Réponse des presets
json
{
"success": true,
"data": [
{
"key": "mrbeast-viral",
"label": "MrBeast Viral",
"emoji": "🔥",
"description": "High energy, bright colors, expressive faces"
},
...
]
}Presets disponibles
| Clé du preset | Libellé | Description |
|---|---|---|
free | Free | Aucune contrainte de style, prompt seul |
mrbeast-viral | MrBeast Viral | Très énergique, couleurs vives, visages expressifs |
reaction-shocked | Reaction Shocked | Réactions spectaculaires, texte gras, accrocheur |
before-after | Before/After | Comparaison en deux parties, révélation d’une transformation |
challenge-experiment | Challenge | Scènes d’action, suspense, résultat teasé |
gaming-esports | Gaming | Couleurs néon, action dynamique, éléments de jeu |
tech-review | Tech Review | Photos produit épurées, esthétique moderne |
vlog-travel | Vlog/Travel | Décors panoramiques, lien personnel |
tutorial-educational | Tutorial | Visuels clairs, indicateurs d’étapes, utile |
cinematic-film | Cinematic | Style affiche de film, éclairage dramatique |
dramatic-intense | Dramatic | Fort contraste, émotions intenses |
mystery-dark | Mystery | Tons sombres, intrigue, suspense |
luxury-premium | Luxury | Élégant, haut de gamme, sophistiqué |
office | Cozy Office | Bureau rangé, lumière chaude, composition prête pour du texte |
youtube-studio | YouTube Studio | Studio de créateur, ring light, professionnel |
Utiliser les presets
Lors de la création d’une miniature, indique un preset avec le paramètrepresetKey :
json
{
"prompt": "Excited reaction to new iPhone announcement",
"presetKey": "tech-review",
"personId": "your-person-id"
}Preset ou template
| Méthode | Description | Idéal pour |
|---|---|---|
presetKey | Consignes de style interprétées par l’IA | Une génération rapide avec une ambiance précise |
templateId | Référence visuelle exacte | Reproduire un style de miniature précis |
json
{
"prompt": "Review of the latest MacBook",
"presetKey": "tech-review",
"templateId": "template-uuid",
"personId": "your-person-id"
}Codes d'erreur
Toutes les erreurs de l’API suivent le même format :json
{
"success": false,
"error": "Error message",
"details": { ... }
}Codes de statut HTTP
| Statut | Nom | Description |
|---|---|---|
400 | Bad Request | Corps de requête ou paramètres invalides |
401 | Unauthorized | Clé API manquante ou invalide |
402 | Payment Required | Crédits insuffisants |
403 | Forbidden | Accès refusé à la ressource |
404 | Not Found | La ressource n’existe pas |
429 | Too Many Requests | Limite de débit dépassée |
500 | Internal Server Error | Erreur côté serveur |
400 Bad Request
Renvoyé quand la validation de la requête échoue.json
{
"success": false,
"error": "Validation error",
"details": {
"prompt": ["String must contain at least 3 character(s)"],
"personId": ["Invalid uuid"]
}
}- Champs obligatoires manquants
- Types de champ invalides
- Valeurs hors des plages autorisées
- Utilisation simultanée de
personIdetpersonName
401 Unauthorized
Renvoyé quand l’authentification échoue.json
{
"success": false,
"error": "Unauthorized"
}- En-tête
x-api-keymanquant - Clé API invalide ou expirée
- En-tête Authorization mal formé
402 Payment Required
Renvoyé quand tu n’as pas assez de crédits.json
{
"success": false,
"error": "Insufficient credits"
}403 Forbidden
Renvoyé quand tu n’as pas accès à une ressource.json
{
"success": false,
"error": "Project does not belong to your organization"
}- Accès aux ressources d’une autre organisation
- Permissions insuffisantes
404 Not Found
Renvoyé quand une ressource n’existe pas.json
{
"success": false,
"error": "Project not found"
}json
{
"success": false,
"error": "Person not found"
}json
{
"success": false,
"error": "Template not found"
}429 Too Many Requests
Renvoyé quand tu dépasses les limites de débit.json
{
"success": false,
"error": "Rate limit exceeded"
}javascript
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const waitTime = Math.pow(2, i) * 1000; // 1 s, 2 s, 4 s
await new Promise(resolve => setTimeout(resolve, waitTime));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}500 Internal Server Error
Renvoyé quand un problème survient de notre côté.json
{
"success": false,
"error": "Internal server error"
}Référence des règles de validation
API Thumbnails
| Champ | Règles |
|---|---|
prompt | Obligatoire, 3-2000 caractères |
personId | Optionnel, UUID valide |
personName | Optionnel, 100 caractères max |
presetKey | Optionnel, doit être une clé de preset valide |
templateId | Optionnel, UUID valide |
styleReferenceUrl | Optionnel, URL valide |
youtubeUrl | Optionnel, URL YouTube valide |
contentImages | Optionnel, 6 éléments max |
title | Optionnel, 200 caractères max |
projectName | Optionnel, 100 caractères max |
Options avancées
| Champ | Règles |
|---|---|
variations | 1, 2, 3 ou 4 |
faceExpression | neutral, happy, surprised, excited, serious, confident, keep-original |
textPosition | top, center, bottom, none, keep-original |
negativePrompt | 500 caractères max |
clothingStyle | casual, professional, sporty, elegant, streetwear, keep-original |
faceEnhancement | subtle, normal, enhanced, keep-original |
backgroundBlur | 0-100 |
API Persons
| Champ | Règles |
|---|---|
name | Obligatoire, 1-100 caractères |
description | Optionnel, 500 caractères max |
imageIds | Optionnel, tableau d’UUID |
Ajouter des images à une personne
| Champ | Règles |
|---|---|
imageIds | Obligatoire, 1 à 10 UUID valides |
Besoin d’aide ?
Si tu rencontres un problème non traité ici :- Consulte la documentation de l’API pour vérifier l’usage correct
- Vérifie que ta clé API est valide et dispose des bonnes permissions
- Lis le détail de la réponse d’erreur pour les problèmes propres à un champ
- Contacte le support si le problème persiste
Joins la réponse d’erreur complète quand tu contactes le support, pour une résolution plus rapide.