Introducción
Traslada los rasgos faciales de una imagen a la persona de otra. Solo viajan los rasgos: el peinado, el nacimiento del pelo, la silueta de la cabeza, la pose, la ropa, la luz y el fondo del destino quedan como estaban, y por eso el resultado se integra en la foto original en lugar de quedar pegado encima.
Face Swap Pro es el nivel de precisión de la línea Face Swap. El motor localiza por sí mismo los puntos clave del rostro en ambas fotos y proyecta un conjunto sobre el otro, y después no se aplica nada más sobre el resultado. Toda la solicitud son dos URL de imagen —image_url para la foto que se modifica y reference_image_url para el rostro— enviadas a spicyapi/face-swap-pro-v1/edit. La llamada es asíncrona: devuelve un id de tarea, consultas esa tarea y cada solicitud devuelve una imagen, que se factura por imagen de salida.
Funciones y aspectos destacados
El motor proyecta el rostro por sus puntos clave
Pro está hecho para trabajo de precisión. En lugar de copiar una zona, localiza los puntos clave del rostro en ambas fotos y proyecta un conjunto sobre el otro, y así ojos, nariz y boca caen donde los pone la geometría del rostro de destino. En este endpoint la detección es automática: envías dos imágenes y nada más. Tampoco hay un paso de mejora posterior, así que poros, líneas finas y grano se conservan y el rostro tiene la misma nitidez que todo lo demás. Por eso un resultado puede verse menos favorecedor que un intercambio con filtro: precisión y halago no son el mismo objetivo.
Dos URL de imagen y nada más que pueda fallar
Es el único endpoint de face swap de este catálogo que solo recibe las dos imágenes: no hay prompt que redactar, ni zona que pintar, ni intensidad que ajustar, ni seed que fijar. Eso elimina toda la clase de errores que nacen de una instrucción ambigua y hace el endpoint trivial de procesar por lotes, porque una lista de pares pasa sin decidir nada elemento por elemento. Las claves desconocidas se rechazan en vez de ignorarse, así que un nombre de campo mal escrito falla al enviar en lugar de caer en silencio a un valor por defecto. Lo único que sí importa es qué URL va en cada campo: no son simétricos, y si los inviertes la solicitud sigue siendo válida pero el resultado es otro por completo.
La foto de destino sobrevive al intercambio
| Viene de la referencia | Se queda con el destino |
|---|---|
| Ojos, nariz, boca, cejas | Peinado, nacimiento del pelo, silueta de la cabeza |
| Las proporciones del propio rostro | Pose, mirada, cuerpo, ropa |
| El detalle de la piel dentro del rostro | Fondo, encuadre, luz, grano |
Aquí no hay relación de aspecto ni resolución, porque la imagen no se regenera: se sustituye una zona de una foto que ya existe. Por eso el endpoint sirve sobre una toma que ya aprobaste: nada fuera del rostro vuelve a quedar en juego.
Parámetros de la solicitud
| Parámetro | Obligatorio | Descripción |
|---|---|---|
image_url | Sí | La imagen que cambia. mínimo 1 caracteres |
reference_image_url | Sí | La imagen que aporta los rasgos faciales. Solo se toma el rostro, no la forma de la cabeza ni el pelo, así que su propio encuadre, fondo y vestuario se ignoran. mínimo 1 caracteres |
face_enhance | No | Aplica una pasada de mejora facial al rostro intercambiado para darle más resolución. Desactivado por defecto. Valor predeterminado: |
Precios
$0.16 / imagen
Casos de uso
Imágenes editoriales y de campaña que se van a imprimir
Un rostro alisado se desmorona a tamaño de impresión: la piel parece plástico junto a una prenda y un fondo nítidos. Conservar la textura original hace que la imagen aguante cuando alguien la mira de cerca y no en miniatura.
Cambiar a la persona de una toma ya aprobada
La luz, la pose y el set ya funcionan, y regenerar toda la imagen volvería a poner todo eso en juego. Lleva un solo rostro a la toma y todo lo que aprobaste se queda exactamente donde estaba.
Personajes coherentes en una serie
Genera las escenas con cualquier modelo y luego lleva un mismo rostro a todas para que la serie se lea como la misma persona. El pelo y la ropa se quedan con cada imagen de destino, así que la variedad que generaste sobrevive a la pasada.
Imágenes sin censura, donde el límite es el consentimiento y no el tema
SpicyAPI no añade ningún filtro de contenido propio ni pide marcador de contenido, así que el cuerpo de la solicitud son siempre los mismos dos campos, sea lo que sea que muestre el fotograma. Lo que no se relaja es la autorización: hace falta el consentimiento explícito e informado de la persona representada para ese parecido concreto en ese material concreto, y el consentimiento nunca se presume porque una fotografía sea pública.
Guía de prompts y consejos prácticos
No hay prompt, así que el ajuste se hace antes de la llamada
En la mayoría de los endpoints de imagen reescribes una frase cuando un resultado decepciona. Aquí no: la solicitud son dos URL, así que las únicas variables son las fotos que envías. Eso hace fácil razonar cada iteración —cambias una imagen, mantienes la otra y sabes exactamente qué se movió—, pero también significa que un mal par no se salva con una instrucción mejor.
Elegir el destino y la referencia
image_url es la foto que se modifica; reference_image_url aporta el rostro. Ambas deben mostrar un solo rostro bien visible, más o menos de frente, enfocado y lo bastante grande en el cuadro para que los rasgos se lean, en JPEG, PNG o WebP. Recorta antes una foto de grupo hasta dejar a una sola persona. Lo más útil que controlas es la dirección de la luz: elige una referencia iluminada más o menos desde el mismo lado que el destino, porque el intercambio no cambia la luz del destino y un desajuste se nota como una costura en la mandíbula.
Cuando el resultado no es el que querías
| Lo que ves | Qué cambiar primero |
|---|---|
| Una costura en la mandíbula o el cuello | Usa una referencia iluminada desde la misma dirección |
| Los rasgos se ven blandos o aproximados | Usa una referencia con el rostro más grande y nítido |
| Cambió la persona equivocada | Recorta el destino hasta dejar a una sola persona |
| La solicitud falló por completo | Comprueba que ambas URL siguen devolviendo un archivo de imagen |
| Menos pulido que otra herramienta de intercambio | Es lo esperado: no hay retoque; aplícalo tú después |
Elegir el endpoint adecuado
| Lo que necesitas | Endpoint |
|---|---|
| Precisión en los puntos del rostro y la textura original, sin controles | Este endpoint |
| Ajuste de tono de piel y elección del formato de archivo | Face Swap Plus |
| El intercambio simple con seed, sin tocar nunca el pelo | Face Swap |
| La cabeza completa, con el pelo | Head Swap |
| Un rostro a lo largo de un clip en movimiento | Video Face Swap |
Ejecutarlo por lotes
Como no se decide nada elemento por elemento, un lote es un bucle sobre pares. Envía cada llamada de creación con un Idempotency-Key y guarda el id de tarea junto al registro que la originó; si se corta una conexión, repetir la solicitud con la misma clave devuelve la tarea original en lugar de iniciar una segunda con un segundo cobro. Consulta cada pocos segundos y copia cada resultado a tu propio almacenamiento: los archivos generados se eliminan a los 14 días y las imágenes de origen subidas, al día siguiente.
Inicio rápido de la API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "spicyapi/face-swap-pro-v1/edit",
"input": {
"image_url": "https://example.com/reference.png",
"reference_image_url": "https://example.com/reference.png"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Consulta la referencia de la API para autenticación, el esquema completo, sondeo y gestión de errores.









