---
seo_title: API da HEIC a SVG: Incapsula immagini HEIC in SVG | EnConvert
meta_desc: Converti HEIC in SVG tramite POST /v1/convert/heic-to-svg. Decodifica in PNG e incapsula in un wrapper SVG (non è vettorizzazione). Byte grezzi o URL presigned.
keywords: convertire heic in svg api, come convertire heic in svg, heic to svg converter api, heif to svg api, incapsulare heic in svg, heic to svg rest api, convertire heic in svg via api
---

# API da HEIC a SVG

Converti HEIC in SVG con l'endpoint `POST /v1/convert/heic-to-svg`, che incapsula un'immagine HEIC/HEIF all'interno di un wrapper SVG. L'HEIC viene prima decodificato in PNG, poi codificato in base64 e inserito come data URI all'interno di un elemento SVG `<image>`. Non si tratta di vettorizzazione. Le risposte restituiscono i byte SVG grezzi per impostazione predefinita, oppure metadati JSON con un URL di download presigned quando `direct_download=false`.

---

## Endpoint

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

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

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

**Formato di output:** `.svg` (`image/svg+xml`)

---

## 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 `.heic or .heif` da convertire. |
| `output_filename` | `string` | No | Nome del file di input | Nome file di output personalizzato. L'estensione `.svg` 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

- L'HEIC viene prima decodificato in PNG usando **pillow-heif**, poi **codificato in base64 e incapsulato** all'interno di un elemento SVG `<image>`
- Le dimensioni dell'SVG e il viewBox corrispondono alle dimensioni in pixel dell'immagine originale
- **Non si tratta di vettorizzazione** -- l'output contiene l'intero dato immagine raster, non percorsi vettoriali

<div class="alert alert-warning">
<strong>Non è vettorizzazione:</strong> Questo endpoint incapsula l'immagine raster decodificata all'interno di un contenitore SVG. Non traccia né converte l'immagine in percorsi vettoriali.
</div>

---

## Risposta

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

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

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}/heic-to-svg/photo_20260405_123456789.svg",
    "filename": "photo_20260405_123456789.svg",
    "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-svg",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("photo.heic", f)}
    )

with open("photo_20260405_123456789.svg", "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-svg", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/heic-to-svg");
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.svg", $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-svg", 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 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 un'immagine HEIC in SVG con una API REST?

Invia una richiesta POST `multipart/form-data` a `/v1/convert/heic-to-svg` con il file `.heic` o `.heif` nel campo `file`, autenticata tramite `X-API-Key` o un JWT Bearer. Ricevi direttamente i byte dell'SVG, oppure imposta `direct_download=false` per ottenere JSON con un URL di download presigned.

### La conversione da HEIC a SVG vettorizza l'immagine?

No. L'endpoint decodifica l'HEIC in PNG con pillow-heif, poi lo codifica in base64 come data URI all'interno di un elemento SVG `<image>`. L'output contiene l'intero dato immagine raster, non percorsi vettoriali tracciati.

### Quali dimensioni ha l'SVG di output?

Le dimensioni dell'SVG e il viewBox corrispondono alle dimensioni in pixel dell'immagine HEIC originale.

### Perché l'endpoint da HEIC a SVG restituisce un errore 400?

`400 Bad Request` viene restituito quando il file caricato non è un file `.heic` o `.heif`, oppure quando la conversione fallisce perché il file è corrotto o non supportato.
