API PNG vers WebP#

L'API PNG vers WebP convertit une image PNG au format WebP en une seule requête vers POST /v1/convert/png-to-webp. Envoyez un fichier .png en multipart/form-data et recevez les octets WebP bruts en retour, ou définissez direct_download=false pour obtenir des métadonnées JSON avec une URL de téléchargement présignée. La transparence (canal alpha) est préservée dans la sortie WebP.


Point de terminaison#

POST /v1/convert/png-to-webp

Content-Type : multipart/form-data

Entrée acceptée : fichiers .png

Format de sortie : .webp (image/webp)


Authentification#

Nécessite soit une clé API privée, soit un jeton JWT issu 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 Requis Par défaut Description
file file Oui -- Le fichier image .png à 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 Lorsque la valeur est true, renvoie les octets bruts de l'image. Lorsqu'elle est false, renvoie des métadonnées JSON avec une URL de téléchargement présignée.

Détails de la conversion#

  • Utilise Pillow pour la conversion directe de format
  • Si le PNG possède un canal alpha (RGBA), il est préservé dans la sortie WebP
  • Les modes autres que RGBA/RGB sont convertis en RGBA
  • La qualité de sortie est réglée au maximum (100)
  • WebP prend en charge la compression avec et sans perte ; cette conversion utilise la qualité 100 pour une sortie quasi sans perte

Réponse#

Téléchargement direct (direct_download=true, par défaut)#

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

Renvoie les octets bruts de l'image.

Réponse de métadonnées (direct_download=false)#

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

Exemples de code#

Python#

import requests

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

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

Node.js#

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

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

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

PHP#

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

Go#

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/png-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 .png
400 Bad Request La conversion de l'image a échoué (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 maximale de fichier Selon le forfait (Founding : 5 MB)
Qualité de sortie Maximale (non configurable)
Conversions mensuelles Selon le forfait

Questions fréquentes#

Comment convertir PNG en WebP avec une API REST ?#

Envoyez une requête POST à /v1/convert/png-to-webp avec votre fichier .png dans un corps multipart/form-data, authentifiée via X-API-Key ou un jeton JWT Authorization: Bearer. Le WebP converti est renvoyé par défaut sous forme d'octets bruts.

La transparence du PNG est-elle préservée lors de la conversion en WebP ?#

Oui. Si le PNG possède un canal alpha (RGBA), il est préservé dans la sortie WebP ; les modes autres que RGBA/RGB sont d'abord convertis en RGBA.

La sortie WebP est-elle avec ou sans perte ?#

WebP prend en charge la compression avec et sans perte ; cette conversion utilise la qualité 100 pour une sortie quasi sans perte. Le réglage de qualité n'est pas configurable.

Puis-je obtenir une URL de téléchargement au lieu des octets WebP bruts ?#

Oui. Définissez direct_download=false et l'API renvoie des métadonnées JSON avec presigned_url, filename, file_size et conversion_time_seconds.

Quelle est la taille maximale d'un fichier PNG que je peux envoyer ?#

La taille de fichier maximale dépend de votre forfait (5 MB pour le forfait Founding). Les fichiers plus volumineux sont rejetés avec 413 Payload Too Large.