API d'hébergement d'images : téléverser des images avec une seule requête POST
L'API d'hébergement d'images de MyIMGs.org téléverse une image et renvoie un lien direct en une seule requête. Envoyez un fichier ou une image en base64 avec votre clé API et recevez du JSON, prêt pour vos applications, sites web et forums. Chaque image est servie par un CDN en HTTPS. L'accès à l'API est inclus dans tous les forfaits Pro, dès $3.29 par mois.
Comment obtenir une clé API d'hébergement d'images
- Créez un compte MyIMGs.org gratuit et vérifiez votre adresse e-mail.
- Choisissez un forfait sur la page forfaits Pro et prix. L'accès à l'API fait partie de tous les forfaits Pro.
- Ouvrez la page de votre compte et choisissez Créer une clé API.
- Copiez la clé. Elle ne s'affiche qu'une fois. Si vous la perdez, créez une nouvelle clé : l'ancienne cesse alors de fonctionner.
Téléverser une image avec curl (démarrage rapide)
Remplacez YOUR_API_KEY par votre clé et lancez :
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@photo.jpg"
La réponse est en JSON. Utilisez data.url comme lien direct vers l'image et data.viewer_url pour la page qui affiche l'image :
{
"success": true,
"status": 201,
"data": {
"id": "AbC12xyz",
"title": "photo",
"name": "photo",
"extension": "jpg",
"size": 245891,
"optimized": false,
"url": "https://myimgs.org/storage/images/61178/photo.jpg",
"viewer_url": "https://myimgs.org/image/AbC12xyz",
"url_viewer": "https://myimgs.org/image/AbC12xyz",
"display_url": "https://myimgs.org/storage/images/61178/photo.jpg",
"width": 1600,
"height": 1067,
"time": 1762000000,
"expiration": 0,
"image": {
"filename": "photo.jpg",
"name": "photo",
"mime": "image/jpeg",
"extension": "jpg",
"url": "https://myimgs.org/storage/images/61178/photo.jpg"
}
}
}
Référence de l'API de téléversement d'images
Un seul point d'accès : POST https://myimgs.org/api/v1/upload
Authentification
Envoyez votre clé dans l'en-tête Authorization: Bearer YOUR_API_KEY. Pour les scripts écrits pour ImgBB, un champ de formulaire key fonctionne aussi. Utilisez l'en-tête quand c'est possible, car les champs de formulaire peuvent se retrouver dans les journaux du serveur.
Champs de la requête
| Champ | Obligatoire | Description |
|---|---|---|
image | Oui | Le fichier image (multipart form data) ou une chaîne base64. Une data URI comme data:image/png;base64,... est acceptée. |
name | Non | Nom du fichier de l'image enregistrée. Seuls les lettres, chiffres, tirets et underscores sont conservés. Par défaut, le nom du fichier téléversé. |
optimize | Non | Envoyez 1 ou true pour convertir les images JPG, PNG et WebP en WebP compressé quand le fichier devient plus léger. Les GIF ne sont jamais convertis. La réponse indique le fichier final dans data.extension et data.url. |
key | Non | Votre clé API, si vous n'utilisez pas l'en-tête Authorization. |
Champs de la réponse
| Champ | Description |
|---|---|
success | true quand l'image a été enregistrée. |
data.id | ID court de l'image. |
data.name | Nom du fichier enregistré, sans extension. |
data.extension | jpg, png, gif ou webp, d'après le contenu réel du fichier. |
data.size | Taille enregistrée en octets. |
data.optimized | true quand l'image a été convertie en WebP parce que vous avez envoyé optimize, sinon false. |
data.url | Lien direct vers l'image. À utiliser dans les balises <img>, le BBCode et les applications. |
data.viewer_url | Lien vers la page qui affiche l'image. data.url_viewer contient le même lien. |
data.title | Identique à data.name. |
data.display_url | Identique à data.url. |
data.width, data.height | Taille de l'image en pixels. |
data.time | Heure du téléversement en timestamp Unix. |
data.expiration | Toujours 0 : les images n'expirent pas. |
data.image | Le fichier enregistré : filename, name, mime, extension et url. |
status | Le code de statut HTTP, 201 quand l'image a été enregistrée. |
Exemples d'API de téléversement d'images en JavaScript, Python et PHP
JavaScript (Node.js 18 ou plus récent)
import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("image", new Blob([await readFile("photo.jpg")]), "photo.jpg");
const res = await fetch("https://myimgs.org/api/v1/upload", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: form,
});
const json = await res.json();
console.log(json.data.url);
Python (requests)
import requests
r = requests.post(
"https://myimgs.org/api/v1/upload",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"image": open("photo.jpg", "rb")},
)
print(r.json()["data"]["url"])
PHP (cURL)
$ch = curl_init("https://myimgs.org/api/v1/upload");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
CURLOPT_POSTFIELDS => ["image" => new CURLFile("photo.jpg")],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
echo $data["data"]["url"];
Téléverser une image en base64
Pratique quand l'image n'existe qu'en mémoire, par exemple un canvas ou une capture d'écran :
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=$(base64 -w0 photo.jpg)" \
-F "name=photo"
Les grandes photos se téléversent plus vite quand elles sont plus légères. Vous pouvez compresser vos images dans le navigateur avec le compresseur d'images gratuit avant de les envoyer.
Erreurs et codes de statut de l'API d'hébergement d'images
Les erreurs renvoient du JSON comme {"success": false, "error": "message"} avec l'un de ces codes de statut :
| Statut | Signification |
|---|---|
| 201 | Image enregistrée. La réponse contient les liens. |
| 401 | La clé API est absente ou incorrecte. |
| 403 | Le compte n'a pas de forfait Pro actif, ou le compte est désactivé. |
| 413 | L'image dépasse 96 Mo. |
| 422 | Aucune image envoyée, le texte base64 est invalide, ou le fichier n'est pas une image JPG, PNG, GIF ou WebP. |
| 429 | Plus de 60 requêtes en une minute. Patientez puis réessayez. |
Limites de l'API d'hébergement d'images
| Taille d'image | 96 Mo par image |
|---|---|
| Formats | JPG, PNG, GIF (animation conservée) et WebP |
| Limite de requêtes | 60 requêtes par minute pour chaque compte |
| Stockage | Stockage illimité avec les forfaits Pro |
| Diffusion | CDN en HTTPS, les liens directs fonctionnent sur les forums, les sites web et les applications |
| Entrée | Fichier téléversé ou base64 |
Alternative à l'API ImgBB
Si vous téléversez déjà avec l'API ImgBB, deux changements suffisent : envoyez la requête vers https://myimgs.org/api/v1/upload et utilisez votre clé MyIMGs.org. Les champs key et image fonctionnent de la même façon, et le lien direct revient dans data.url. La réponse reprend aussi les noms d'ImgBB pour url_viewer, display_url, title, width, height, time, expiration et image. Elle ne contient pas thumb, medium ni delete_url, et elle ne récupère pas d'image depuis une URL ni ne prend de paramètre d'expiration. Les forfaits Pro ajoutent des images de 96 Mo, aucune publicité et stockage illimité.
Prix de l'API d'hébergement d'images
L'API est incluse dans tous les forfaits Pro. Choisissez la période de facturation qui vous convient :
Forfait mensuel
$11.49 par mois
Forfait annuel
$6.49 par mois
facturé $77.88
Forfait sur 3 ans
$3.29 par mois
facturé $118.44
Voir les forfaits Pro et obtenir votre clé API
FAQ de l'API d'hébergement d'images
Existe-t-il une API d'hébergement d'images gratuite ?
Le téléversement par l'API nécessite un forfait Pro, dès $3.29 par mois. Un compte gratuit héberge jusqu'à 20 images depuis le site web et n'a pas de clé API.
Quelle est la taille maximale d'une image pour l'API ?
96 Mo par image. Les fichiers plus lourds reçoivent une erreur 413.
Quels formats d'image l'API de téléversement accepte-t-elle ?
JPG, PNG, GIF et WebP. Le format est lu dans le fichier lui-même : un fichier avec une mauvaise extension est quand même vérifié d'après son contenu réel, et tout ce qui n'est pas une vraie image est refusé. Les GIF animés restent animés.
Puis-je téléverser une image depuis une URL ?
Non. Envoyez le fichier en multipart form data, ou envoyez l'image sous forme de chaîne base64. La récupération d'URL est volontairement exclue pour des raisons de sécurité.
Puis-je supprimer des images avec l'API ?
Pas encore. Le téléversement est le seul appel de l'API pour le moment. Supprimez vos images depuis votre tableau de bord.
Comment changer ou révoquer ma clé API ?
Utilisez Créer une nouvelle clé sur la page de votre compte. L'ancienne clé cesse de fonctionner immédiatement, et la nouvelle ne s'affiche qu'une fois.
Quelle est la limite de requêtes de l'API ?
60 requêtes par minute pour chaque compte. Au-delà, l'API répond avec le statut 429 jusqu'à la fin de la minute.
Les images téléversées avec l'API expirent-elles ?
Non. Il n'y a aucun paramètre d'expiration. Les images téléversées avec votre clé restent sur votre compte.
L'API fonctionne-t-elle avec les scripts écrits pour ImgBB ?
Oui pour l'appel de téléversement. Envoyez les mêmes champs key et image vers l'URL de MyIMGs.org. La réponse utilise les mêmes noms pour url, url_viewer, display_url, title, width, height, time, expiration et image. Elle ne contient pas thumb, medium ni delete_url, et elle n'accepte ni URL d'image ni paramètre d'expiration.
MyIMGs.org est un service d'hébergement d'images gratuit. Téléversez une image sur la page d'accueil sans compte.