API de JPEG a WebP#

Convierte imágenes JPEG a WebP mediante programación con POST /v1/convert/jpeg-to-webp. El endpoint acepta una carga .jpeg o .jpg y produce un WebP de alta calidad con un tamaño de archivo menor que el JPEG equivalente: un paso sencillo de optimización de imágenes para pipelines de entrega web. Las respuestas devuelven bytes de imagen sin procesar para descarga directa o metadatos JSON con una URL de descarga firmada.


Endpoint#

POST /v1/convert/jpeg-to-webp

Content-Type: multipart/form-data

Entrada aceptada: archivos .jpeg or .jpg

Formato de salida: .webp (image/webp)


Autenticación#

Requiere una clave de API privada o un token JWT de una clave pública.

X-API-Key: sk_your_private_key

O:

Authorization: Bearer <jwt_token>

Parámetros de solicitud#

Parámetro Tipo Obligatorio Valor predeterminado Descripción
file archivo -- El archivo de imagen .jpeg or .jpg a convertir.
output_filename string No Nombre del archivo de entrada Nombre de archivo de salida personalizado. La extensión .webp se añade automáticamente.
direct_download boolean No true Cuando es true, devuelve bytes de imagen sin procesar. Cuando es false, devuelve metadatos JSON con una URL de descarga firmada.

Detalles de la conversión#

  • Usa Pillow para la conversión directa de formato
  • Los datos de color RGB del JPEG se preservan en la salida WebP
  • La calidad de salida está fijada al máximo (100)
  • WebP normalmente logra tamaños de archivo un 25-35% menores que JPEG con calidad visual equivalente

Respuesta#

Descarga directa (direct_download=true, valor predeterminado)#

HTTP 200 OK
Content-Type: image/webp
Content-Disposition: inline; filename="photo_20260405_123456789.webp"

Devuelve bytes de imagen sin procesar.

Respuesta de metadatos (direct_download=false)#

{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/jpeg-to-webp/photo_20260405_123456789.webp",
    "filename": "photo_20260405_123456789.webp",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}

Ejemplos de código#

Python#

import requests

with open("photo.jpg", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/jpeg-to-webp",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("photo.jpg", f)}
    )

with open("photo_20260405_123456789.webp", "wb") as out:
    out.write(response.content)

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("photo.jpg"));

const response = await fetch("https://api.enconvert.com/v1/convert/jpeg-to-webp", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

fs.writeFileSync("photo_20260405_123456789.webp", Buffer.from(await response.arrayBuffer()));

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/jpeg-to-webp");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("photo.jpg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.webp", $output);

Go#

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "photo.jpg")
file, _ := os.Open("photo.jpg")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/jpeg-to-webp", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)

Respuestas de error#

Estado Condición
400 Bad Request El archivo no es un archivo .jpeg or .jpg
400 Bad Request La conversión de imagen falló (archivo corrupto o no compatible)
401 Unauthorized Clave de API o token JWT faltante o inválido
402 Payment Required Se agotó la cuota mensual de ops
402 Payment Required Se alcanzó el límite de almacenamiento
413 Payload Too Large El archivo supera el tamaño máximo de archivo del plan

Límites#

Límite Valor
Tamaño máximo de archivo Según el plan (Founding: 5 MB)
Calidad de salida Máxima (no configurable)
Conversiones mensuales Según el plan

Preguntas frecuentes#

¿Cómo convierto un JPG a WebP con una API REST?#

Envía una solicitud POST multipart/form-data a /v1/convert/jpeg-to-webp con tu archivo .jpeg o .jpg en el campo file, autenticada mediante X-API-Key o un token JWT Bearer. Por defecto, la API responde con los bytes WebP sin procesar.

¿Cuánto más pequeño es WebP que JPEG?#

WebP normalmente logra tamaños de archivo un 25-35% menores que JPEG con calidad visual equivalente. Este endpoint convierte con Pillow a máxima calidad (100), preservando los datos de color RGB del JPEG.

¿Puedo obtener una URL de descarga en lugar de bytes de imagen sin procesar?#

Sí. Establece direct_download=false y la API devuelve metadatos JSON que incluyen presigned_url, object_key, filename, file_size y conversion_time_seconds.

¿Puedo configurar la calidad de salida de WebP o el nombre de archivo?#

La calidad de salida está fijada al máximo (100) y no es configurable. Puedes establecer un nombre de archivo de salida personalizado con el parámetro output_filename; la extensión .webp se añade automáticamente.