POST/api/v1/generate/image-edit

Editar imagem

Bearer tokenescopo generate:image

Edição de imagem (inpainting): regenera apenas a região marcada por uma máscara P&B, preservando o restante. 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

CampoTipoObrigatórioValores / restrições
imageUrlstringsimURL HTTPS pública da imagem original (≤10 MB)
maskUrlstringsimURL HTTPS da máscara P&B (branco = região a regerar; preto = preservar); mesmas dimensões da original
promptstringsimDescrição do que preencher na área branca (combinado automaticamente com um template de inpainting)
referenceImagestringnãoURL HTTPS de imagem de contexto/estilo
callbackUrlstringnãoHTTPS, host não-privado

Todas precisam ser públicas, sob HTTPS e ter no máximo 10 MB.

Exemplo de request

cURL
curl -X POST https://avatrix.io/api/v1/generate/image-edit \
  -H "Authorization: Bearer av_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9f1c-edit-001" \
  -d '{
    "imageUrl": "https://storage.avatrix.io/assets/image-43ecc11a-e0a6-4d5f-9850-1f09a9080b5e.png.jpg",
    "maskUrl": "https://storage.avatrix.io/assets/image-b0cc1898-ce9f-46c8-a999-2e2a4870b6d4.png",
    "prompt": "Adicione uma tatuagem floral colorida com uma borboleta grande no centro. A tatuagem ocupa toda a área e aparece por baixo da roupa e do braço da mulher."
  }'

Resposta — 202

JSON
{
  "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 pendingprocessingcompleted (com resultUrl) ou failed. Ver Ciclo de vida da task.

Exemplo de erro

JSON
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Não foi possível detectar as dimensões da imagem em 'imageUrl'. Verifique se é uma imagem válida e acessível."
  }
}

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

Cobrança por resolução da imagem original. O aspect ratio e os megapixels são derivados automaticamente das dimensões da imageUrl; se não puderem ser obtidas, a requisição retorna 400 VALIDATION_ERROR.

Erros relevantes

CódigoHTTPQuando
VALIDATION_ERROR400campos obrigatórios ausentes, URL não-HTTPS, dimensões indetectáveis
INSUFFICIENT_CREDITS402saldo insuficiente
FORBIDDEN403token sem generate:image
MAX_CONCURRENT_TASKS / RATE_LIMITED42920 tasks simultâneas ou rate limit
INTERNAL_ERROR500erro interno ao processar a cobrança
GENERATION_FAILED502falha do provider
PROVIDER_UNAVAILABLE503provider indisponível