---
seo_title: API da WebP a PNG: Converti immagini WebP in PNG | EnConvert
meta_desc: Converti WebP in PNG con una API REST. POST /v1/convert/webp-to-png preserva la trasparenza, restituendo un PNG lossless come byte grezzi o URL presigned.
keywords: convertire webp in png api, api per convertire webp in png, webp to png rest api, convertire webp in png con trasparenza, webp to png python, webp to png node js, conversione webp png senza perdita di qualità, api conversione immagini in png
---

# API da WebP a PNG

L'API da WebP a PNG converte un'immagine WebP nel formato PNG con una singola richiesta a `POST /v1/convert/webp-to-png`. Carica un file `.webp` come multipart/form-data e ricevi un PNG lossless come byte grezzi, oppure imposta `direct_download=false` per ottenere metadati JSON con un URL di download presigned. La trasparenza nel WebP viene preservata nell'output PNG.

---

## Endpoint

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

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

**Input accettato:** file `.webp`

**Formato di output:** `.png` (`image/png`)

---

## Autenticazione

Richiede una chiave API privata oppure un token JWT generato da una chiave pubblica.

```
X-API-Key: sk_your_private_key
```

Oppure:

```
Authorization: Bearer <jwt_token>
```

---

## Parametri della richiesta

| Parametro | Tipo | Obbligatorio | Predefinito | Descrizione |
|-----------|------|----------|---------|-------------|
| `file` | file | Sì | -- | Il file immagine `.webp` da convertire. |
| `output_filename` | `string` | No | Nome del file di input | Nome file di output personalizzato. L'estensione `.png` viene aggiunta automaticamente. |
| `direct_download` | `boolean` | No | `true` | Se `true`, restituisce i byte grezzi dell'immagine. Se `false`, restituisce metadati JSON con un URL di download presigned. |

---

## Dettagli della conversione

- Usa **Pillow** per la conversione diretta del formato
- Se il WebP ha un canale alfa, viene **preservato** nell'output PNG
- L'output PNG utilizza una compressione senza perdita (lossless)
- Le modalità non RGBA/RGB vengono convertite in RGBA


---

## Risposta

### Download diretto (`direct_download=true`, predefinito)

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

Restituisce i byte grezzi dell'immagine.

### Risposta con metadati (`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
}
```

---

## Esempi di codice

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

---

## Risposte di errore

| Stato | Condizione |
|--------|-----------|
| `400 Bad Request` | Il file non è un file `.webp` |
| `400 Bad Request` | Conversione dell'immagine non riuscita (file corrotto o non supportato) |
| `401 Unauthorized` | Chiave API / token JWT mancante o non valido |
| `402 Payment Required` | Quota mensile di ops esaurita |
| `402 Payment Required` | Limite di storage raggiunto |
| `413 Payload Too Large` | Il file supera la dimensione massima consentita dal piano |

---

## Limiti

| Limite | Valore |
|-------|-------|
| Dimensione massima del file | Dipende dal piano (Founding: 5 MB) |
| Qualità di output | Massima (non configurabile) |
| Conversioni mensili | Dipende dal piano |

---

## Domande frequenti

### Come converto WebP in PNG con una API REST?

Invia una richiesta `POST` a `/v1/convert/webp-to-png` con il tuo file `.webp` in un body `multipart/form-data`, autenticata tramite `X-API-Key` o un token JWT `Authorization: Bearer`. Il PNG convertito viene restituito come byte grezzi dell'immagine per impostazione predefinita.

### La trasparenza viene preservata quando converto WebP in PNG?

Sì. Se il WebP ha un canale alfa, viene preservato nell'output PNG; le modalità non RGBA/RGB vengono prima convertite in RGBA.

### L'output PNG è lossless?

Sì. L'output PNG utilizza una compressione senza perdita (lossless) e la conversione viene eseguita da Pillow.

### Posso ottenere un URL di download invece dei byte grezzi del PNG?

Sì. Imposta `direct_download=false` e l'API restituisce metadati JSON con `presigned_url`, `filename`, `file_size` e `conversion_time_seconds`.

### Perché l'API restituisce 400 Bad Request?

Un `400 Bad Request` indica che il file caricato non è un file `.webp`, oppure che la conversione non è riuscita perché il file è corrotto o non supportato.
