Vetorizar imagens em lote com uma fila de API
Use uma API e uma fila persistente para vetorizar imagens em lote. Salve os IDs, trate falhas e retome um lote sem reenviar trabalhos concluídos.
Nesta página
Para vetorizar imagens em lote por API, coloque cada arquivo de origem em uma fila e salve seu progresso antes de passar ao próximo. Na API v1 do PerfectVector, seu processo é responsável pelo lote. Por padrão, a API aceita uma imagem por requisição e uma conversão em produção por vez em cada conta. Limites da API do PerfectVector
Crie um registro na fila para cada imagem
Comece com uma cópia estável de cada origem e uma pasta separada para a saída. Os exemplos usam um processo, um banco SQLite local e uma pasta com PNG, JPEG ou WebP de quadro único. Confira os limites de arquivo da API antes de incluir arquivos na fila. Dê a cada saída um caminho único para que dois arquivos logo.png não sobrescrevam seus resultados.
Salve os campos a seguir juntos antes de tentar o primeiro upload.
| Campo | O que guardar |
|---|---|
| Origem | Um caminho estável ou uma versão do objeto e um hash dos dados originais. |
| Chave de requisição | Uma chave de idempotência que identifica repetições da operação. Registre quando fez a primeira tentativa de POST. |
| ID de conversão | O ID vec_… da API, assim que chegar. |
| Saída | Um destino local exclusivo e o último estado confirmado na fila. |
| Detalhes da falha | O código de erro da API, o ID da requisição ou o erro da conversão, quando disponíveis. |
Confirme o registro no banco antes de enviar o POST. Se a API aceitar o upload e a conexão cair antes de você receber o ID, ainda haverá uma chave para reutilizar. O PerfectVector reconhece essa chave por 24 horas após a primeira requisição na mesma conta e modo. Mantenha os dados e as opções iguais ao repetir. Idempotência no PerfectVector

