Use spicyapi/image-upscaler-v1/upscale para ampliar una imagen ya terminada. Elija 2k, 4k u 8k según los píxeles que necesite su recorte final: los niveles son presupuestos de píxeles de aproximadamente 4, 17 y 67 megapíxeles, no tamaños fijos de lado largo. Los tres cuestan $0.012 por imagen de salida (1000 imágenes son $12), en JPEG, PNG o WebP. Pruébelos primero en el Playground, luego ejecute el ejemplo corto en Python o entréguelo a un Agent.
Elija el nivel según el recorte final
El Image Upscaler mantiene la relación de aspecto de la fuente. Un retrato de 1024×1536 devuelve:
| Solicitud | Presupuesto de píxeles | Tamaño devuelto | Precio |
|---|---|---|---|
2k | unos 4 MP | 1672×2508 | $0.012/imagen |
4k (predeterminado) | unos 17 MP | 3344×5017 | $0.012/imagen |
8k | unos 67 MP | 6689×10033 | $0.012/imagen |
Otra relación de aspecto da otras dimensiones. Si piensa en "2×" o "4×", la ampliación lineal es la raíz cuadrada del presupuesto dividida por los megapíxeles de la fuente:
| Fuente | 2k | 4k | 8k |
|---|---|---|---|
| 1024×1536 (1.6 MP) | 1.6× | 3.3× | 6.5× |
| 1920×1080 (2.1 MP) | 1.4× | 2.8× | 5.7× |
| 4000×3000 (12 MP de foto de móvil) | 0.6× (reduce) | 1.2× | 2.4× |
Un nivel por debajo de la cantidad de píxeles de la fuente reduce: una entrada de 3344×5017 enviada a 2k devuelve 1672×2509. Si la fuente ya cumple el destino, expórtela normalmente; este endpoint no tiene modo de nitidez en el tamaño original.
Para una tarjeta web que se muestra con 600 píxeles de ancho a densidad 2×, necesita 1200 píxeles en el recorte final. Si ese recorte conserva la mitad del ancho de la fuente, el maestro necesita 2400 píxeles de ancho. El retrato de 1672 píxeles con 2k se queda corto; 4k lo cubre.
Para imprenta, multiplique las pulgadas por la densidad que pida su impresora. Una imagen de 10×15 pulgadas a 300 píxeles por pulgada necesita 3000×4500 píxeles, y el retrato 4k lo cubre sin recorte. Cambiar los metadatos de densidad no añade píxeles, y un recorte más ajustado requiere un cálculo nuevo.
Elija 8k solo cuando el recorte lo necesite. El precio es el mismo, pero 67 megapíxeles son unos 268 MB de datos de píxel crudos de cuatro canales, lo que cuenta para la memoria de edición, y el JPEG descargado llega a unos 8 MB en ese nivel.
Prepare una fuente limpia
Termine primero la eliminación de objetos, el recorte y otras ediciones, y parta del mejor original, no de una miniatura de un sitio web. La entrada es un JPEG, PNG o WebP de 10 MB como máximo, así que un maestro de impresión grande puede necesitar una exportación antes de enviarlo. Para un catálogo ficticio de papelería, use una fotografía aprobada de una pluma fuente y su estuche, y guarde una referencia aparte para el nombre grabado exacto: la ampliación puede convertir marcas ambiguas en letras seguras que son incorrectas.
Elija output_format según lo que ocurra después. jpeg (predeterminado) es el más pequeño; PNG es sin pérdida pero varias veces mayor en 8k; WebP queda en medio. PNG no convierte en cierto un detalle reconstruido. No hay prompt, ni ancho/alto exactos, ni intensidad de restauración facial, ni seed.

