API de WebP a PNG#

La API de WebP a PNG convierte una imagen WebP a formato PNG con una sola solicitud a POST /v1/convert/webp-to-png. Sube un archivo .webp como multipart/form-data y recibe un PNG sin pérdida como bytes brutos, o configura direct_download=false para obtener metadatos JSON con una URL de descarga prefirmada. La transparencia del WebP se conserva en la salida PNG.


Endpoint#

POST /v1/convert/webp-to-png

Content-Type: multipart/form-data

Entrada aceptada: archivos .webp

Formato de salida: .png (image/png)


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 la solicitud#

Parámetro Tipo Obligatorio Predeterminado Descripción
file file -- El archivo de imagen .webp que se va a convertir.
output_filename string No Nombre del archivo de entrada Nombre de archivo de salida personalizado. La extensión .png se añade automáticamente.
direct_download boolean No true Cuando es true, devuelve los bytes brutos de la imagen. Cuando es false, devuelve metadatos JSON con una URL de descarga prefirmada.

Detalles de la conversión#

  • Usa Pillow para la conversión directa de formato
  • Si el WebP tiene canal alfa, se conserva en la salida PNG
  • La salida PNG usa compresión sin pérdida
  • Los modos que no son RGBA/RGB se convierten a RGBA

Respuesta#

Descarga directa (direct_download=true, predeterminado)#

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

Devuelve los bytes brutos de la imagen.

Respuesta con metadatos (direct_download=false)#

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

Ejemplos de código#

Python#

import requests

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

with open("image_20260405_123456789.png", "wb") as out:
    out.write(response.content)

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("image.webp"));

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

fs.writeFileSync("image_20260405_123456789.png", Buffer.from(await response.arrayBuffer()));

PHP#

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

Go#

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/webp-to-png", 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 .webp
400 Bad Request La conversión de la imagen falló (archivo dañado o no compatible)
401 Unauthorized Falta la clave de API/token JWT o no es vá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 permitido por el 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 WebP a PNG con una API REST?#

Envía una solicitud POST a /v1/convert/webp-to-png con tu archivo .webp en un cuerpo multipart/form-data, autenticada mediante X-API-Key o un token JWT Authorization: Bearer. El PNG convertido se devuelve como bytes brutos de imagen de forma predeterminada.

¿Se conserva la transparencia al convertir WebP a PNG?#

Sí. Si el WebP tiene canal alfa, se conserva en la salida PNG; los modos que no son RGBA/RGB se convierten primero a RGBA.

¿La salida PNG es sin pérdida?#

Sí. La salida PNG usa compresión sin pérdida, y la conversión la realiza Pillow.

¿Puedo obtener una URL de descarga en lugar de los bytes brutos del PNG?#

Sí. Configura direct_download=false y la API devuelve metadatos JSON con presigned_url, filename, file_size y conversion_time_seconds.

¿Por qué la API devuelve 400 Bad Request?#

Un 400 Bad Request significa que el archivo subido no es un archivo .webp, o que la conversión falló porque el archivo está dañado o no es compatible.