Envie, consulte e salve um trabalho por vez
Envie um POST multipart a /v1/vectorizations com a imagem no campo image e o cabeçalho Idempotency-Key do registro. Use Prefer: respond-async para um envio breve. Salve o ID de uma resposta bem-sucedida antes de consultar o status. A resposta 202 indica que a conversão está pendente. A resposta 201 pode indicar sucesso ou falha. Leia o status no JSON. Espera e requisições assíncronas no PerfectVector
Esta é a sequência de decisões do processo. Um estado da fila como saved é um rótulo seu. A API retorna status como processing e succeeded.
| Registro da fila em disco | Próxima ação do processo |
|---|---|
| Novo, com a chave salva | Envie os dados originais e registre o ID de conversão retornado. |
| Envio incerto, ID desconhecido | Repita o mesmo upload com a chave salva dentro do prazo. Se o prazo tiver passado, sinalize o registro para revisão antes de tentar uma nova conversão que possa ser cobrada. |
| ID de conversão salvo | Consulte o ID existente. Espere cerca de dois segundos entre consultas e respeite os intervalos impostos pelos limites de requisições. |
| Conversão concluída, arquivo ausente | Baixe o resultado, confira image/svg+xml, grave em um arquivo temporário e renomeie para o destino. Marque como salvo depois de renomear. |
| Salvo | Pule o POST. Se a saída sumir, tente baixar o resultado existente enquanto o link estiver válido. |
| Rejeitado ou com falha | Registre o problema HTTP ou o erro final da conversão. Corrija uma entrada inválida antes de enviá-la como nova operação. |
Se o POST retornar 429 ou 503, respeite Retry-After e reenvie a mesma imagem com as mesmas opções e a chave original dentro das 24 horas. Em caso de too_many_in_flight, espere também a conversão em produção terminar. Se você tem um ID, consulte-o antes de reenviar. Uma conversão com estado final confirmado failed e erro timeout ou provider_unavailable exige outra chave se você decidir tentar de novo. Quando o prestador estiver indisponível, espere o serviço voltar. Se o cliente atingir o tempo limite, o resultado original será incerto. Use o ID ou repita a requisição com a chave original dentro do prazo. Erros da API do PerfectVector
Após reiniciar, o processo pode consultar o status ou baixar o resultado outra vez sem iniciar uma conversão. Baixe e guarde cada SVG bem-sucedido antes de avançar na fila. O resultado da API expira 24 horas após a conclusão. Resultados e downloads do PerfectVector
Use o pseudocódigo com seu banco e cliente HTTP. O teste pressupõe que o processo registra cada requisição e pode pausar em modo de teste logo depois de confirmar o segundo ID de conversão.
for each queue row in a stable order:
if the row is rejected or its saved SVG is still on disk:
continue
if the row has no conversion ID:
verify source bytes match the stored digest
if an earlier POST is uncertain and the replay window expired:
flag the row for review and continue
POST with the stored key and original bytes and options
if the response is a permanent input rejection:
commit the error and continue
if the POST times out or the service requests a retry:
keep the same key, record the retry time and stop this run
commit the returned conversion ID
pause here when testing recovery after a commit
GET status by conversion ID, waiting between pending responses
if conversion failed:
commit its error and continue
download the existing result and check the SVG media type
write to a temporary file and rename it to the output path
commit the saved stateTeste o reinício com três arquivos
Use dois logos pequenos em PNG e um PNG danificado. Inclua o danificado para verificar se a fila avança após a rejeição. Com a chave de teste, os dois arquivos válidos devem retornar SVGs de exemplo. O arquivo danificado deve falhar na validação e ficar fora da pasta de saída. O modo de teste retorna o mesmo SVG para os dois arquivos válidos. Modo de teste do PerfectVector
- Deixe o primeiro arquivo chegar a
saved. Pause o processo depois de gravar o ID do segundo arquivo válido e antes de salvar a saída. - Reinicie o processo. Confirme que ele pula o primeiro arquivo e baixa o segundo com o ID de conversão existente.
- Confirme que o arquivo danificado aparece no relatório com seu código de erro e que nenhum SVG foi gravado para ele.
- Execute o processo outra vez. Confirme que os dois arquivos continuam salvos e que nenhum envio bem-sucedido foi repetido.
Rodamos o teste de reinício com uma chave de teste da API. O processo salvou dois SVGs de exemplo, registrou a rejeição de um arquivo danificado e retomou a segunda conversão bem-sucedida com o ID existente. A última execução não fez requisições. Use uma resposta simulada localmente para testar a condição pendente, pois as conversões de teste terminam na hora.
Perguntas frequentes
Posso enviar todos os arquivos em uma chamada à API?
A API v1 do PerfectVector aceita uma imagem por POST. Envie um lote como uma série de requisições separadas. Em produção, respeite o limite da conta e espere a conversão atual terminar antes de enviar a próxima. Limites da API do PerfectVector
E se o SVG já tiver expirado?
Use a cópia que salvou se já tiver baixado. Caso contrário, confira o status e decida se deve iniciar outra operação. Uma nova conversão em produção pode usar outro crédito se terminar com sucesso. Resultados e downloads do PerfectVector
Fontes
- PerfectVector — Limites — Validação de arquivos e limite padrão de simultaneidade por conta.
- PerfectVector — Idempotência — Escopo da chave, prazo de repetição e dados idênticos.
- PerfectVector — Espera e requisições assíncronas — Envio assíncrono e consultas de status.
- PerfectVector — Resultados — Download, falhas e expiração do resultado.
- PerfectVector — Modo de teste — Validações de upload e resultados verificáveis com a chave de teste.
- PerfectVector — Erros — Intervalos de Retry-After, falhas definitivas e uso de uma nova chave.
Obtenha uma chave de teste pela página da API do PerfectVector e faça um teste com três arquivos seus. Confira se cada registro bem-sucedido tem um SVG em disco e se o reinício não reenvia trabalhos concluídos.
Mais do blog
Conversão em lote PNG2SVG: confira o ZIP baixado
Siga uma conversão PNG2SVG de dois arquivos, baixe o SVG ZIP e verifique os nomes dos arquivos e o conteúdo real do caminho antes de confiar em um lote maior de sua própria arte.
Como converter uma pasta em SVGs com o Claude Code
Planeje a conversão de uma pasta no Claude Code com o PerfectVector MCP. Dê a cada SVG um caminho único e use uma verificação local para achar arquivos ausentes.