Ilustración de las zonas de inspección, no un resultado del aumento de resolución.
Pruébelo primero en el Playground
- Abra la página de Image Upscaler y quédese en la pestaña Playground, en la vista Form. Inicie sesión con una cuenta con saldo para ejecutar.
- Suelte su imagen en Input image (JPG, PNG o WEBP, hasta 10 MB), o pegue un enlace con Asset URL.
- Ponga Resolution en 2K, 4K u 8K y Output format en JPEG, PNG o WebP.
- Ejecútelo y compruebe el resultado en su tamaño final de tarjeta o de impresión.
Pruebe aquí su mejor fuente antes de escribir código. El cuerpo de la solicitud del Playground es el mismo JSON que acepta la API, así que una configuración que funciona aquí se copia tal cual al código.
Luego llámelo desde el código
Instale el SDK de Python (pip install spicyapi), defina SPICY_API_KEY en su entorno y ejecute:
Instale Pillow (python -m pip install Pillow) para la validación de descarga de este ejemplo. El archivo de salida original se reemplaza solo después de que el nuevo JPEG se decodifica correctamente.
import os
from pathlib import Path
import tempfile
import urllib.request
import uuid
from PIL import Image
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
source = client.upload_file("./fountain-pen-master.png") # local file becomes a spicy:// URI
task = client.create_task(
model="spicyapi/image-upscaler-v1/upscale",
input_data={"image_url": source["uri"], "resolution": "4k", "output_format": "jpeg"},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
print(f"Task ID: {task['taskId']}", flush=True)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
assets = [a for a in output_assets(final)
if a.get("url") and not a.get("pending") and not a.get("unavailable")]
if not assets:
raise RuntimeError(f"Task {task['taskId']} has no downloadable output yet")
request = urllib.request.Request(assets[0]["url"], headers={"User-Agent": "upscale-example/1.0"})
target = Path("upscaled.jpg")
temporary = None
try:
with tempfile.NamedTemporaryFile(dir=target.parent, suffix=".jpg", delete=False) as out:
temporary = Path(out.name)
with urllib.request.urlopen(request, timeout=60) as response:
out.write(response.read())
with Image.open(temporary) as image:
if image.format != "JPEG":
raise ValueError("Expected a JPEG output")
image.load() # reject unreadable or truncated data before replacing the keeper
os.replace(temporary, target)
finally:
if temporary is not None:
temporary.unlink(missing_ok=True)Una ejecución tarda unos 45 segundos. Cambie de nivel o de formato modificando resolution y output_format. Las subidas, la espera, los reintentos y los errores están cubiertos en la guía de tareas y en la referencia del SDK de Python. Los enlaces de resultado duran unos 20 minutos y los archivos generados se borran como máximo después de 14 días, así que copie el resultado a su propio almacenamiento.
O deje que un Agent lo ejecute
Cuando un asistente debe aumentar la resolución de sus imágenes, las tres herramientas oficiales muestran el precio y le preguntan antes de una llamada de pago.
- CLI.
spicyapiejecuta una tarea desde una terminal (npx @spicyapi/clifunciona sin instalarlo). Ponga{"image_url": "spicy://...", "resolution": "4k"}eninput.json, usando la URI que imprime la subida:
``bash spicyapi files upload ./fountain-pen-master.png spicyapi tasks create --model spicyapi/image-upscaler-v1/upscale --input-file input.json --wait ``
- Servidor MCP. Añada el servidor MCP a su asistente y luego pregunte: "Upscale ./fountain-pen-master.png to 4K with Image Upscaler." Llama a
spicyapi_upload_file, luego aspicyapi_task_create, que se detiene para su confirmación de precio, y luego aspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstala el Agent Skill, que hace que un asistente de código lea el esquema del modelo en vivo en lugar de adivinar campos. No puede ejecutar tareas por sí solo, así que úselo junto con la CLI o MCP.
Decida si los píxeles extra sirven
Compruebe el resultado en su diseño final de tarjeta o de impresión y luego a tamaño completo en la punta, el grabado y los bordes del estuche: ¿sirven los píxeles extra para ese uso mientras mantienen el producto fiel?
| Síntoma | Siguiente paso |
|---|---|
| La salida es más pequeña que la fuente | Compare los píxeles de la fuente con el presupuesto del nivel; suba un nivel solo si el destino necesita ampliación. |
| Las letras grabadas se ven nítidas pero equivocadas | Reemplace la fuente por una fotografía más nítida o por arte aprobado; un nivel mayor no puede verificar letras que faltan. |
| Aparecen contornos claros alrededor de bordes oscuros | Compare con el original enviado. Si su propia nitidez aplicada (sharpening) creó el contorno, exporte una fuente más limpia antes de reintentar. |
| La cara se ve retocada pero distinta | Compare ojos, expresión y línea del pelo con el original; rechace ese candidato en lugar de aprobar solo la nitidez. |
| La web descarga una imagen enorme | Conserve el maestro aprobado y exporte una derivación ordinaria más pequeña para el hueco mostrado. |
| La API rechaza un campo extra | Elimine scale, face_restore, width y controles similares; este endpoint no tiene ninguno. |

Ilustración de detalles de retrato para comparar, no detalle facial recuperado.
Para retratos ficticios de adultos, SpicyAPI no ejecuta ningún control de seguridad en esta herramienta, así que el consentimiento y las obligaciones legales siguen siendo suyos. Las entradas NSFW moderadas y avanzadas se amplían con normalidad; ejecute una muestra de su propio material antes de un lote.
Si el maestro está bien pero una tarjeta pequeña pierde el grabado, ajuste esa derivación o cambie el zoom; otra pasada de IA no es el primer arreglo. Si necesita un encuadre más ancho en lugar de más píxeles, vea outpainting hacia una nueva relación de aspecto; para clips, vea aumento de resolución de vídeo.






