API generadora de fotos de perfil con IA: crea una app de retratos
Crea una app de fotos de perfil funcional sobre una API generadora de fotos de perfil con IA. Este artículo muestra el flujo de peticiones, los modelos que merece la pena usar, las opciones de fondo, código en Python, controles de calidad y las normas de consentimiento que protegen las fotos de tus clientes.
Subes un selfi y recibes un retrato listo para una sala de juntas. Esa es la promesa de cada API generadora de fotos de perfil con IA, y es mucho más fácil de construir de lo que la mayoría de los desarrolladores espera. No necesitas entrenar un modelo de rostros, no alquilas GPU y no contratas a un fotógrafo para cada cliente. Tu app envía una foto y una instrucción a un endpoint HTTP, espera unos segundos y recibe una imagen terminada, lista para un perfil de LinkedIn, una página de equipo o un dossier de prensa.
Este artículo recorre toda la construcción: el flujo de solicitudes, los modelos que vale la pena usar, código Python que funciona, las comprobaciones de calidad que impiden que retratos débiles lleguen a los clientes y las reglas de consentimiento que mantienen seguro el producto. Todo lo que sigue se basa en la API para desarrolladores de PicassoIA y en los modelos que figuran en la plataforma.
💡 Versión corta: aloja el selfi en tu propio almacenamiento, llama a picassoia/picassoia-image-editor-pro con ese selfi como image 1, consulta la predicción hasta que termine con éxito, haz una comprobación rápida y luego muestra el resultado.
Por qué construir sobre una API
Los retratos de estudio cuestan dinero y tiempo. Un fotógrafo reserva un hueco, un retocador trabaja durante días y un equipo remoto de cuarenta personas necesita cuarenta citas. Una app de fotos de perfil convierte todo eso en un formulario de subida y un botón. Lo que la convierte en un negocio y no en una demo es el control: tu propia interfaz, tus propios fondos, tu propio precio y tus propias reglas de datos.
Quién lo necesita
La demanda es más amplia de lo que se suele pensar. Estos son los productos que no dejan de pedir una función de retratos:
Herramientas de RR. HH. y de incorporación que necesitan un estilo de foto uniforme para cada nueva contratación
Creadores de currículums y bolsas de empleo donde la foto de perfil cambia el aspecto de la página
Plataformas de creadores y freelancers que quieren un avatar pulido al registrarse
Agencias que entregan paquetes de retratos a clientes corporativos
Software para eventos que recoge fotos de ponentes en todo tipo de condiciones de luz
Construir o comprar
Opción
Tiempo de puesta en marcha
Control
Ideal para
Web de fotos de perfil ya hecha
Minutos
Bajo
Una foto personal puntual
Envoltorio sin código alrededor de un formulario
Horas
Medio
Herramientas internas y pruebas rápidas
Tu propia app sobre una API
Unos pocos días
Control total de diseño, precios y datos
Productos y plataformas
Si solo necesitas tu propia foto, usa una web. Si los retratos son una función dentro de algo que vendes, una API gana en todos los aspectos que importan después del lanzamiento.
La economía cuenta la misma historia. Un fotógrafo cobra por persona, así que el costo crece con cada cliente que sumas. Una llamada a una API es software: el trabajo que hay detrás del primer retrato es el mismo que sirve para el retrato número diez mil, y tu margen mejora a medida que crece el uso en lugar de reducirse.
El flujo de peticiones en cinco pasos
Cada app de fotos de perfil, por muy pulida que sea su interfaz, sigue el mismo ciclo. La API de PicassoIA es asíncrona y de estilo Replicate: creas una predicción, la consultas y después lees el resultado.
Recoge el selfi en tu frontend.
Valida y guarda el archivo para tener una URL que la API pueda descargar.
Crea la predicción con un POST al endpoint del modelo.
Consulta la predicción hasta que su estado sea final.
Comprueba y entrega la URL del resultado.
La URL base es https://api.picassoia.com/v1, y cada petición lleva una cabecera Authorization: Bearer pia_sk_.... Creas esas claves secretas desde la página de la API en picassoia.com, y una cuenta puede tener dos, así que una puede servir para producción y la otra para pruebas.
Subida y validación
Rechaza los datos incorrectos desde el principio. Acepta JPEG, PNG y WebP, mantén el archivo muy por debajo del límite de 10 MB del cuerpo de la petición y fija una resolución mínima para que los rostros no sean más pequeños que un sello de correos. Después, guía al usuario en la misma pantalla: colócate frente a la ventana, sostén el teléfono a la altura de los ojos, una sola persona en el encuadre, sin gafas de sol.
Una pista de diez segundos en la pantalla de subida evita más tickets de soporte que cualquier ajuste del modelo. Un selfi borroso en un pasillo oscuro produce un retrato borroso cada vez.
Crear la predicción
Los endpoints de los modelos siguen un único patrón: POST /v1/models/{owner}/{name}/predictions. El cuerpo envuelve cada parámetro dentro de un objeto input. Para un retrato, la entrada contiene la URL del selfi y una instrucción de texto. Recibes de inmediato un objeto de predicción con un id y un status, mucho antes de que exista la imagen.
Consultar y guardar
Llama a GET /v1/predictions/{id} cada dos o tres segundos hasta que el estado sea succeeded, failed o canceled. Si un cliente cierra la pestaña, POST /v1/predictions/{id}/cancel detiene el trabajo. Cuando termina con éxito, descarga el resultado y cópialo a tu propio almacenamiento para que tu producto nunca dependa de una URL de un tercero.
💡 Una predicción puede durar hasta 3 horas en el servidor. Tu interfaz debería rendirse mucho antes. Las ediciones suelen terminar en segundos, así que un tiempo de espera de 90 segundos en el cliente con un botón de reintento claro es suficiente.
Elige modelos que encajen
La API y el conector MCP exponen actualmente cuatro modelos. Dos importan para los retratos, y el resto de la plataforma te ayuda mientras haces prototipos en el navegador.
Aumenta la resolución para retratos de tamaño impreso
Web
Los tres últimos están en la aplicación web. Revisa la documentación de la API antes de conectarlos al código, porque la API pública expone hoy cuatro modelos.
El fondo merece una decisión propia, ya que cambia cómo se lee el retrato en un círculo de perfil. Una asignación sencilla da a tus usuarios un valor predeterminado razonable:
Caso de uso
Fondo
Por qué funciona
LinkedIn y solicitudes de empleo
Gris neutro
Sobrio, se lee bien en miniatura
Directorio de empresa
Blanco
Idéntico en todo el equipo
Portafolio y trabajo creativo
Gris carbón
Añade profundidad sin distraer
Ventas e inmobiliaria
Oficina desenfocada
Resulta cercano y local
Editor o texto a imagen
Un cliente quiere parecerse a sí mismo, solo que con mejor luz y mejor ropa. El texto a imagen inventa una persona nueva, que es el producto equivocado. Un modelo de edición mantiene el rostro del selfi y cambia todo lo demás, así que PicassoIA Image Editor Pro es el caballo de batalla. Usa PicassoIA Image para las imágenes que necesite tu propio marketing: muestras para la página de inicio, datos de prueba y fondos de oficina vacíos.
Limpieza después de la edición
Dos pasos pequeños mejoran el resultado. Bria Remove Background da a los clientes un recorte transparente que pueden colocar sobre el color de su empresa. Topaz Image Upscale lleva un retrato de tamaño web hacia una resolución de impresión. Ofrécelos como extras opcionales una vez que el resultado principal se vea bien.
Sube el selfi como primera imagen de referencia. El modelo acepta hasta tres, y la primera es la principal.
Escribe la instrucción y menciona el selfi como imagen 1.
Elige la relación de aspecto, el formato de salida y la calidad.
Genera, compara las dos variaciones si pediste dos y descarga la mejor.
¿Quieres cero prompts? Professional Headshot acepta una sola foto y una elección de fondo: blanco, negro, neutro, gris u oficina. También ofrece 14 preajustes de relación de aspecto, un ajuste de género para mayor precisión facial, una semilla para resultados repetibles y salida en PNG o JPG. Es la forma más rápida de ver cómo queda cada fondo antes de crear tu propio selector.
Ajustes que importan
Parámetro
Qué hace
Valor predeterminado sensato
images
Hasta 3 referencias, la primera es la principal
Selfi primero
prompt
La edición, que menciona image 1, image 2
Menos de 4.000 caracteres
aspect_ratio
Forma de salida
match_input_image
output_format
WebP, JPG o PNG
PNG para entregar
output_quality
De 0 a 100, solo JPG y WebP
95
num_outputs
1 o 2 variaciones por llamada
2 para tener un botón de reintento
seed
Repite un resultado exactamente
Guárdalo con el trabajo
Un prompt que funciona
Pon primero la identidad y después la escena. Nombra la vestimenta, el fondo y la luz para que el modelo no tenga nada que adivinar:
Turn image 1 into a professional corporate headshot of the same person.
Keep the face, skin tone, hair and expression natural and unchanged.
Dark navy blazer over a white shirt, seamless soft grey studio backdrop,
soft main light from the left, gentle fill from the right, 85mm portrait
lens look, natural skin texture with visible pores, sharp eyes.
Evita peticiones vagas como "hazme ver increíble". Invitan a suavizar, y la piel suavizada es el camino más rápido a un resultado de plástico, obviamente falso.
Código funcional en Python
Los fragmentos siguientes siguen la forma de estilo Replicate descrita arriba. La documentación oficial en picassoia.com/en/api incluye ejemplos en Python, Node y cURL, así que confirma allí los nombres de los campos antes de publicar.
La función principal
import os
import time
import requests
BASE = "https://api.picassoia.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PICASSOIA_TOKEN']}"}
MODEL = "picassoia/picassoia-image-editor-pro"
def make_headshot(selfie_url: str, backdrop: str = "soft grey studio backdrop") -> str:
prompt = (
"Turn image 1 into a professional corporate headshot of the same person. "
"Keep the face, skin tone and hair natural and unchanged. "
f"Dark navy blazer, {backdrop}, soft main light from the left, "
"85mm portrait lens look, natural skin texture."
)
created = requests.post(
f"{BASE}/models/{MODEL}/predictions",
headers=HEADERS,
json={"input": {
"images": [selfie_url],
"prompt": prompt,
"output_format": "png",
}},
timeout=30,
)
created.raise_for_status()
prediction = created.json()
deadline = time.time() + 90
while prediction["status"] not in ("succeeded", "failed", "canceled"):
if time.time() > deadline:
requests.post(f"{BASE}/predictions/{prediction['id']}/cancel", headers=HEADERS, timeout=30)
raise TimeoutError("Headshot took too long")
time.sleep(3)
prediction = requests.get(
f"{BASE}/predictions/{prediction['id']}", headers=HEADERS, timeout=30
).json()
if prediction["status"] != "succeeded":
raise RuntimeError(prediction.get("error") or prediction["status"])
return prediction["output"][0]
El token viene de una variable de entorno, nunca del frontend. Si va dentro de un paquete de app móvil o de un script del navegador, cualquiera puede leerlo.
Respeta el límite de cinco trabajos
Una cuenta ejecuta 5 predicciones a la vez, compartidas entre todas las credenciales y todas las conexiones MCP. Un pico el día del lanzamiento chocará con ese límite, así que pon los trabajos en cola de tu lado:
import asyncio
slots = asyncio.Semaphore(4) # leave one slot for retries
async def run_job(selfie_url: str) -> str:
async with slots:
return await asyncio.to_thread(make_headshot, selfie_url)
Guarda cada trabajo en una tabla con su estado y, después, muestra a los clientes su lugar en la cola. Una cola visible parece rápida. Un indicador de carga congelado parece roto.
Controles de calidad antes de entregar
Un retrato que parece correcto en un 95 por ciento sigue siendo una solicitud de reembolso. La gente nota los rostros con una sensibilidad casi sobrenatural, así que revisa cada resultado antes de que llegue a un cliente.
Parecido y piel
Repasa esta lista con un conjunto de prueba de cincuenta selfis antes de lanzar:
La forma del rostro y el color de los ojos coinciden con el selfi
La piel conserva sus poros, las líneas finas y el tono, sin un desenfoque céreo
Los bordes del cabello están limpios, sin un halo contra el fondo
Los dientes, las orejas y las gafas tienen el número correcto y simetría
Las joyas y los cuellos no se funden con el cuello
El fondo es lo bastante liso para una miniatura de foto de perfil
Mira el resultado en tamaño miniatura y en tamaño completo. Muchos defectos solo aparecen en uno de los dos.
Crea el conjunto de prueba a propósito. Incluye habitaciones con poca luz, gafas, barbas, pelo largo, sombreros y personas fotografiadas desde ligeramente abajo. Registra la semilla y el prompt de cada ejecución para que, cuando un cliente informe de un retrato extraño, puedas reproducirlo en un minuto y corregir la instrucción en lugar de adivinar.
Filtrado automático
Los modelos de lenguaje ayudan de dos formas. Primero, pueden convertir las opciones del formulario (fondo, atuendo, ambiente) en la instrucción final, para que el equipo de producto pueda editar la redacción sin desplegar una nueva versión. Gemini 3.5 Flash es una opción rápida para ese trabajo, y Claude Sonnet 5 encaja con reglamentos internos más largos. Segundo, Llama Guard 4 12B puede revisar el texto libre que los usuarios escriben en los campos de instrucción personalizada.
La API pública expone cuatro modelos, así que para estos pasos llama a tu propio proveedor de LLM o prueba antes los prompts en la aplicación web de PicassoIA.
Mantén también una alternativa humana. Da a cada resultado un botón Intentar de nuevo que ejecute el mismo selfi con una semilla nueva, y un enlace Reportar que permita a un cliente marcar un retrato malo.
Reglas de consentimiento y privacidad
Un rostro es un dato personal. Trátalo así desde el primer día, porque una app de retratos que maneja mal las fotos no tiene una segunda oportunidad.
Consentimiento y almacenamiento
Pide a los usuarios que confirmen que la foto les muestra a ellos o a alguien que lo haya aceptado
Borra el selfi original en cuanto se entregue el retrato final
Nunca reutilices fotos de clientes para muestras o marketing sin permiso por escrito
Marca el resultado como generado con IA dentro de tu app, ya que a algunas plataformas y empleadores les importa
Publica una página de privacidad en lenguaje sencillo que indique cuánto tiempo se conservan los archivos
Límites con los que planificar
Límite
Valor
Qué hacer
Predicciones simultáneas
5 por cuenta
Pon los trabajos en cola y limita los workers a 4
Cuerpo de la petición
10 MB
Redimensiona los selfis grandes en el navegador
Longitud del prompt
4.000 caracteres
Limita tu generador de instrucciones
Tiempo de espera de la predicción
3 horas
Cancela tú mismo los trabajos obsoletos
Credenciales de API
2 por cuenta
Una para producción, otra para pruebas
💡 Comprueba los precios antes de prometer un precio. La página de la API describe las predicciones como gratuitas por ahora, mientras que la página de precios incluye el acceso a la API en los planes Pro+, Elite e Infinite. Lee ambas antes de decidir lo que pagarán tus clientes.
Haz tu primer retrato hoy
Sáltate los documentos de planificación. Abre PicassoIA Image Editor Pro, sube un selfi y prueba tres versiones del prompt de arriba: un fondo gris, un fondo blanco y un fondo de oficina. Elige la ganadora, copia su redacción en la función de Python y tendrás la base de un producto que funciona.
A partir de ahí, añade una pantalla de subida, una cola, un botón de reintento y una casilla de consentimiento. Esa es toda la lista. Crea tus propias imágenes con Picasso IA, ajusta los prompts hasta que los retratos parezcan fotografías reales y lanza la primera versión esta semana. A tus clientes les importará mucho más un resultado limpio y rápido que cualquier función que puedas añadir después.