API WebP vers SVG#
Convertissez du WebP en SVG avec l'endpoint POST /v1/convert/webp-to-svg, qui intègre une image WebP dans un conteneur SVG. Le WebP est d'abord décodé en PNG, puis encodé en base64 et placé sous forme d'URI de données dans un élément <image> du SVG. Il ne s'agit pas de vectorisation. Les réponses renvoient les octets bruts du SVG 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/webp-to-svg
Type de contenu : multipart/form-data
Entrée acceptée : fichiers .webp
Format de sortie : .svg (image/svg+xml)
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 .webp à convertir. |
output_filename |
string |
Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension .svg 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. |
Détails de la conversion#
- Le WebP est d'abord décodé en PNG avec Pillow, puis encodé en base64 et intégré dans un élément
<image>du SVG - Les dimensions du SVG et le viewBox correspondent aux dimensions en pixels de l'image d'origine
- La transparence est préservée dans les données PNG intégrées
- Il ne s'agit PAS de vectorisation -- la sortie contient l'intégralité des données de l'image raster, et non des tracés vectoriels
Réponse#
Téléchargement direct (direct_download=true, par défaut)#
HTTP 200 OK
Content-Type: image/svg+xml
Content-Disposition: inline; filename="image_20260405_123456789.svg"
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}/webp-to-svg/image_20260405_123456789.svg",
"filename": "image_20260405_123456789.svg",
"file_size": 45678,
"conversion_time_seconds": 0.5
}
Exemples de code#
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)
Réponses d'erreur#
| Statut | Condition |
|---|---|
400 Bad Request |
Le fichier n'est pas un fichier .webp |
400 Bad Request |
Échec de la conversion de l'image (fichier corrompu ou non pris en charge) |
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) |
| Conversions mensuelles | Selon le forfait |
Questions fréquentes#
Comment convertir une image WebP en SVG avec une API REST ?#
Envoyez une requête POST multipart/form-data à /v1/convert/webp-to-svg avec le fichier .webp dans le champ file, authentifiée via X-API-Key ou un Bearer JWT. Vous recevez directement les octets du SVG, ou définissez direct_download=false pour du JSON avec une URL de téléchargement présignée.
La conversion de WebP en SVG vectorise-t-elle l'image ?#
Non. L'endpoint décode le WebP en PNG avec Pillow, puis l'encode en base64 sous forme d'URI de données dans un élément <image> du SVG. La sortie contient l'intégralité des données de l'image raster, et non des tracés vectoriels.
La transparence est-elle préservée lors de la conversion de WebP en SVG ?#
Oui. La transparence est préservée dans les données PNG intégrées, et les dimensions du SVG ainsi que le viewBox correspondent aux dimensions en pixels de l'image d'origine.
Pourquoi l'endpoint WebP vers SVG renvoie-t-il une erreur 400 ?#
400 Bad Request est renvoyé lorsque le fichier envoyé n'est pas un fichier .webp, ou lorsque la conversion échoue parce que le fichier est corrompu ou non pris en charge.