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

  1. Erstelle ein kostenloses Konto bei MyIMGs.org und bestätige deine E-Mail-Adresse.
  2. Wähle auf der Seite Pro-Tarife und Preise einen Tarif. Der API-Zugang gehört zu jedem Pro-Tarif.
  3. Öffne deine Kontoseite und wähle API-Schlüssel erstellen.
  4. 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

FeldPflichtBeschreibung
imageJaDie Bilddatei (Multipart-Formulardaten) oder ein base64-String. Auch eine Data-URI wie data:image/png;base64,... wird akzeptiert.
nameNeinDateiname für das gespeicherte Bild. Es bleiben nur Buchstaben, Zahlen, Bindestrich und Unterstrich erhalten. Standardmäßig der Name der hochgeladenen Datei.
optimizeNeinSende 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.
keyNeinDein API-Schlüssel, falls du den Authorization-Header nicht nutzt.

Antwortfelder

FeldBeschreibung
successtrue, wenn das Bild gespeichert wurde.
data.idKurze ID des Bildes.
data.nameGespeicherter Dateiname, ohne Endung.
data.extensionjpg, png, gif oder webp, erkannt am tatsächlichen Dateiinhalt.
data.sizeGespeicherte Größe in Bytes.
data.optimizedtrue, wenn das Bild in WebP umgewandelt wurde, weil du optimize gesendet hast, sonst false.
data.urlDirektlink zum Bild. Nutze ihn in <img>-Tags, BBCode und Apps.
data.viewer_urlLink zur Seite, die das Bild anzeigt. data.url_viewer enthält denselben Link.
data.titleWie data.name.
data.display_urlWie data.url.
data.width, data.heightBildgröße in Pixeln.
data.timeUpload-Zeitpunkt als Unix-Zeitstempel.
data.expirationImmer 0: Bilder laufen nicht ab.
data.imageDie gespeicherte Datei: filename, name, mime, extension und url.
statusDer 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:

StatusBedeutung
201Bild gespeichert. Die Antwort enthält die Links.
401Der API-Schlüssel fehlt oder ist falsch.
403Das Konto hat keinen aktiven Pro-Tarif oder ist deaktiviert.
413Das Bild ist größer als 96 MB.
422Es wurde kein Bild gesendet, der base64-Text ist ungültig oder die Datei ist kein JPG-, PNG-, GIF- oder WebP-Bild.
429Mehr als 60 Anfragen in einer Minute. Warte kurz und versuche es erneut.

Limits der Bildhosting-API

Bildgröße96 MB pro Bild
FormateJPG, PNG, GIF (Animation bleibt erhalten) und WebP
Anfragelimit60 Anfragen pro Minute und Konto
SpeicherplatzUnbegrenzter Speicherplatz in den Pro-Tarifen
AuslieferungCDN per HTTPS, Direktlinks funktionieren in Foren, auf Websites und in Apps
EingabeDatei-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.