API JPEG vers HEIC#

Convertissez des images JPEG en HEIC (High Efficiency Image Container) de façon programmatique avec POST /v1/convert/jpeg-to-heic. L'endpoint accepte un envoi .jpeg ou .jpg et produit un fichier HEIC haute qualité à l'aide du codec HEIF. 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/jpeg-to-heic

Content-Type: multipart/form-data

Entrée acceptée : fichiers .jpeg or .jpg

Format de sortie : .heic (image/heic)


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 .jpeg or .jpg à 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 Pillow avec pillow-heif pour l'encodage HEIC
  • Les données de couleur RGB du JPEG sont conservées dans le fichier HEIC obtenu
  • La qualité de sortie est fixée au maximum (100)
  • Le HEIC produit généralement des fichiers plus légers que le JPEG à qualité équivalente

Réponse#

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

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

Renvoie les octets bruts de l'image.

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

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

Exemples de code#

Python#

import requests

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

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

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("photo.jpg"));

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

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

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/jpeg-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("photo.jpg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.heic", $output);

Go#

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

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/jpeg-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 .jpeg or .jpg
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 un JPG en HEIC avec une API REST ?#

Envoyez une requête POST multipart/form-data à /v1/convert/jpeg-to-heic avec votre fichier .jpeg ou .jpg 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 HEIC.

La conversion de JPEG en HEIC réduit-elle la taille du fichier ?#

Généralement oui : le HEIC produit habituellement des fichiers plus légers que le JPEG à qualité équivalente. Cet endpoint encode à qualité maximale (100) avec Pillow et pillow-heif.

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.

Pourquoi l'API renvoie-t-elle 402 Payment Required ?#

Un 402 signifie que le quota mensuel d'ops ou la limite de stockage de votre plan a été atteint. Les fichiers dépassant la taille maximale autorisée par votre plan renvoient à la place 413 Payload Too Large.