API de presets
Los presets son configuraciones de estilo predefinidas que guían el resultado visual de la IA. Dan acceso rápido a estilos de miniatura probados sin necesitar una imagen de plantilla.Listar presets
GET /api/presets
bash
curl https://youthumb.ai/api/presets \
-H "x-api-key: your_api_key"Respuesta de presets
json
{
"success": true,
"data": [
{
"key": "mrbeast-viral",
"label": "MrBeast Viral",
"emoji": "🔥",
"description": "High energy, bright colors, expressive faces"
},
...
]
}Presets disponibles
| Clave del preset | Etiqueta | Descripción |
|---|---|---|
free | Free | Sin restricciones de estilo, solo el prompt |
mrbeast-viral | MrBeast Viral | Mucha energía, colores vivos, rostros expresivos |
reaction-shocked | Reaction Shocked | Reacciones dramáticas, texto llamativo, impactante |
before-after | Before/After | Comparación dividida, revelación de una transformación |
challenge-experiment | Challenge | Escenas de acción, suspenso, anticipo del resultado |
gaming-esports | Gaming | Colores neón, acción dinámica, elementos de juego |
tech-review | Tech Review | Tomas de producto limpias, estética moderna |
vlog-travel | Vlog/Travel | Fondos paisajísticos, conexión personal |
tutorial-educational | Tutorial | Visuales claros, indicadores de pasos, útil |
cinematic-film | Cinematic | Estilo póster de película, iluminación dramática |
dramatic-intense | Dramatic | Alto contraste, emociones intensas |
mystery-dark | Mystery | Tonos oscuros, intriga, suspenso |
luxury-premium | Luxury | Elegante, sensación premium, sofisticado |
office | Cozy Office | Escritorio ordenado, luz cálida, composición lista para el texto |
youtube-studio | YouTube Studio | Estudio de creador, aro de luz, profesional |
Usar presets
Al crear una miniatura, indica un preset con el parámetropresetKey:
json
{
"prompt": "Excited reaction to new iPhone announcement",
"presetKey": "tech-review",
"personId": "your-person-id"
}Preset frente a plantilla
| Método | Descripción | Ideal para |
|---|---|---|
presetKey | Pautas de estilo interpretadas por la IA | Generación rápida con un ambiente concreto |
templateId | Referencia visual exacta | Reproducir un estilo de miniatura concreto |
json
{
"prompt": "Review of the latest MacBook",
"presetKey": "tech-review",
"templateId": "template-uuid",
"personId": "your-person-id"
}Códigos de error
Todos los errores de la API siguen un formato coherente:json
{
"success": false,
"error": "Error message",
"details": { ... }
}Códigos de estado HTTP
| Estado | Nombre | Descripción |
|---|---|---|
400 | Bad Request | Cuerpo o parámetros de la solicitud no válidos |
401 | Unauthorized | Clave API ausente o no válida |
402 | Payment Required | Créditos insuficientes |
403 | Forbidden | Acceso denegado al recurso |
404 | Not Found | El recurso no existe |
429 | Too Many Requests | Límite de solicitudes superado |
500 | Internal Server Error | Error del lado del servidor |
400 Bad Request
Se devuelve cuando falla la validación de la solicitud.json
{
"success": false,
"error": "Validation error",
"details": {
"prompt": ["String must contain at least 3 character(s)"],
"personId": ["Invalid uuid"]
}
}- Faltan campos obligatorios
- Tipos de campo no válidos
- Valores fuera de los rangos permitidos
- Uso de
personIdypersonNamea la vez
401 Unauthorized
Se devuelve cuando falla la autenticación.json
{
"success": false,
"error": "Unauthorized"
}- Falta el encabezado
x-api-key - Clave API no válida o caducada
- Encabezado Authorization mal formado
402 Payment Required
Se devuelve cuando no tienes suficientes créditos.json
{
"success": false,
"error": "Insufficient credits"
}403 Forbidden
Se devuelve cuando no tienes acceso a un recurso.json
{
"success": false,
"error": "Project does not belong to your organization"
}- Acceso a recursos de otra organización
- Permisos insuficientes
404 Not Found
Se devuelve cuando un recurso no existe.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
Se devuelve cuando superas los límites de solicitudes.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; // 1s, 2s, 4s
await new Promise(resolve => setTimeout(resolve, waitTime));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}500 Internal Server Error
Se devuelve cuando algo falla de nuestro lado.json
{
"success": false,
"error": "Internal server error"
}Referencia de reglas de validación
API de miniaturas
| Campo | Reglas |
|---|---|
prompt | Obligatorio, 3-2000 caracteres |
personId | Opcional, UUID válido |
personName | Opcional, máx. 100 caracteres |
presetKey | Opcional, debe ser una clave de preset válida |
templateId | Opcional, UUID válido |
styleReferenceUrl | Opcional, URL válida |
youtubeUrl | Opcional, URL de YouTube válida |
contentImages | Opcional, máx. 6 elementos |
title | Opcional, máx. 200 caracteres |
projectName | Opcional, máx. 100 caracteres |
Opciones avanzadas
| Campo | Reglas |
|---|---|
variations | 1, 2, 3 o 4 |
faceExpression | neutral, happy, surprised, excited, serious, confident, keep-original |
textPosition | top, center, bottom, none, keep-original |
negativePrompt | Máx. 500 caracteres |
clothingStyle | casual, professional, sporty, elegant, streetwear, keep-original |
faceEnhancement | subtle, normal, enhanced, keep-original |
backgroundBlur | 0-100 |
API de personas
| Campo | Reglas |
|---|---|
name | Obligatorio, 1-100 caracteres |
description | Opcional, máx. 500 caracteres |
imageIds | Opcional, array de UUID |
Añadir imágenes a una persona
| Campo | Reglas |
|---|---|
imageIds | Obligatorio, 1-10 UUID válidos |
¿Necesitas ayuda?
Si encuentras problemas que no se tratan aquí:- Revisa la documentación de la API para un uso correcto
- Verifica que tu clave API sea válida y tenga los permisos adecuados
- Revisa los detalles de la respuesta de error para ver los problemas de cada campo
- Contacta al soporte si los problemas persisten
Incluye la respuesta de error completa cuando contactes al soporte para resolverlo más rápido.