---
seo_title: API HEIC vers JPG : Convertir photos iPhone en JPEG | EnConvert
meta_desc: Convertissez du HEIC en JPG avec une API REST. POST /v1/convert/heic-to-jpeg décode les fichiers .heic et .heif en JPEG haute qualité, en bytes ou URL présignée.
keywords: api heic vers jpg, convertir heic en jpeg api, convertir photos iphone en jpg, api heic vers jpeg, décoder du heic par api, convertir heic en jpg python, api de conversion heif
---

# API HEIC vers JPG

Convertissez des images HEIC/HEIF en JPEG de façon programmatique avec `POST /v1/convert/heic-to-jpeg`. L'endpoint accepte un envoi `.heic` ou `.heif`, le décode, et produit un JPEG haute qualité. Les réponses renvoient soit les octets bruts de l'image pour un téléchargement direct, soit des métadonnées JSON avec une URL de téléchargement présignée.

---

## Endpoint

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

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

**Entrée acceptée :** fichiers `.heic or .heif`

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

---

## Authentification

Nécessite soit une clé API privée, soit un jeton JWT issu 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 `.heic or .heif` à convertir. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.jpeg` 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 **pillow-heif** pour le décodage HEIC et **Pillow** pour l'encodage JPEG
- Si l'image HEIC comporte un canal alpha, les zones transparentes sont composées sur un **fond blanc**
- La qualité de sortie est fixée au maximum (100)


---

## Réponse

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

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

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}/heic-to-jpeg/photo_20260405_123456789.jpeg",
    "filename": "photo_20260405_123456789.jpeg",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}
```

---

## Exemples de code

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

---

## Réponses d'erreur

| Statut | Condition |
|--------|-----------|
| `400 Bad Request` | Le fichier n'est pas un fichier `.heic or .heif` |
| `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 plan |

---

## Limites

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

---

## Questions fréquentes

### Comment convertir du HEIC en JPG avec une API REST ?

Envoyez une requête POST `multipart/form-data` à `/v1/convert/heic-to-jpeg` avec votre fichier `.heic` ou `.heif` dans le champ `file`, authentifiée via `X-API-Key` ou un jeton JWT `Bearer`. Par défaut, l'API répond avec les octets bruts du JPEG.

### L'API accepte-t-elle à la fois les fichiers .heic et .heif ?

Oui. Le paramètre `file` accepte les fichiers `.heic` ou `.heif` ; tout autre format renvoie `400 Bad Request`. Le décodage utilise pillow-heif et l'encodage JPEG utilise Pillow.

### Que se passe-t-il si l'image HEIC comporte de la transparence ?

Le JPEG ne prend pas en charge la transparence : si l'image HEIC comporte un canal alpha, les zones transparentes sont donc composées sur un fond blanc dans le résultat.

### Puis-je obtenir une URL de téléchargement plutôt que les octets bruts de l'image ?

Oui. Définissez `direct_download=false` et l'API renvoie des métadonnées JSON incluant `presigned_url`, `object_key`, `filename`, `file_size` et `conversion_time_seconds`.
