/api/v1/generate/image-editEditar imagem
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
| Campo | Tipo | Obrigatório | Valores / restrições |
|---|---|---|---|
imageUrl | string | sim | URL HTTPS pública da imagem original (≤10 MB) |
maskUrl | string | sim | URL HTTPS da máscara P&B (branco = região a regerar; preto = preservar); mesmas dimensões da original |
prompt | string | sim | Descrição do que preencher na área branca (combinado automaticamente com um template de inpainting) |
referenceImage | string | não | URL HTTPS de imagem de contexto/estilo |
callbackUrl | string | não | HTTPS, host não-privado |
Todas precisam ser públicas, sob HTTPS e ter no máximo 10 MB.
Exemplo de request
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
{
"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": "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ódigo | HTTP | Quando |
|---|---|---|
VALIDATION_ERROR | 400 | campos obrigatórios ausentes, URL não-HTTPS, dimensões indetectáveis |
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 |