---
seo_title: API da JPEG a HEIC: Converti JPG in HEIC nel Codice | EnConvert
meta_desc: Converti JPEG in HEIC con una REST API. POST /v1/convert/jpeg-to-heic codifica HEIC di alta qualità, byte grezzi o URL prefirmato. Esempi di codice.
keywords: api da jpeg a heic, api da jpg a heic, convertire jpeg in heic via api, api codifica heic, convertitore jpg heic api, api conversione heif rest, convertire jpg in heic python
---

# API da JPEG a HEIC

Converti immagini JPEG in HEIC (High Efficiency Image Container) in modo programmatico con `POST /v1/convert/jpeg-to-heic`. L'endpoint accetta un file `.jpeg` o `.jpg` caricato e produce un file HEIC di alta qualità usando il codec HEIF. Le risposte restituiscono byte immagine grezzi per il download diretto oppure metadati JSON con un URL di download prefirmato.

---

## Endpoint

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

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

**Input accettato:** file `.jpeg or .jpg`

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

---

## 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 `.jpeg or .jpg` da convertire. |
| `output_filename` | `string` | No | Nome file di input | Nome file di output personalizzato. L'estensione `.heic` 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** con **pillow-heif** per la codifica HEIC
- I dati colore RGB del JPEG vengono mantenuti nell'output HEIC
- La qualità di output è impostata al massimo (100)
- HEIC raggiunge tipicamente dimensioni file inferiori rispetto a JPEG a parità di qualità


---

## Risposta

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

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

Restituisce i byte immagine grezzi.

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

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

---

## Esempi di codice

### Python

```python
import requests

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

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

### Node.js

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

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

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/jpeg-to-heic");
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.jpg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.heic", $output);
```

### Go

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/jpeg-to-heic", 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 `.jpeg or .jpg` |
| `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 un JPG in HEIC con una REST API?

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

### Convertire JPEG in HEIC riduce la dimensione del file?

Tipicamente sì: HEIC raggiunge generalmente dimensioni file inferiori rispetto a JPEG a parità di qualità. Questo endpoint codifica alla qualità massima (100) usando Pillow con pillow-heif.

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

### Perché l'API restituisce 402 Payment Required?

Un `402` indica che è stata esaurita la quota mensile di ops o raggiunto il limite di storage del tuo piano. I file che superano la dimensione massima del tuo piano restituiscono invece `413 Payload Too Large`.
