API locale

L'API locale expose JPGBoost sous forme de service HTTP/JSON sur votre machine. Elle permet de piloter l'import, les réglages et l'export depuis n'importe quel langage capable d'envoyer une requête HTTP.

Inclus dans Free

Cette fonction est disponible sur JPGBoost Free comme sur JPGBoost Pro. Sur Free, chaque image traitée compte dans le quota quotidien : 50 images par jour et 5 Mo par fichier. JPGBoost Pro lève ces deux limites.

Activer l'API

L'API est désactivée par défaut. Elle s'active en quelques secondes :

  1. Ouvrez Réglages (⌘,) puis l'onglet API locale.
  2. Cochez la case d'activation. Le serveur démarre aussitôt.
  3. Ajustez le port si nécessaire. La valeur par défaut est 51823.
  4. Copiez le jeton d'authentification affiché juste en dessous. Un bouton permet de le régénérer à tout moment.
L'API reste sur votre machine

Le port n'est ouvert que sur l'interface de bouclage. Aucun autre appareil du réseau ne peut atteindre l'API, même en connaissant votre adresse IP et votre jeton.

Authentification

Chaque requête doit porter l'en-tête Authorization avec votre jeton. Sans lui, ou avec un jeton invalide, l'API répond 401.

TOKEN="<jeton affiché dans Réglages>"
BASE="http://127.0.0.1:51823/v1"

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"

Référence des routes

Toutes les routes sont préfixées par /v1 et renvoient du JSON structuré : taille avant et après, ratio de compression, et erreur éventuelle pour chaque fichier.

MéthodeRouteRôle
GET/v1/statusNombre d'images, qualité et format globaux
POST/v1/importImporter des fichiers depuis leurs chemins
POST/v1/settingsChanger la qualité, le format ou appliquer un profil
GET/v1/imagesLister les images du lot en cours
POST/v1/exportExporter tout le lot vers un dossier
POST/v1/clearVider la liste
POST/v1/images/{id}/qualityDéfinir la qualité d'une image (null pour revenir au réglage global)
POST/v1/images/{id}/exportExporter une seule image vers un chemin précis
DELETE/v1/images/{id}Retirer une image du lot
GET/v1/profilesLister les profils d'export
POST/v1/profilesCréer ou remplacer un profil
DELETE/v1/profiles/{nom}Supprimer un profil (nom encodé pour l'URL)

Exemples pas à pas

Connaître l'état courant

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"

Importer des fichiers

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"paths": ["/chemin/vers/image1.png", "/chemin/vers/image2.jpg"]}' \
  "$BASE/import"

Changer la qualité et le format

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": 80, "format": "webp"}' \
  "$BASE/settings"

Lister les images en cours

La réponse donne, pour chaque image, son identifiant, son état, sa taille avant et après, son ratio et l'erreur éventuelle.

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/images"

Exporter le lot

L'export attend la fin de la compression en cours avant d'écrire les fichiers. Ce délai d'attente est réglable avec waitTimeoutSeconds, fixé à 30 secondes par défaut.

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"folder": "/chemin/de/sortie", "waitTimeoutSeconds": 30}' \
  "$BASE/export"

Vider la liste

curl -s -X POST -H "Authorization: Bearer $TOKEN" "$BASE/clear"

Agir sur une image précise

Chaque image possède un identifiant, renvoyé par /v1/images. Il permet de la traiter individuellement.

# Qualité propre à une image
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": 92}' \
  "$BASE/images/<id>/quality"

# Revenir au réglage global pour cette image
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": null}' \
  "$BASE/images/<id>/quality"

# Exporter une seule image vers un chemin précis
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"path": "/chemin/de/sortie/photo.webp"}' \
  "$BASE/images/<id>/export"

# Retirer une image du lot
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/images/<id>"

Profils d'export via l'API

L'API expose la même liste de profils que l'interface. Voir le guide Profils d'export pour la règle de priorité. Sur JPGBoost Free, la limite d'un seul profil s'applique aussi ici : POST /v1/profiles refuse la création d'un second profil, mais accepte toujours l'écrasement du profil existant par le même nom.

# Créer ou remplacer un profil (même nom = écrasement)
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Web JPEG", "format": "jpeg", "quality": 70, "destinationFolder": "/chemin/de/sortie"}' \
  "$BASE/profiles"

# Lister les profils
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/profiles"

# Supprimer un profil (l'espace devient %20 dans l'URL)
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/profiles/Web%20JPEG"

# Appliquer un profil aux réglages globaux
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile": "Web JPEG"}' "$BASE/settings"

# Exporter vers le dossier du profil, sans repasser "folder"
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile": "Web JPEG"}' "$BASE/export"
Noms de profils dans une URL

La route de suppression place le nom du profil dans l'URL : il doit donc être encodé. Un espace devient %20, comme dans /v1/profiles/Web%20JPEG.

Le marquage par défaut n'est pas exposé ici

Voir le profil par défaut du guide Profils d'export. Ce réglage se fait uniquement dans Réglages → Profils, jamais via POST /v1/profiles. Une mise à jour d'un profil existant par cette route préserve son statut par défaut tel quel, sans jamais le réinitialiser.

Vérifier que tout fonctionne

Deux scripts sont livrés dans l'application, sous Contents/Resources. Lancez-les avec JPGBoost ouvert et l'API activée. Ils demandent le jeton au clavier, sauf si la variable d'environnement TOKEN est déjà définie, ce qui permet de les enchaîner dans une intégration continue.

Suite de vérifications

Contrôle l'authentification, le routage et la validation des paramètres, avec une sortie ✓/✗. En lecture seule par défaut ; en lui passant une image, elle effectue en plus un véritable cycle d'import et d'export.

SCRIPTS=/Applications/JPGBoost.app/Contents/Resources

"$SCRIPTS/test_local_api.sh"
"$SCRIPTS/test_local_api.sh" /chemin/vers/image.png

Parcours guidé

Déroule pas à pas la séquence complète décrite plus haut de manière lisible, depuis le refus sans jeton jusqu'à l'export final, en passant par l'état, l'import, les réglages et la liste.

"$SCRIPTS/local_api_demo.sh" /chemin/vers/image.png
Où sont écrits les fichiers

Le parcours guidé exporte vers un dossier temporaire, dont il affiche le chemin en fin d'exécution. Rien n'est écrit dans l'application elle-même.

Sécurité et confidentialité

  • Le serveur n'écoute que sur l'interface de bouclage (127.0.0.1), c'est-à-dire qu'il n'est accessible que depuis votre Mac. Il n'est jamais exposé à Internet.
  • Aucune image ne transite par Internet. L'API pilote uniquement le moteur de compression exécuté en local.
  • Le jeton est généré sur votre machine. Régénérez-le si vous pensez qu'il a pu être divulgué, par exemple après l'avoir collé dans un script partagé.
  • Désactivez l'API lorsque vous ne l'utilisez pas : c'est son état par défaut.