---
seo_title: HEIC-zu-JPG-API: iPhone-Fotos in JPEG umwandeln | EnConvert
meta_desc: Konvertieren Sie HEIC zu JPG mit einer REST-API. POST /v1/convert/heic-to-jpeg dekodiert .heic/.heif-Dateien zu hochwertigem JPEG als Bytes oder presigned URL.
keywords: heic in jpg umwandeln api, heic zu jpeg api, heic programmatisch in jpg konvertieren, iphone fotos konvertieren api, heic converter rest api, heif zu jpeg api, heic dekodieren api, heic zu jpg python
---

# HEIC-zu-JPG-API

Konvertieren Sie HEIC-/HEIF-Bilder programmatisch mit `POST /v1/convert/heic-to-jpeg` zu JPEG. Der Endpunkt akzeptiert einen `.heic`- oder `.heif`-Upload, dekodiert ihn und erzeugt ein hochwertiges JPEG. Die Antwort enthält entweder rohe Bilddaten zum direkten Download oder JSON-Metadaten mit einer presigned Download-URL.

---

## Endpunkt

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

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

**Akzeptierte Eingabe:** `.heic or .heif`-Dateien

**Ausgabeformat:** `.jpeg` (`image/jpeg`)

---

## Authentifizierung

Erfordert entweder einen privaten API-Schlüssel oder ein JWT-Token eines öffentlichen Schlüssels.

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

Oder:

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

---

## Request-Parameter

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|-----------|------|----------|---------|-------------|
| `file` | Datei | Ja | -- | Die zu konvertierende `.heic or .heif`-Bilddatei. |
| `output_filename` | `string` | Nein | Eingabedateiname | Benutzerdefinierter Ausgabedateiname. Die Endung `.jpeg` wird automatisch angehängt. |
| `direct_download` | `boolean` | Nein | `true` | Bei `true` werden rohe Bilddaten zurückgegeben. Bei `false` werden JSON-Metadaten mit einer presigned Download-URL zurückgegeben. |

---

## Details zur Konvertierung

- Verwendet **pillow-heif** zur HEIC-Dekodierung und **Pillow** zur JPEG-Kodierung
- Hat das HEIC-Bild einen Alphakanal, werden transparente Bereiche auf einen **weißen Hintergrund** gelegt
- Die Ausgabequalität ist auf Maximum (100) eingestellt


---

## Antwort

### Direkter Download (`direct_download=true`, Standard)

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

Liefert rohe Bilddaten.

### Metadaten-Antwort (`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
}
```

---

## Code-Beispiele

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

---

## Fehlerantworten

| Status | Bedingung |
|--------|-----------|
| `400 Bad Request` | Datei ist keine `.heic or .heif`-Datei |
| `400 Bad Request` | Bildkonvertierung fehlgeschlagen (beschädigte oder nicht unterstützte Datei) |
| `401 Unauthorized` | Fehlender oder ungültiger API-Schlüssel / JWT-Token |
| `402 Payment Required` | Monatliches Ops-Kontingent aufgebraucht |
| `402 Payment Required` | Speicherlimit erreicht |
| `413 Payload Too Large` | Datei überschreitet die maximale Dateigröße des Plans |

---

## Limits

| Limit | Wert |
|-------|-------|
| Maximale Dateigröße | Abhängig vom Plan (Founding: 5 MB) |
| Ausgabequalität | Maximum (nicht konfigurierbar) |
| Monatliche Konvertierungen | Abhängig vom Plan |

---

## Häufig gestellte Fragen

### Wie konvertiere ich HEIC mit einer REST-API zu JPG?

Senden Sie einen `multipart/form-data`-POST-Request an `/v1/convert/heic-to-jpeg` mit Ihrer `.heic`- oder `.heif`-Datei im Feld `file`, authentifiziert über `X-API-Key` oder ein `Bearer`-JWT-Token. Standardmäßig antwortet die API mit den rohen JPEG-Bytes.

### Akzeptiert die API sowohl .heic- als auch .heif-Dateien?

Ja. Der Parameter `file` akzeptiert `.heic`- oder `.heif`-Dateien; alles andere liefert `400 Bad Request`. Die Dekodierung erfolgt mit pillow-heif, die JPEG-Kodierung mit Pillow.

### Was passiert, wenn das HEIC-Bild Transparenz enthält?

JPEG unterstützt keine Transparenz. Hat das HEIC-Bild also einen Alphakanal, werden transparente Bereiche in der Ausgabe auf einen weißen Hintergrund gelegt.

### Kann ich eine Download-URL statt roher Bilddaten erhalten?

Ja. Setzen Sie `direct_download=false`, dann liefert die API JSON-Metadaten mit `presigned_url`, `object_key`, `filename`, `file_size` und `conversion_time_seconds`.
