---
seo_title: API HEIC vers WebP : Convertir HEIC en WebP | EnConvert
meta_desc: Convertissez du HEIC en WebP via POST /v1/convert/heic-to-webp. Canal alpha préservé, qualité maximale, octets WebP bruts ou URL de téléchargement présignée.
keywords: api heic vers webp, convertir heic en webp, api de conversion heic en webp, api heif vers webp, api rest heic vers webp, convertir heic en webp par programmation, heic vers webp avec canal alpha
---

# API HEIC vers WebP

Convertissez du HEIC en WebP avec l'endpoint `POST /v1/convert/heic-to-webp`, qui convertit une image HEIC/HEIF en un fichier WebP haute qualité. Si le HEIC possède un canal alpha, il est préservé dans le WebP de sortie. Les réponses renvoient des octets WebP 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/heic-to-webp
```

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

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

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

---

## 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 `.heic or .heif` à convertir. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.webp` 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 WebP
- Si le HEIC possède un canal alpha, il est préservé dans le WebP de sortie
- La qualité de sortie est réglée au maximum (100)
- Le WebP obtient généralement des tailles de fichier plus petites que le JPEG à qualité équivalente


---

## Réponse

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

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

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

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

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

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/heic-to-webp");
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.webp", $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-webp", 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 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 une image HEIC en WebP avec une API REST ?

Envoyez une requête POST `multipart/form-data` à `/v1/convert/heic-to-webp` avec le fichier `.heic` ou `.heif` dans le champ `file`, authentifiée via `X-API-Key` ou un Bearer JWT. La réponse renvoie des octets WebP 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 HEIC en WebP conserve-t-elle le canal alpha ?

Oui. Si le HEIC possède un canal alpha, il est préservé dans le WebP de sortie. Le décodage utilise pillow-heif et l'encodage utilise Pillow.

### Le WebP est-il plus léger que le JPEG pour une même image ?

Le WebP obtient généralement des tailles de fichier plus petites que le JPEG à qualité équivalente. Cet endpoint encode à qualité maximale (100), ce qui n'est pas configurable.

### Pourquoi l'endpoint HEIC vers WebP 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 dépassant la taille maximale de votre forfait renvoient plutôt `413 Payload Too Large`.
