Bildhosting-API: Bilder hochladen mit einer POST-Anfrage
Die Bildhosting-API von MyIMGs.org lädt ein Bild hoch und liefert den Direktlink in einer einzigen Anfrage. Sende eine Datei oder ein base64-Bild mit deinem API-Schlüssel und erhalte JSON zurück, bereit für Apps, Websites und Foren. Jedes Bild wird über ein CDN per HTTPS ausgeliefert. Der API-Zugang ist in jedem Pro-Tarif enthalten, ab $3.29 im Monat.
So bekommst du einen API-Schlüssel fürs Bildhosting
- Erstelle ein kostenloses Konto bei MyIMGs.org und bestätige deine E-Mail-Adresse.
- Wähle auf der Seite Pro-Tarife und Preise einen Tarif. Der API-Zugang gehört zu jedem Pro-Tarif.
- Öffne deine Kontoseite und wähle API-Schlüssel erstellen.
- Kopiere den Schlüssel. Er wird nur einmal angezeigt. Wenn du ihn verlierst, erstelle einen neuen Schlüssel, und der alte funktioniert nicht mehr.
Bild mit curl hochladen (Schnellstart)
Ersetze YOUR_API_KEY durch deinen Schlüssel und führe aus:
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@photo.jpg"
Die Antwort ist JSON. Nutze data.url als Direktlink zum Bild und data.viewer_url für die Seite, auf der das Bild angezeigt wird:
{
"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"
}
}
}
Referenz der Bild-Upload-API
Ein Endpunkt: POST https://myimgs.org/api/v1/upload
Authentifizierung
Sende deinen Schlüssel im Header Authorization: Bearer YOUR_API_KEY. Für Skripte, die für ImgBB geschrieben wurden, funktioniert auch ein Formularfeld key. Nutze nach Möglichkeit den Header, denn Formularfelder können in Server-Logs landen.
Anfragefelder
| Feld | Pflicht | Beschreibung |
|---|---|---|
image | Ja | Die Bilddatei (Multipart-Formulardaten) oder ein base64-String. Auch eine Data-URI wie data:image/png;base64,... wird akzeptiert. |
name | Nein | Dateiname für das gespeicherte Bild. Es bleiben nur Buchstaben, Zahlen, Bindestrich und Unterstrich erhalten. Standardmäßig der Name der hochgeladenen Datei. |
optimize | Nein | Sende 1 oder true, um JPG-, PNG- und WebP-Bilder in komprimiertes WebP umzuwandeln, wenn die Datei dadurch kleiner wird. GIFs werden nie umgewandelt. Die Antwort zeigt die endgültige Datei in data.extension und data.url. |
key | Nein | Dein API-Schlüssel, falls du den Authorization-Header nicht nutzt. |
Antwortfelder
| Feld | Beschreibung |
|---|---|
success | true, wenn das Bild gespeichert wurde. |
data.id | Kurze ID des Bildes. |
data.name | Gespeicherter Dateiname, ohne Endung. |
data.extension | jpg, png, gif oder webp, erkannt am tatsächlichen Dateiinhalt. |
data.size | Gespeicherte Größe in Bytes. |
data.optimized | true, wenn das Bild in WebP umgewandelt wurde, weil du optimize gesendet hast, sonst false. |
data.url | Direktlink zum Bild. Nutze ihn in <img>-Tags, BBCode und Apps. |
data.viewer_url | Link zur Seite, die das Bild anzeigt. data.url_viewer enthält denselben Link. |
data.title | Wie data.name. |
data.display_url | Wie data.url. |
data.width, data.height | Bildgröße in Pixeln. |
data.time | Upload-Zeitpunkt als Unix-Zeitstempel. |
data.expiration | Immer 0: Bilder laufen nicht ab. |
data.image | Die gespeicherte Datei: filename, name, mime, extension und url. |
status | Der HTTP-Statuscode, 201, wenn das Bild gespeichert wurde. |
Beispiele für die Bild-Upload-API in JavaScript, Python und PHP
JavaScript (Node.js 18 oder neuer)
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"];
Ein base64-Bild hochladen
Praktisch, wenn das Bild nur im Arbeitsspeicher existiert, zum Beispiel ein Canvas oder ein Screenshot:
curl -X POST https://myimgs.org/api/v1/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=$(base64 -w0 photo.jpg)" \
-F "name=photo"
Große Fotos laden schneller hoch, wenn sie kleiner sind. Du kannst Bilder mit dem kostenlosen Bildkomprimierer direkt im Browser komprimieren, bevor du sie sendest.
Fehler und Statuscodes der Bildhosting-API
Fehler liefern JSON wie {"success": false, "error": "message"} mit einem dieser Statuscodes:
| Status | Bedeutung |
|---|---|
| 201 | Bild gespeichert. Die Antwort enthält die Links. |
| 401 | Der API-Schlüssel fehlt oder ist falsch. |
| 403 | Das Konto hat keinen aktiven Pro-Tarif oder ist deaktiviert. |
| 413 | Das Bild ist größer als 96 MB. |
| 422 | Es wurde kein Bild gesendet, der base64-Text ist ungültig oder die Datei ist kein JPG-, PNG-, GIF- oder WebP-Bild. |
| 429 | Mehr als 60 Anfragen in einer Minute. Warte kurz und versuche es erneut. |
Limits der Bildhosting-API
| Bildgröße | 96 MB pro Bild |
|---|---|
| Formate | JPG, PNG, GIF (Animation bleibt erhalten) und WebP |
| Anfragelimit | 60 Anfragen pro Minute und Konto |
| Speicherplatz | Unbegrenzter Speicherplatz in den Pro-Tarifen |
| Auslieferung | CDN per HTTPS, Direktlinks funktionieren in Foren, auf Websites und in Apps |
| Eingabe | Datei-Upload oder base64 |
Alternative zur ImgBB-API
Wenn du schon mit der ImgBB-API hochlädst, brauchst du nur zwei Änderungen: Richte die Anfrage an https://myimgs.org/api/v1/upload und nutze deinen Schlüssel von MyIMGs.org. Die Felder key und image funktionieren genauso, und der Direktlink kommt in data.url zurück. Die Antwort nutzt außerdem die ImgBB-Namen url_viewer, display_url, title, width, height, time, expiration und image. Es gibt kein thumb, medium oder delete_url, und die API lädt kein Bild von einer URL und kennt keine Ablaufeinstellung. Pro-Tarife bringen Bilder mit 96 MB, keine Werbung und unbegrenzter Speicherplatz.
Preise der Bildhosting-API
Die API ist in jedem Pro-Tarif enthalten. Wähle den Abrechnungszeitraum, der zu dir passt:
Monatstarif
$11.49 im Monat
Jahrestarif
$6.49 im Monat
abgerechnet mit $77.88
3-Jahres-Tarif
$3.29 im Monat
abgerechnet mit $118.44
Pro-Tarife ansehen und API-Schlüssel holen
Häufige Fragen zur Bildhosting-API
Gibt es eine kostenlose Bildhosting-API?
Für Uploads per API brauchst du einen Pro-Tarif, der ab $3.29 im Monat startet. Ein kostenloses Konto hostet bis zu 20 Bilder über die Website und hat keinen API-Schlüssel.
Wie groß darf ein Bild für die API maximal sein?
96 MB pro Bild. Größere Dateien erhalten einen 413-Fehler.
Welche Bildformate akzeptiert die Bild-Upload-API?
JPG, PNG, GIF und WebP. Das Format wird aus der Datei selbst gelesen, eine Datei mit falscher Endung wird also trotzdem anhand ihres tatsächlichen Inhalts geprüft, und alles, was kein echtes Bild ist, wird abgelehnt. Animierte GIFs bleiben animiert.
Kann ich ein Bild von einer URL hochladen?
Nein. Sende die Datei als Multipart-Formulardaten oder das Bild als base64-String. Das Abrufen von URLs ist aus Sicherheitsgründen bewusst nicht vorgesehen.
Kann ich Bilder per API löschen?
Noch nicht. Der Upload ist vorerst der einzige API-Aufruf. Lösche Bilder in deinem Dashboard.
Wie ändere oder widerrufe ich meinen API-Schlüssel?
Nutze Neuen Schlüssel erstellen auf deiner Kontoseite. Der alte Schlüssel funktioniert sofort nicht mehr, und der neue wird einmal angezeigt.
Wie hoch ist das Anfragelimit der API?
60 Anfragen pro Minute und Konto. Darüber antwortet die API mit Status 429, bis die Minute vorbei ist.
Laufen Bilder ab, die per API hochgeladen wurden?
Nein. Es gibt keine Ablaufeinstellung. Bilder, die du mit deinem Schlüssel hochlädst, bleiben in deinem Konto.
Funktioniert die API mit Skripten, die für ImgBB geschrieben wurden?
Ja, für den Upload-Aufruf. Sende dieselben Felder key und image an die URL von MyIMGs.org. Die Antwort nutzt dieselben Namen für url, url_viewer, display_url, title, width, height, time, expiration und image. Es gibt kein thumb, medium oder delete_url, und die API nimmt weder eine Bild-URL noch eine Ablaufeinstellung entgegen.
MyIMGs.org ist ein kostenloser Bild-Hoster. Lade auf der Startseite ein Bild hoch, ganz ohne Konto.