API de WebP a SVG#

Convierte WebP a SVG con el endpoint POST /v1/convert/webp-to-svg, que incrusta una imagen WebP dentro de un contenedor SVG. El WebP primero se decodifica a PNG, luego se codifica en base64 y se coloca como URI de datos dentro de un elemento <image> de SVG. Esto no es vectorización. Las respuestas devuelven los bytes SVG brutos de forma predeterminada, o metadatos JSON con una URL de descarga prefirmada cuando direct_download=false.


Endpoint#

POST /v1/convert/webp-to-svg

Content-Type: multipart/form-data

Entrada aceptada: archivos .webp

Formato de salida: .svg (image/svg+xml)


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 .svg 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#

  • El WebP primero se decodifica a PNG mediante Pillow, y luego se codifica en base64 e incrusta dentro de un elemento <image> de SVG
  • Las dimensiones del SVG y el viewBox coinciden con las dimensiones en píxeles de la imagen original
  • La transparencia se conserva en los datos PNG incrustados
  • Esto NO es vectorización -- la salida contiene los datos completos de la imagen ráster, no rutas vectoriales
No es vectorización: Este endpoint incrusta la imagen ráster decodificada dentro de un contenedor SVG. No traza ni convierte la imagen en rutas vectoriales.

Respuesta#

Descarga directa (direct_download=true, predeterminado)#

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

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-svg/image_20260405_123456789.svg",
    "filename": "image_20260405_123456789.svg",
    "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-svg",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("image.webp", f)}
    )

with open("image_20260405_123456789.svg", "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-svg", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

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

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/webp-to-svg");
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.svg", $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-svg", 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 una imagen WebP a SVG con una API REST?#

Envía una solicitud POST multipart/form-data a /v1/convert/webp-to-svg con el archivo .webp en el campo file, autenticada mediante X-API-Key o un Bearer JWT. Recibes los bytes del SVG directamente, o configura direct_download=false para obtener JSON con una URL de descarga prefirmada.

¿La conversión de WebP a SVG vectoriza la imagen?#

No. El endpoint decodifica el WebP a PNG con Pillow, y luego lo codifica en base64 como una URI de datos dentro de un elemento <image> de SVG. La salida contiene los datos completos de la imagen ráster, no rutas vectoriales trazadas.

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

Sí. La transparencia se conserva en los datos PNG incrustados, y las dimensiones del SVG y el viewBox coinciden con las dimensiones en píxeles de la imagen original.

¿Por qué el endpoint de WebP a SVG devuelve un error 400?#

Se devuelve 400 Bad Request cuando el archivo subido no es un archivo .webp, o cuando la conversión falla porque el archivo está dañado o no es compatible.