API SVG vers WebP#
Convertissez du SVG en WebP avec l'endpoint POST /v1/convert/svg-to-webp. Le SVG est rendu via CairoSVG, puis encodé en WebP à qualité maximale avec la transparence préservée. Les paramètres optionnels width et height définissent les dimensions de sortie en pixels. Les réponses renvoient des octets WebP bruts par défaut, ou des métadonnées JSON avec une URL de téléchargement présignée lorsque direct_download=false.
Endpoint#
POST /v1/convert/svg-to-webp
Type de contenu : multipart/form-data
Entrée acceptée : fichiers .svg
Format de sortie : .webp (image/webp)
Authentification#
Nécessite soit une clé API privée, soit un jeton JWT provenant d'une clé publique.
X-API-Key: sk_your_private_key
Ou :
Authorization: Bearer <jwt_token>
Paramètres de la requête#
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
file |
file | Oui | -- | Le fichier image .svg à convertir. |
output_filename |
string |
Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension .webp est ajoutée automatiquement. |
direct_download |
boolean |
Non | true |
Si true, renvoie les octets bruts de l'image. Si false, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |
width |
integer |
Non | Taille propre au SVG | Largeur de sortie en pixels (1-10000). Si height est omis, la hauteur est déduite du rapport d'aspect du SVG. |
height |
integer |
Non | Taille propre au SVG | Hauteur de sortie en pixels (1-10000). Si width est omis, la largeur est déduite du rapport d'aspect du SVG. |
Détails de la conversion#
- Utilise CairoSVG pour rendre le SVG en PNG intermédiaire, puis Pillow pour l'encodage WebP
- Par défaut, la résolution de sortie est déterminée par les attributs
width,heightetviewBoxpropres au SVG ; les paramètres de requêtewidth/heightla remplacent - La transparence est préservée dans le WebP de sortie
- La qualité de sortie est réglée au maximum (100)
width et/ou height (en pixels, 1-10000) pour définir la taille de sortie. Une seule dimension redimensionne l'image proportionnellement selon le rapport d'aspect du SVG ; les deux ensemble définissent la taille exacte du canevas (ce qui peut modifier le rapport d'aspect). Les requêtes dépassant 25 000 000 pixels de sortie au total sont rejetées avec 400. Sans ces paramètres, les attributs de taille propres au SVG déterminent la résolution.
Réponse#
Téléchargement direct (direct_download=true, par défaut)#
HTTP 200 OK
Content-Type: image/webp
Content-Disposition: inline; filename="icon_20260405_123456789.webp"
Renvoie les octets bruts de l'image.
Réponse avec métadonnées (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
}
Exemples de code#
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)
Réponses d'erreur#
| Statut | Condition |
|---|---|
400 Bad Request |
Le fichier n'est pas un fichier .svg |
400 Bad Request |
Échec de la conversion de l'image (fichier corrompu ou non pris en charge) |
400 Bad Request |
width/height hors plage (1-10000) ou nombre total de pixels de sortie supérieur à 25 000 000 |
401 Unauthorized |
Clé API / jeton JWT manquant ou invalide |
402 Payment Required |
Quota mensuel d'ops épuisé |
402 Payment Required |
Limite de stockage atteinte |
413 Payload Too Large |
Le fichier dépasse la taille maximale autorisée par le forfait |
Limites#
| Limite | Valeur |
|---|---|
| Taille de fichier maximale | Selon le forfait (Founding : 5 MB) |
| Qualité de sortie | Maximale (non configurable) |
| Taille de sortie maximale | 10000 px par dimension, 25 000 000 px au total |
| Conversions mensuelles | Selon le forfait |
Questions fréquentes#
Comment convertir un SVG en WebP avec une API REST ?#
Envoyez une requête POST multipart/form-data à /v1/convert/svg-to-webp avec le SVG dans le champ file, authentifiée via X-API-Key ou un Bearer JWT. La réponse renvoie des octets WebP bruts par défaut, ou définissez direct_download=false pour recevoir du JSON avec une URL de téléchargement présignée.
La conversion de SVG en WebP préserve-t-elle la transparence ?#
Oui. La transparence du SVG est préservée dans le WebP de sortie.
Comment obtenir un WebP en plus haute résolution à partir de mon SVG ?#
Transmettez les champs de formulaire width et/ou height (en pixels, jusqu'à 10000 par dimension). Une seule dimension redimensionne la sortie proportionnellement selon le rapport d'aspect du SVG ; les deux dimensions définissent la taille de sortie exacte. Sans ces champs, les attributs width, height et viewBox propres au SVG déterminent la résolution.
Puis-je définir la qualité du WebP sur cet endpoint ?#
Non. La qualité de sortie est fixée au maximum (100) et n'est pas configurable.