---
seo_title: API SVG vers HEIC : Convertir des images SVG en HEIC | EnConvert
meta_desc: Convertissez du SVG en HEIC via POST /v1/convert/svg-to-heic. Envoyez du multipart/form-data et recevez des octets HEIC bruts ou une URL présignée.
keywords: api svg vers heic, convertir svg en heic, api de conversion svg en heic, rastériser svg en heic, api rest svg vers heic, image svg en heic par programmation, conversion cairosvg heic api
---

# API SVG vers HEIC

Convertissez du SVG en HEIC avec l'endpoint `POST /v1/convert/svg-to-heic`. Le SVG est rendu via CairoSVG, puis encodé en HEIC à qualité maximale, les zones transparentes étant compositées sur un fond blanc. Les réponses renvoient des octets HEIC bruts par défaut, ou des métadonnées JSON avec une URL de téléchargement présignée lorsque `direct_download=false`.

---

## Endpoint

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

**Type de contenu :** `multipart/form-data`

**Entrée acceptée :** fichiers `.svg`

**Format de sortie :** `.heic` (`image/heic`)

---

## Authentification

Nécessite soit une clé API privée, soit un jeton JWT provenant d'une clé publique.

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

Ou :

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

---

## Paramètres de la requête

| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|-----------|------|----------|---------|-------------|
| `file` | file | Oui | -- | Le fichier image `.svg` à convertir. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.heic` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Si `true`, renvoie les octets bruts de l'image. Si `false`, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |

---

## Détails de la conversion

- Utilise **CairoSVG** pour rendre le SVG en PNG intermédiaire, puis **Pillow** avec **pillow-heif** pour l'encodage HEIC
- La résolution de sortie est déterminée par les attributs `width`, `height` et `viewBox` propres au SVG
- Les zones transparentes sont compositées sur un **fond blanc** (le HEIC ne prend pas en charge la transparence)
- La qualité de sortie est réglée au maximum (100)

<div class="alert alert-info">
<strong>Remarque sur la transparence :</strong> le HEIC ne prend pas en charge la transparence. Les zones transparentes du SVG apparaîtront blanches dans le HEIC de sortie.
</div>

---

## Réponse

### Téléchargement direct (`direct_download=true`, par défaut)

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

Renvoie les octets bruts de l'image.

### Réponse avec métadonnées (`direct_download=false`)

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

---

## Exemples de code

### Python

```python
import requests

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

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

### Node.js

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

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

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

### PHP

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

### Go

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/svg-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)
```

---

## Réponses d'erreur

| Statut | Condition |
|--------|-----------|
| `400 Bad Request` | Le fichier n'est pas un fichier `.svg` |
| `400 Bad Request` | Échec de la conversion de l'image (fichier corrompu ou non pris en charge) |
| `401 Unauthorized` | Clé API / jeton JWT manquant ou invalide |
| `402 Payment Required` | Quota mensuel d'ops épuisé |
| `402 Payment Required` | Limite de stockage atteinte |
| `413 Payload Too Large` | Le fichier dépasse la taille maximale autorisée par le forfait |

---

## Limites

| Limite | Valeur |
|-------|-------|
| Taille de fichier maximale | Selon le forfait (Founding : 5 MB) |
| Qualité de sortie | Maximale (non configurable) |
| Conversions mensuelles | Selon le forfait |

---

## Questions fréquentes

### Comment convertir un SVG en HEIC avec une API REST ?

Envoyez une requête POST `multipart/form-data` à `/v1/convert/svg-to-heic` avec le SVG dans le champ `file`, authentifiée via `X-API-Key` ou un Bearer JWT. La réponse renvoie des octets HEIC bruts par défaut, ou définissez `direct_download=false` pour recevoir du JSON avec une URL de téléchargement présignée.

### La conversion de SVG en HEIC préserve-t-elle la transparence ?

Non. Le HEIC ne prend pas en charge la transparence : les zones transparentes du SVG sont donc compositées sur un fond blanc dans le HEIC de sortie.

### Comment la résolution de sortie est-elle déterminée lors de la conversion de SVG en HEIC ?

La résolution de sortie est déterminée par les attributs `width`, `height` et `viewBox` propres au SVG. Le SVG est rendu en PNG intermédiaire avec CairoSVG, puis encodé en HEIC avec Pillow et pillow-heif.

### Pourquoi l'endpoint SVG vers HEIC renvoie-t-il une erreur 402 ?

`402 Payment Required` signifie que le quota mensuel d'ops ou la limite de stockage de votre forfait a été atteint. Les fichiers trop volumineux renvoient plutôt `413 Payload Too Large`, et les fichiers SVG invalides ou corrompus renvoient `400 Bad Request`.
