---
seo_title: API da HEIC a JPG: Converti Foto iPhone in JPEG | EnConvert
meta_desc: Converti HEIC in JPG con una REST API. POST /v1/convert/heic-to-jpeg decodifica file .heic e .heif e restituisce un JPEG di alta qualità come byte o URL prefirmato.
keywords: api da heic a jpg, api da heic a jpeg, convertire heic in jpg via api, convertire foto iphone via api, convertitore heic rest api, api da heif a jpeg, decodificare heic api, convertire heic in jpg con python
---

# API da HEIC a JPG

Converti immagini HEIC/HEIF in JPEG in modo programmatico con `POST /v1/convert/heic-to-jpeg`. L'endpoint accetta un file `.heic` o `.heif` caricato, lo decodifica e produce un JPEG di alta qualità. Le risposte restituiscono byte immagine grezzi per il download diretto oppure metadati JSON con un URL di download prefirmato.

---

## Endpoint

```
POST /v1/convert/heic-to-jpeg
```

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

**Input accettato:** file `.heic or .heif`

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

---

## Autenticazione

Richiede una chiave API privata oppure un token JWT da 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 `.heic or .heif` da convertire. |
| `output_filename` | `string` | No | Nome file di input | Nome file di output personalizzato. L'estensione `.jpeg` viene aggiunta automaticamente. |
| `direct_download` | `boolean` | No | `true` | Se `true`, restituisce i byte immagine grezzi. Se `false`, restituisce metadati JSON con un URL di download prefirmato. |

---

## Dettagli della conversione

- Usa **pillow-heif** per la decodifica HEIC e **Pillow** per la codifica JPEG
- Se l'immagine HEIC ha un canale alfa, le aree trasparenti vengono compositate su uno **sfondo bianco**
- La qualità di output è impostata al massimo (100)


---

## Risposta

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

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

Restituisce i byte immagine grezzi.

### Risposta con metadati (`direct_download=false`)

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

---

## Esempi di codice

### Python

```python
import requests

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

with open("photo_20260405_123456789.jpeg", "wb") as out:
    out.write(response.content)
```

### Node.js

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

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

fs.writeFileSync("photo_20260405_123456789.jpeg", Buffer.from(await response.arrayBuffer()));
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/heic-to-jpeg");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("photo.heic")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.jpeg", $output);
```

### Go

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/heic-to-jpeg", 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 `.heic or .heif` |
| `400 Bad Request` | Conversione 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 file | Dipende dal piano (Founding: 5 MB) |
| Qualità di output | Massima (non configurabile) |
| Conversioni mensili | Dipende dal piano |

---

## Domande frequenti

### Come converto HEIC in JPG con una REST API?

Invia una richiesta POST `multipart/form-data` a `/v1/convert/heic-to-jpeg` con il tuo file `.heic` o `.heif` nel campo `file`, autenticandoti tramite `X-API-Key` o un token JWT `Bearer`. Per impostazione predefinita l'API risponde con i byte JPEG grezzi.

### L'API accetta sia file .heic che .heif?

Sì. Il parametro `file` accetta file `.heic` o `.heif`; qualsiasi altro formato restituisce `400 Bad Request`. La decodifica usa pillow-heif e la codifica JPEG usa Pillow.

### Cosa succede se l'immagine HEIC ha trasparenza?

JPEG non supporta la trasparenza, quindi se l'immagine HEIC ha un canale alfa, le aree trasparenti vengono compositate su uno sfondo bianco nell'output.

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

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