---
seo_title: API WebP vers PNG : Convertir des images WebP en PNG | EnConvert
meta_desc: Convertissez du WebP en PNG via une API REST. POST /v1/convert/webp-to-png préserve la transparence et renvoie un PNG sans perte en octets bruts.
keywords: api webp vers png, convertir webp en png, api webp en png, webp en png avec transparence, webp vers png python, webp vers png node js, conversion webp png sans perte, api conversion image png
---

# API WebP vers PNG

L'API WebP vers PNG convertit une image WebP au format PNG en une seule requête vers `POST /v1/convert/webp-to-png`. Envoyez un fichier `.webp` en multipart/form-data et recevez un PNG sans perte sous forme d'octets bruts, 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 du WebP est préservée dans le PNG de sortie.

---

## Endpoint

```
POST /v1/convert/webp-to-png
```

**Type de contenu :** `multipart/form-data`

**Entrée acceptée :** fichiers `.webp`

**Format de sortie :** `.png` (`image/png`)

---

## 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 `.png` 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

- Utilise **Pillow** pour la conversion directe de format
- Si le WebP possède un canal alpha, il est **préservé** dans le PNG de sortie
- Le PNG de sortie utilise une compression sans perte
- Les modes autres que RGBA/RGB sont convertis en RGBA


---

## Réponse

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

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

Renvoie les octets bruts de l'image.

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

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

---

## Exemples de code

### Python

```python
import requests

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

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

### Node.js

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

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

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/webp-to-png");
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.png", $output);
```

### Go

```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-png", 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 du WebP en PNG avec une API REST ?

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

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

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

### Le PNG de sortie est-il sans perte ?

Oui. Le PNG de sortie utilise une compression sans perte, et la conversion est effectuée par Pillow.

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

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`.

### Pourquoi l'API renvoie-t-elle 400 Bad Request ?

Un `400 Bad Request` signifie que le fichier envoyé n'est pas un fichier `.webp`, ou que la conversion a échoué parce que le fichier est corrompu ou non pris en charge.
