Documentacao da API

Converta imagens por codigo.

Use a mesma API da interface web em scripts, pipelines e automacoes. Envie JSON com imageBase64 ou multipart com arquivo direto.

Visao geral

A API processa a imagem em memoria durante a requisicao. Use POST /api/v1/convert quando quiser receber o arquivo convertido e POST /api/v1/preview quando quiser calcular o tamanho final antes de decidir baixar.

Para automacoes, Insomnia e integrações backend, prefira application/json com a imagem em imageBase64. Os endpoints tambem aceitam multipart/form-data com o campo image.

Endpoints

POST /api/v1/convert download binario

Converte a imagem e retorna o arquivo final no corpo da resposta. O nome sugerido segue o padrao nome-original-convertida.ext.

curl -X POST https://bytepress.pedrovs.dev/api/v1/convert \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  --data '{
    "imageBase64": "...",
    "filename": "foto.png",
    "format": "webp",
    "quality": 20
  }' \
  --output foto.webp
POST /api/v1/preview json de simulacao

Converte a imagem em memoria e retorna os tamanhos em bytes. Use para automacoes que precisam escolher qualidade ou formato antes do download.

curl -X POST https://bytepress.pedrovs.dev/api/v1/preview \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  --data '{
    "imageBase64": "...",
    "filename": "foto.png",
    "format": "webp",
    "quality": 20
  }'

Parametros

Campo
Obrigatorio
Descricao
imageBase64
Sim no JSON
Imagem codificada em base64. Aceita base64 puro ou data URL. A imagem decodificada tem limite de 32 MB e 40 megapixels.
filename
Nao
Nome original usado para sugerir o nome do arquivo convertido. Exemplo: foto.png.
image
Sim no multipart
Arquivo de imagem em PNG, JPEG, GIF ou WebP quando usar multipart/form-data.
format
Nao
Formato de saida: webp, jpeg, jpg, png ou gif. Padrao: webp.
quality
Nao
Numero de 1 a 100. Padrao: 80. Valores menores reduzem bytes e podem perder mais detalhe.

JSON em base64 aumenta o tamanho do corpo da requisicao em aproximadamente 33%. O limite continua sendo calculado sobre a imagem decodificada.

Respostas

/api/v1/convert
Descricao
Status
200 OK com o arquivo convertido no corpo da resposta.
Headers
Content-Type, Content-Disposition, X-Original-Size e X-Converted-Size.
HTTP/1.1 200 OK
Content-Type: image/webp
Content-Disposition: attachment; filename="foto-convertida.webp"
X-Original-Size: 124305
X-Converted-Size: 42118
/api/v1/preview
Descricao
Status
200 OK com application/json.
Campos
originalSize, convertedSize, savedBytes, savedPercent e format.
{
  "originalSize": 124305,
  "convertedSize": 42118,
  "savedBytes": 82187,
  "savedPercent": 66.1,
  "format": "webp"
}

Exemplos

JavaScript com fetch e JSON para baixar o arquivo convertido:

function arrayBufferToBase64(buffer) {
  const bytes = new Uint8Array(buffer);
  let binary = "";
  for (let i = 0; i < bytes.length; i += 8192) {
    binary += String.fromCharCode(...bytes.subarray(i, i + 8192));
  }
  return btoa(binary);
}

const imageBase64 = arrayBufferToBase64(await file.arrayBuffer());

const response = await fetch("https://bytepress.pedrovs.dev/api/v1/convert", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_live_xxx",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    imageBase64,
    filename: file.name,
    format: "webp",
    quality: 20
  })
});

if (!response.ok) {
  throw new Error(await response.text());
}

const blob = await response.blob();

Automacao em shell com JSON para converter uma imagem:

base64_image="$(base64 -i foto.png | tr -d '\n')"

curl -sS -X POST https://bytepress.pedrovs.dev/api/v1/convert \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  --data "{
    \"imageBase64\":\"${base64_image}\",
    \"filename\":\"foto.png\",
    \"format\":\"webp\",
    \"quality\":20
  }" \
  --output foto.webp

Multipart continua disponivel para scripts que preferem envio de arquivo direto:

for image in *.png; do
  name="${image%.*}"
  curl -sS -X POST https://bytepress.pedrovs.dev/api/v1/convert \
    -H "Authorization: Bearer sk_live_xxx" \
    -F "image=@${image}" \
    -F "format=webp" \
    -F "quality=75" \
    --output "${name}.webp"
done

Erros

  • 400 Bad Request quando o arquivo falta, passa do limite ou tem formato invalido.
  • 401 Unauthorized quando a API key falta, e invalida ou esta inativa.
  • 402 Payment Required quando o limite mensal do plano foi excedido.
  • 405 Method Not Allowed quando o metodo nao e POST.

A API usa sempre API key, quota e plano ativo.