/api/v1/generate/image-upscaleUpscale 4K
Upscale 4K (ampliação de resolução): recebe a URL de uma imagem e devolve a mesma
imagem ampliada em 2x ou 4x, preservando detalhes e nitidez.
Responde 202 Accepted com um taskId. Acompanhe o resultado
por polling em GET /api/v1/tasks/:id ou via webhook.
Escopo necessário: generate:image.
Body
| Campo | Tipo | Obrigatório | Valores / restrições | Padrão |
|---|---|---|---|---|
imageUrl | string | sim | URL HTTPS pública da imagem (≤10 MB) | — |
scale | string | não | 2x, 4x | 4x |
callbackUrl | string | não | HTTPS, host não-privado | — |
A imageUrl passa por validação contra hosts privados (HTTPS, host não-privado,
≤10 MB). Não há prompt de usuário.
scale: aceita 2x ou 4x. Valores fora da lista retornam
400 VALIDATION_ERROR com os valores aceitos.
Aspect ratio: derivado automaticamente das dimensões da imagem (encaixe no ratio suportado mais próximo). A proporção nativa é preservada na ampliação.
Exemplo de request
curl -X POST https://avatrix.io/api/v1/generate/image-upscale \
-H "Authorization: Bearer av_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9f1c-upscale-001" \
-d '{
"imageUrl": "https://storage.avatrix.io/assets/image-43ecc11a-e0a6-4d5f-0876-1f09a9080b5e.jpg",
"scale": "4x"
}'Resposta — 202
{
"success": true,
"data": { "taskId": "...", "status": "queued" }
}O status: "queued" é só o rótulo de criação. No polling
(GET /api/v1/tasks/:id) a task evolui por pending → processing →
completed (com resultUrl) ou failed. Ver
Ciclo de vida da task.
Exemplo de erro
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Campo 'scale' inválido. Valores aceitos: 2x, 4x."
}
}Idempotência
Envie o header Idempotency-Key (opcional, ≤128 chars, TTL 24h). Repetir a mesma chave
retorna a resposta original sem novo débito. A concorrência é limitada a 20
tasks simultâneas por usuário. Ver Idempotência.
Custo
Valor fixo por escala: há um preço para 2x e outro para 4x.
Erros relevantes
| Código | HTTP | Quando |
|---|---|---|
VALIDATION_ERROR | 400 | campo obrigatório ausente, URL não-HTTPS, scale inválido |
INSUFFICIENT_CREDITS | 402 | saldo insuficiente |
FORBIDDEN | 403 | token sem generate:image |
MAX_CONCURRENT_TASKS / RATE_LIMITED | 429 | 20 tasks simultâneas ou rate limit |
INTERNAL_ERROR | 500 | erro interno ao processar a cobrança |
GENERATION_FAILED | 502 | falha do provider |
PROVIDER_UNAVAILABLE | 503 | provider indisponível |