Use spicyapi/image-upscaler-v1/upscale para aumentar uma imagem já pronta. Escolha 2k, 4k ou 8k pelos pixels que o recorte final precisa: os níveis são orçamentos de pixels de cerca de 4, 17 e 67 megapixels, não tamanhos fixos de lado longo. Os três custam $0.012 por imagem de saída (1000 imagens custam $12), em JPEG, PNG ou WebP. Teste primeiro no Playground, depois rode o exemplo curto em Python ou passe para um Agent.
Escolha o nível pelo recorte final
O Image Upscaler mantém a proporção da tela da fonte. Um retrato 1024×1536 retorna:
| Solicitação | Orçamento de pixels | Tamanho retornado | Preço |
|---|---|---|---|
2k | cerca de 4 MP | 1672×2508 | $0.012/imagem |
4k (padrão) | cerca de 17 MP | 3344×5017 | $0.012/imagem |
8k | cerca de 67 MP | 6689×10033 | $0.012/imagem |
Outra proporção da tela dá outras dimensões. Se você pensa em "2×" ou "4×", a ampliação linear é a raiz quadrada do orçamento dividida pelos megapixels da fonte:
| Fonte | 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 foto de celular) | 0.6× (reduz) | 1.2× | 2.4× |
Um nível abaixo da contagem de pixels da fonte reduz: uma entrada de 3344×5017 enviada em 2k retorna 1672×2509. Se a fonte já atende ao destino, exporte normalmente; este endpoint não tem modo de nitidez no tamanho original.
Para um card web exibido com 600 pixels de largura em densidade 2×, você precisa de 1200 pixels no recorte final. Se esse recorte mantiver metade da largura da fonte, o master precisa de 2400 pixels de largura. O retrato de 1672 pixels em 2k fica curto; 4k cobre.
Para impressão, multiplique as polegadas pela densidade que sua impressora pedir. Uma imagem de 10×15 polegadas a 300 pixels por polegada precisa de 3000×4500 pixels, e o retrato 4k cobre isso sem corte. Alterar metadados de densidade não acrescenta pixels, e um recorte mais apertado exige um novo cálculo.
Escolha 8k apenas quando o recorte precisar dele. O preço é o mesmo, mas 67 megapixels são cerca de 268 MB de dados de pixel brutos de quatro canais, o que pesa na memória de edição, e o JPEG baixado chega a cerca de 8 MB nesse nível.
Prepare uma fonte limpa
Termine primeiro a remoção de objetos, o recorte e outras edições, e parta do melhor original, não de uma miniatura de site. A entrada é um JPEG, PNG ou WebP de no máximo 10 MB, então um master de impressão grande pode precisar de exportação antes do envio. Para um catálogo fictício de papelaria, use uma fotografia aprovada de uma caneta-tinteiro e sua caixa, e mantenha uma referência separada para o nome gravado exato: a ampliação pode transformar marcas ambíguas em letras confiáveis e erradas.
Escolha output_format pelo que vem depois. jpeg (padrão) é o menor; PNG é sem perdas, mas várias vezes maior em 8k; WebP fica no meio. PNG não torna verdadeiro um detalhe reconstruído. Não há prompt, largura/altura exata, intensidade de restauração facial nem seed.

Ilustração das regiões de inspeção, não um resultado de ampliação.
Teste primeiro no Playground
- Abra a página do Image Upscaler e fique na aba Playground, na visão Form. Entre com uma conta com saldo para executar.
- Solte sua imagem em Input image (JPG, PNG ou WEBP, até 10 MB), ou cole um link com Asset URL.
- Defina Resolution como 2K, 4K ou 8K e Output format como JPEG, PNG ou WebP.
- Execute e depois verifique o resultado no tamanho final de card ou de impressão.
Teste aqui sua melhor fonte antes de escrever código. O corpo da requisição no Playground é o mesmo JSON que a API aceita, então uma configuração que funciona aqui vai direto para o código.
Depois chame pelo código
Instale o SDK Python (pip install spicyapi), defina SPICY_API_KEY no seu ambiente e execute:
Instale o Pillow (python -m pip install Pillow) para a validação de download deste exemplo. O arquivo de saída original só é substituído depois que o novo JPEG decodifica com sucesso.
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)Uma execução leva cerca de 45 segundos. Troque de nível ou de formato alterando resolution e output_format. Uploads, espera, novas tentativas e erros estão no guia de tarefas e na referência do SDK Python. Os links de resultado duram cerca de 20 minutos e os arquivos gerados são apagados em no máximo 14 dias, então copie o resultado para o seu próprio armazenamento.
Ou deixe um Agent executar
Quando um assistente deve ampliar suas imagens, as três ferramentas oficiais mostram o preço e pedem confirmação antes de uma chamada paga.
- CLI.
spicyapiexecuta uma tarefa a partir de um terminal (npx @spicyapi/clifunciona sem instalação). Coloque{"image_url": "spicy://...", "resolution": "4k"}eminput.json, usando o URI que o upload imprime:
``bash spicyapi files upload ./fountain-pen-master.png spicyapi tasks create --model spicyapi/image-upscaler-v1/upscale --input-file input.json --wait ``
- Servidor MCP. Adicione o servidor MCP ao seu assistente e então pergunte: "Upscale ./fountain-pen-master.png to 4K with Image Upscaler." Ele chama
spicyapi_upload_file, depoisspicyapi_task_create, que para para sua confirmação de preço, depoisspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstala o Agent Skill, que faz um assistente de programação ler o esquema do modelo ao vivo em vez de adivinhar campos. Ele não executa tarefas sozinho, então use-o com a CLI ou o MCP.
Decida se os pixels extras servem
Verifique o resultado no layout final de card ou de impressão e depois em tamanho cheio na ponta, na gravação e nas bordas da caixa: os pixels extras servem a esse uso mantendo o produto fiel?
| Sintoma | Próximo passo |
|---|---|
| A saída é menor que a fonte | Compare os pixels da fonte com o orçamento do nível; suba um nível só se o destino precisar de ampliação. |
| As letras gravadas parecem nítidas, mas erradas | Substitua a fonte por uma fotografia mais nítida ou por arte aprovada; um nível maior não consegue verificar letras ausentes. |
| Contornos claros aparecem em bordas escuras | Compare com o original enviado. Se a própria nitidez dele criou o contorno, exporte uma fonte mais limpa antes de tentar de novo. |
| O rosto parece polido, mas diferente | Compare olhos, expressão e linha do cabelo com o original; rejeite esse candidato em vez de aprovar só a nitidez. |
| A página baixa uma imagem enorme | Mantenha o master aprovado e exporte um derivado comum menor para o espaço exibido. |
| A API rejeita um campo extra | Remova scale, face_restore, width e controles parecidos; este endpoint não tem nenhum. |

Ilustração de detalhes do rosto para comparar, não detalhe facial recuperado.
Para retratos fictícios de adultos, o SpicyAPI não roda nenhum verificador de segurança nesta ferramenta, então o consentimento e as obrigações legais continuam com você. Entradas NSFW moderadas e avançadas são ampliadas normalmente; rode uma amostra do seu próprio material antes de um lote.
Se o master está bom, mas um card pequeno perde a gravação, ajuste esse derivado ou reduza o zoom; outra passagem de IA não é a primeira solução. Se você precisa de um enquadramento mais largo em vez de mais pixels, veja a expansão para uma nova proporção da tela; para clipes, veja a ampliação de vídeo.






