---
seo_title: PNG-zu-WebP-API: PNG-Bilder in WebP umwandeln | EnConvert
meta_desc: PNG mit einer REST API in WebP umwandeln. POST /v1/convert/png-to-webp erhält den Alphakanal und liefert rohe WebP-Bytes oder eine presigned URL bei Qualität 100.
keywords: png in webp umwandeln api, png zu webp konvertieren api, png webp rest api, png webp mit transparenz, png webp python beispiel, png webp node.js beispiel, bildkonvertierung api webp, webp qualität 100 api
---

# PNG-zu-WebP-API

Die PNG-zu-WebP-API konvertiert ein PNG-Bild mit einer einzigen Anfrage an `POST /v1/convert/png-to-webp` in das WebP-Format. Lade eine `.png`-Datei als multipart/form-data hoch und erhalte rohe WebP-Bytes zurück, oder setze `direct_download=false`, um JSON-Metadaten mit einer presigned Download-URL zu erhalten. Die Transparenz (Alphakanal) bleibt in der WebP-Ausgabe erhalten.

---

## Endpunkt

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

**Content-Type:** `multipart/form-data`

**Akzeptierte Eingabe:** `.png`-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>
```

---

## Anfrageparameter

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|-----------|------|----------|---------|-------------|
| `file` | file | Ja | -- | Die zu konvertierende `.png`-Bilddatei. |
| `output_filename` | `string` | Nein | Name der Eingabedatei | Benutzerdefinierter Ausgabedateiname. Die Erweiterung `.webp` wird automatisch hinzugefügt. |
| `direct_download` | `boolean` | Nein | `true` | Bei `true` werden rohe Bild-Bytes zurückgegeben. Bei `false` werden JSON-Metadaten mit einer presigned Download-URL zurückgegeben. |

---

## Details zur Konvertierung

- Verwendet **Pillow** für die direkte Formatkonvertierung
- Wenn das PNG einen Alphakanal (RGBA) hat, bleibt dieser in der WebP-Ausgabe **erhalten**
- Nicht-RGBA/RGB-Modi werden in RGBA umgewandelt
- Die Ausgabequalität ist auf das Maximum (100) eingestellt
- WebP unterstützt sowohl verlustbehaftete als auch verlustfreie Kompression; diese Konvertierung verwendet Qualität 100 für eine nahezu verlustfreie Ausgabe


---

## Antwort

### Direkter Download (`direct_download=true`, Standard)

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

Gibt rohe Bild-Bytes zurück.

### Metadaten-Antwort (`direct_download=false`)

```json
{
    "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
}
```

---

## Codebeispiele

### Python

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

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

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

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

---

## Fehlerantworten

| Status | Bedingung |
|--------|-----------|
| `400 Bad Request` | Datei ist keine `.png`-Datei |
| `400 Bad Request` | Bildkonvertierung fehlgeschlagen (beschädigte oder nicht unterstützte Datei) |
| `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) |
| Monatliche Konvertierungen | Abhängig vom Plan |

---

## Häufig gestellte Fragen

### Wie konvertiere ich PNG mit einer REST API in WebP?

Sende eine `POST`-Anfrage an `/v1/convert/png-to-webp` mit deiner `.png`-Datei in einem `multipart/form-data`-Body, authentifiziert über `X-API-Key` oder ein JWT-`Authorization: Bearer`-Token. Das konvertierte WebP wird standardmäßig als rohe Bild-Bytes zurückgegeben.

### Bleibt die PNG-Transparenz bei der Konvertierung zu WebP erhalten?

Ja. Wenn das PNG einen Alphakanal (RGBA) hat, bleibt dieser in der WebP-Ausgabe erhalten; Nicht-RGBA/RGB-Modi werden zuerst in RGBA umgewandelt.

### Ist die WebP-Ausgabe verlustbehaftet oder verlustfrei?

WebP unterstützt sowohl verlustbehaftete als auch verlustfreie Kompression; diese Konvertierung verwendet Qualität 100 für eine nahezu verlustfreie Ausgabe. Die Qualitätseinstellung ist nicht konfigurierbar.

### Kann ich eine Download-URL statt roher WebP-Bytes erhalten?

Ja. Setze `direct_download=false`, und die API gibt JSON-Metadaten mit `presigned_url`, `filename`, `file_size` und `conversion_time_seconds` zurück.

### Was ist die maximale PNG-Dateigröße, die ich hochladen kann?

Die maximale Dateigröße ist abhängig vom Plan (5 MB im Founding-Plan). Größere Dateien werden mit `413 Payload Too Large` abgelehnt.
