SVG zu WebP API#

Konvertiere SVG mit dem Endpoint POST /v1/convert/svg-to-webp in WebP. Das SVG wird über CairoSVG gerendert und anschließend mit maximaler Qualität als WebP kodiert, wobei die Transparenz erhalten bleibt. Die optionalen Parameter width und height legen die Ausgabeabmessungen in Pixeln fest. Antworten liefern standardmäßig rohe WebP-Daten, oder JSON-Metadaten mit einer presigned Download-URL, wenn direct_download=false gesetzt ist.


Endpoint#

POST /v1/convert/svg-to-webp

Content-Type: multipart/form-data

Akzeptierte Eingabe: .svg-Dateien

Ausgabeformat: .webp (image/webp)


Authentifizierung#

Erfordert entweder einen privaten API-Schlüssel oder ein JWT-Token von einem öffentlichen Schlüssel.

X-API-Key: sk_your_private_key

Oder:

Authorization: Bearer <jwt_token>

Request-Parameter#

Parameter Typ Erforderlich Standard Beschreibung
file file Ja -- Die zu konvertierende .svg-Bilddatei.
output_filename string Nein Eingabedateiname Benutzerdefinierter Ausgabedateiname. Die Endung .webp wird automatisch hinzugefügt.
direct_download boolean Nein true Bei true werden rohe Bilddaten zurückgegeben. Bei false werden JSON-Metadaten mit einer presigned Download-URL zurückgegeben.
width integer Nein Eigene Größe des SVG Ausgabebreite in Pixeln (1-10000). Wenn height weggelassen wird, wird die Höhe aus dem Seitenverhältnis des SVG abgeleitet.
height integer Nein Eigene Größe des SVG Ausgabehöhe in Pixeln (1-10000). Wenn width weggelassen wird, wird die Breite aus dem Seitenverhältnis des SVG abgeleitet.

Details zur Konvertierung#

  • Verwendet CairoSVG, um das SVG in ein PNG-Zwischenformat zu rendern, anschließend Pillow für die WebP-Kodierung
  • Standardmäßig wird die Ausgabeauflösung durch die eigenen Attribute width, height und viewBox des SVG bestimmt; die Request-Parameter width/height überschreiben sie
  • Die Transparenz bleibt im WebP-Output erhalten
  • Die Ausgabequalität ist auf Maximum (100) festgelegt
Hinweis zur Auflösung: Übergib width und/oder height (Pixel, 1-10000), um die Ausgabegröße festzulegen. Eine Dimension allein skaliert das Bild proportional zum Seitenverhältnis des SVG; beide zusammen legen die exakte Leinwandgröße fest (was das Seitenverhältnis verändern kann). Anfragen über insgesamt 25.000.000 Ausgabepixeln werden mit 400 abgelehnt. Ohne diese Parameter bestimmen die eigenen Größenattribute des SVG die Auflösung.

Antwort#

Direkter Download (direct_download=true, Standard)#

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

Gibt rohe Bilddaten zurück.

Metadaten-Antwort (direct_download=false)#

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

Codebeispiele#

Python#

import requests

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

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

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("icon.svg"));

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

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

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/svg-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("icon.svg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("icon_20260405_123456789.webp", $output);

Go#

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/svg-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)

Fehlerantworten#

Status Bedingung
400 Bad Request Datei ist keine .svg-Datei
400 Bad Request Bildkonvertierung fehlgeschlagen (beschädigte oder nicht unterstützte Datei)
400 Bad Request width/height außerhalb des Bereichs (1-10000) oder insgesamt mehr als 25.000.000 Ausgabepixel
401 Unauthorized Fehlender oder ungültiger API-Schlüssel / JWT-Token
402 Payment Required Monatliches Ops-Kontingent aufgebraucht
402 Payment Required Speicherlimit erreicht
413 Payload Too Large Datei überschreitet die maximale Dateigröße des Plans

Limits#

Limit Wert
Maximale Dateigröße Abhängig vom Plan (Founding: 5 MB)
Ausgabequalität Maximum (nicht konfigurierbar)
Maximale Ausgabegröße 10000 px pro Dimension, insgesamt 25.000.000 px
Monatliche Konvertierungen Abhängig vom Plan

Häufig gestellte Fragen#

Wie konvertiere ich ein SVG mit einer REST API in WebP?#

Sende eine multipart/form-data-POST-Anfrage an /v1/convert/svg-to-webp mit dem SVG im Feld file, authentifiziert über X-API-Key oder ein Bearer-JWT. Die Antwort liefert standardmäßig rohe WebP-Daten, oder setze direct_download=false, um JSON mit einer presigned Download-URL zu erhalten.

Bleibt die Transparenz bei der Konvertierung von SVG zu WebP erhalten?#

Ja. Die Transparenz im SVG bleibt im WebP-Output erhalten.

Wie erhalte ich ein WebP mit höherer Auflösung aus meinem SVG?#

Übergib die Formularfelder width und/oder height (in Pixeln, bis zu 10000 pro Dimension). Eine einzelne Dimension skaliert den Output proportional zum Seitenverhältnis des SVG; beide Dimensionen legen die exakte Ausgabegröße fest. Ohne sie bestimmen die eigenen Attribute width, height und viewBox des SVG die Auflösung.

Kann ich die WebP-Qualität bei diesem Endpoint einstellen?#

Nein. Die Ausgabequalität ist fest auf Maximum (100) eingestellt und nicht konfigurierbar.