API-Dokumentation
Mit der YourImageShare-API kannst du Dateien per Code hochladen, auflisten und löschen. Es ist eine kleine JSON/REST-API – kein SDK nötig, nur ein HTTP-Client und ein API-Schlüssel. Offizielle JavaScript-, Python- und MCP-Bibliotheken gibt es ebenfalls.
Alle Client-Bibliotheken und die Tools unten sind Open Source. Den Code findest du in unserem offiziellen GitHub-Repository, dort kannst du auch Probleme melden oder mitmachen: github.com/yourimageshare/yourimageshare.
Basis-URL: https://yourimageshare.com/api · Format: JSON bei Anfrage und Antwort, außer bei Uploads, die multipart/form-data nutzen · Auth: ein API-Schlüssel bei jeder Anfrage. · Maschinenlesbare Spezifikation: /openapi.json (OpenAPI 3.1), für Agenten und Codegenerierungs-Tools, die diese Seite lieber nicht auswerten.
API-Schlüssel erhalten
Melde dich an, geh zu Mein Konto und öffne den Tab API. Dort siehst du deinen Schlüssel und eine Schaltfläche Neu generieren. Wenn du einen Schlüssel neu generierst, wird der alte sofort ungültig – aktualisiere ihn also überall, wo du ihn verwendest, bevor du klickst.
In diesem Tab gibt es außerdem einen zweiten, unabhängigen Nur-Upload-Schlüssel – siehe den Tipp unten und Forum-Plugins, wann du ihn stattdessen verwenden solltest.
Authentifizierung
Sende deinen Schlüssel als Header – das ist die bevorzugte Variante, denn Query-Strings landen gern in Zugriffs- und Proxy-Logs und in Referer-Headern:
X-API-Key: YOUR_API_KEY Ein Query-Parameter ?key= funktioniert ebenfalls, er bleibt für ältere Integrationen und schnelle einmalige curl-Befehle erhalten. Sind beide vorhanden, hat der Header Vorrang.
?key=YOUR_API_KEY Tipp: Behandle deinen Schlüssel wie ein Passwort – wer ihn hat, kann in deinem Konto hochladen, auflisten, ändern und löschen. Jede erfolgreiche Anfrage wird protokolliert und im Tab API deiner Kontoseite als Diagramm angezeigt, aufgeschlüsselt nach Tag und Anfragetyp. Muss ein Schlüssel irgendwo liegen, wo andere ihn sehen können – etwa in einem Forum-Plugin oder einer öffentlichen Konfigurationsdatei –, nimm stattdessen den Nur-Upload-Schlüssel aus demselben Tab: Er kann nur hochladen – Auflisten, Abrufen, Ändern und Löschen von Uploads lehnen ihn mit einem 401 ab.
Endpunkte
Hochladen, Auflisten und Löschen verwenden dieselbe Authentifizierung und dieselben Limits; große Dateien kannst du vorher in Teilen senden.
POST /api – Datei hochladen
Lädt eine einzelne Datei für das authentifizierte Konto hoch.
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
uploads | file | eines von diesen dreien | Die hochzuladende Datei, bis zu 100MB (das Limit für eine einzelne Anfrage über unser Netzwerk). Eine Datei pro Anfrage – dieser Endpunkt lädt nicht mehrere Dateien auf einmal hoch. |
url | string | Ein öffentlicher http(s)-Link zu einem Bild oder Video. Wir laden es selbst herunter, daher funktionieren Dateien bis zu 200MB. | |
upload_id | string | Eine Datei, die du vorher in Teilen an POST /api/chunk gesendet hast, bis zu 200MB. | |
filename | string | nein | Zusammen mit upload_id: der ursprüngliche Dateiname. |
expires_in | integer | nein | Löscht diesen Upload nach so vielen Sekunden automatisch (60 bis 31.536.000, also 1 Minute bis 1 Jahr). Lass das Feld weg für einen normalen, dauerhaften Upload. |
allow_duplicate | boolean | nein | Speichert eine neue Kopie, auch wenn dein Konto exakt dieselbe Datei schon hochgeladen hat (siehe duplicate unten). |
keep_original | boolean | nein | Behält das Bild genau so, wie es hochgeladen wurde. Ohne diese Option werden JPG/PNG-Dateien über 1 MB zu WebP optimiert. Metadaten wie GPS werden in jedem Fall entfernt. |
visibility | string | nein | unlisted (Standard): Die Datei und ihre Seite funktionieren für alle mit dem Link, werden aber nirgends aufgelistet. private: nur die Datei – der Seitenlink leitet alle außer dir direkt zur Datei weiter (keine Kommentare, Reaktionen oder Werbung). public: auf der Website aufgelistet und indexierbar. |
title | string | nein | Bis zu 90 Zeichen, wird auf der Seite des Uploads angezeigt. |
description | string | nein | Bis zu 500 Zeichen. |
Akzeptierte Typen: JPG, PNG, GIF, WEBP, AVIF, BMP, TIFF, HEIC oder HEIF-Bilder; MP4, WEBM, AVI, MOV, MKV, MPEG, WMV, FLV oder 3GP-Video (die genaue Liste kann sich mit der Zeit erweitern). HEIC/HEIF und TIFF werden als WebP gespeichert, Video außer MP4/WebM wird in MP4 umgewandelt, und größere JPEG/PNG-Bilder werden kurz nach dem Hochladen in WebP umgewandelt, wenn sie dadurch spürbar kleiner werden. Maximale Größe: 200MB; zu große oder nicht lesbare Dateien werden mit einem 422 abgelehnt.
Antwort – 200 OK:
{
"type": "success",
"msg": "success",
"data": {
"id": "aB3xY9qRz1",
"type": "image",
"path": "https://i.yourimageshare.com/aB3xY9qRz1.png",
"src": "https://yourimageshare.com/ib/aB3xY9qRz1.png",
"direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
"thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
"width": 1920,
"height": 1080,
"size": 482113,
"locked": false,
"visibility": "unlisted",
"title": null,
"description": null,
"expires_at": null,
"duplicate": false,
"delete_url": "https://yourimageshare.com/delete#iV3x...k9"
}
} | Feld | Beschreibung |
|---|---|
id | Die eindeutige Kennung der Datei. |
type | image oder video. |
path | Die Speicher-URL der Datei, wie sie hochgeladen wurde. Sie kann sich kurz danach ändern, wenn die Datei umgewandelt wird (WebP/MP4), also speichere src, nicht path. |
src | Dauerhafte direkte Datei-URL – öffnet immer die aktuelle Datei, geeignet als src für <img>/<video> und zum Speichern. |
direct | Die Seite der Datei auf YourImageShare (Titel, Beschreibung, Kommentare, Teilen-Optionen). |
thumb | Ein 280px breites WebP-Vorschaubild (bei einem Video das erste Bild) oder null. |
width, height | Anzeigegröße in Pixeln (aufrecht; bei einem Video die Bildgröße) oder null, wenn unbekannt. |
size | Dateigröße in Bytes, wie gespeichert. |
locked | true, wenn der Upload passwortgeschützt ist. |
visibility | private, unlisted oder public (siehe Anfragefeld oben). |
title, description | Wie gesetzt oder null. Texte durchlaufen dieselbe Moderation wie auf der Website. |
delete_url | Nur bei neuen Uploads: ein privater Link, der diesen Upload ohne API-Schlüssel löscht. Er wird nur einmal angezeigt (gespeichert wird nur ein Hash) – bewahre ihn auf, wenn du ihn brauchst. |
expires_at | ISO-8601-Zeitstempel, zu dem dieser Upload automatisch gelöscht wird, oder null, wenn er nicht abläuft. |
duplicate | true, wenn dein Konto exakt dieselbe Datei schon hochgeladen hatte: Dann wird dieser Upload zurückgegeben und nichts Neues gespeichert. Gilt nicht für ablaufende Uploads oder mit allow_duplicate=1. |
Ablaufende Uploads: Sobald expires_at erreicht ist, wird die Datei aus dem Speicher gelöscht, und die Seite des Uploads liefert innerhalb von etwa 5 Minuten 410 Gone. Das lässt sich nachträglich nicht rückgängig machen oder verlängern – lösche früher mit dem DELETE-Endpunkt, wenn du die Datei eher entfernen willst, oder lade sie mit einem neuen expires_in erneut hoch, wenn sie länger bestehen soll.
POST /api/chunk – Große Dateien
Eine einzelne Anfrage kann höchstens 100MB enthalten. Bei größeren Dateien (bis zu 200MB) oder um bei einer langsamen Verbindung jede Anfrage klein zu halten, sendest du die Datei in Teilen von höchstens 5MB und schließt dann mit POST /api ab:
- Wähle eine Upload-ID: 32 zufällige Hex-Zeichen.
- Sende für jedes Teil
POST /api/chunk(multipart/form-data) mitupload_id,index(ab 0),total(Anzahl der Teile) und den Bytes inchunk. Die Antwort lautet{"type": "success", "chunk_size": 5242880}. - Sende
POST /apimitupload_idundfilenamestattuploads, plus beliebige weitere Upload-Felder. Die Antwort ist die normale Upload-Antwort.
Teile eines nicht abgeschlossenen Uploads werden nach 2 Stunden gelöscht. Nur das abschließende POST /api zählt für die Upload-Limits.
GET /api/{id} und PATCH /api/{id} – Ein Upload
GET gibt einen deiner Uploads mit denselben Feldern wie die Liste unten zurück. PATCH ändert visibility, title oder description (Formularfelder oder JSON; ein leerer Titel oder eine leere Beschreibung löscht den Wert) und antwortet mit dem aktualisierten Upload. Beide brauchen den vollständigen API-Schlüssel; 404, wenn es in deinem Konto keinen solchen Upload gibt.
curl -X PATCH https://yourimageshare.com/api/aB3xY9qRz1 \
-H "X-API-Key: YOUR_API_KEY" -d visibility=public -d title="Sunset" POST /api/{id}/replace – Datei ersetzen
Tauscht die Datei hinter einem deiner Uploads aus und behält ID, Seite und alle Links. Jeder erlaubte Typ funktioniert, auch ein anderer (aus einem Bild kann ein Video werden). Sende die neue Datei als uploads (oder upload_id einer Datei, die du mit POST /api/chunk in Teilen gesendet hast); keep_original funktioniert wie beim Hochladen. Die neue Datei durchläuft dieselben Prüfungen und Umwandlungen wie ein neuer Upload, und die bisherige Version wird entfernt. Braucht den vollständigen API-Schlüssel; 404, wenn es in deinem Konto keinen solchen Upload gibt, 409, wenn er passwortgeschützt oder auf eine Anzahl von Aufrufen begrenzt ist.
curl -X POST https://yourimageshare.com/api/aB3xY9qRz1/replace \
-H "X-API-Key: YOUR_API_KEY" -F uploads=@new-version.png GET /api – Deine Uploads auflisten
Gibt eine seitenweise Liste der Uploads des authentifizierten Kontos zurück (aus jeder Quelle – API, Website oder Editor), die neuesten zuerst, 50 pro Seite.
| Parameter | In | Erforderlich | Beschreibung |
|---|---|---|---|
page | query | nein | Seitenzahl, Standard ist 1. |
Antwort – 200 OK:
{
"type": "success",
"data": [
{
"id": "aB3xY9qRz1",
"type": "image",
"title": null,
"path": "https://i.yourimageshare.com/aB3xY9qRz1.webp",
"src": "https://yourimageshare.com/ib/aB3xY9qRz1.webp",
"direct": "https://yourimageshare.com/ib/aB3xY9qRz1",
"thumb": "https://i.yourimageshare.com/thumb-aB3xY9qRz1.webp",
"width": 1920,
"height": 1080,
"size": 482113,
"locked": false,
"visibility": "unlisted",
"description": null,
"expires_at": null,
"created_at": "2026-07-23T15:43:28+01:00"
}
],
"meta": { "current_page": 1, "last_page": 1, "total": 1 }
} Die Felder bedeuten hier dasselbe wie in der obigen Upload-Antwort (bei einem passwortgeschützten Upload sind path und thumb kurzlebige signierte Links). Um einen Upload anhand seiner id abzurufen, nutze GET /api/{id}.
DELETE /api/{id} – Upload löschen
Löscht einen Upload des authentifizierten Kontos endgültig. Über die API lässt sich das nicht rückgängig machen. {id} ist der Wert, der von den Upload- oder Listen-Endpunkten als id zurückgegeben wird.
Antwort – 200 OK:
{ "type": "success", "msg": "Deleted." } 404, wenn es in deinem Konto keinen Upload mit dieser ID gibt (entweder gehörte er nie dir, oder er wurde schon gelöscht).
POST /api/compare – Vorher/Nachher-Schieberegler
Erstellt einen Vorher/Nachher-Vergleich aus zwei deiner eigenen Bild-Uploads: eine Seite mit Schieberegler unter /c/{id}, die sich auch in jede Website einbetten lässt. Der Nur-Upload-Schlüssel funktioniert ebenfalls. Sende before und after (Upload-IDs, erforderlich) und optional title, label_before und label_after (Standard: „Before“ und „After“).
Antwort – 201 Created:
{
"type": "success",
"id": "P7uAYy04VA",
"url": "https://yourimageshare.com/c/P7uAYy04VA",
"embed_url": "https://yourimageshare.com/embed/c/P7uAYy04VA",
"embed": { "script": "<blockquote class=\"YISEmbed\" ...", "iframe": "<iframe ..." }
} 422, wenn eine der IDs nicht zu einem deiner Bild-Uploads gehört (Videos und passwortgeschützte Bilder können nicht verwendet werden).
Limits
Jeder API-Schlüssel hat eigene Kontingente pro Minute und pro Tag, dazu eine gröbere Tagesobergrenze pro IP als Absicherung, falls eine IP mehrere Schlüssel durchprobiert. Hochladen, Auflisten und Löschen teilen sich dieselben Limits.
| Zeitraum | Standardlimit | Geltungsbereich |
|---|---|---|
| Pro Minute | 20 Anfragen | pro API-Schlüssel |
| Pro Tag | 500 Anfragen | pro vollständigem API-Schlüssel |
| Pro Tag | 2.000 Anfragen | pro Nur-Upload-Schlüssel (Plugins, die ganze Mediatheken auslagern) |
| Pro Tag | 2.000 Anfragen | pro IP-Adresse |
| Pro Minute | 300 Teile | pro API-Schlüssel, nur POST /api/chunk |
Diese Limits können sich ändern. Jede Antwort enthält die üblichen Rate-Limit-Header:
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 14 Wird ein Limit überschritten, kommt ein 429 mit einem Retry-After-Header, der dir sagt, wie viele Sekunden du warten sollst.
Fehler
Jede Fehlerantwort hat dieselbe Form, unabhängig von Endpunkt oder Ursache:
{ "type": "error", "errors": "A human-readable description of what went wrong." } | Status | Bedeutung |
|---|---|
| 401 | API-Schlüssel fehlt oder ist ungültig. |
| 403 | Das Konto oder deine aktuelle IP wurde vom Hochladen gesperrt. |
| 404 | Für diese ID wurde in diesem Konto kein passender Upload gefunden (Abrufen, Ändern, Löschen). |
| 413 | Die Anfrage ist größer als 100MB. Sende die Datei stattdessen in Teilen (POST /api/chunk) oder einen Link dazu in url (bis zu 200MB). |
| 422 | Validierungsfehler – keine Datei oder kein Link angegeben, nicht unterstützter Dateityp, nicht lesbare Bilddaten, Abmessungen über dem Limit von 30000x30000px, eine Datei über 200MB, eine nicht abgeschlossene oder abgelaufene upload_id oder eine url, die nicht heruntergeladen werden konnte (die Meldung nennt den Grund). |
| 429 | Limit überschritten – siehe Limits oben. |
| 500 | Auf dem Server ist unerwartet etwas fehlgeschlagen. Du kannst es gefahrlos erneut versuchen. |
Client-Bibliotheken
Offizielle SDKs, die die obigen Endpunkte mit typisierten Ergebnissen kapseln und bei API-Fehlern Ausnahmen auslösen, statt dass du rohes HTTP behandeln musst.
JavaScript / TypeScript
Keine Abhängigkeiten, funktioniert in Node.js und Browsern. Auch auf JSR als @yourimageshare/yourimageshare – npx jsr add @yourimageshare/yourimageshare – derselbe Quellcode, direkt als TypeScript veröffentlicht.
npm install yourimageshare Python
Eine Abhängigkeit (requests), Python 3.8+.
pip install yourimageshare PHP
Keine Composer-Abhängigkeiten (nutzt PHPs eigene curl-Erweiterung), PHP 7.4+. Quellcode auf GitHub.
composer require yourimageshare/yourimageshare-php Go
Keine Abhängigkeiten (nur Standardbibliothek), Go 1.18+. Die vollständige Referenz findest du auf pkg.go.dev.
go get github.com/yourimageshare/yourimageshare/go Rust
Zwei Abhängigkeiten (ureq für blockierendes HTTP – es wird keine Async-Runtime eingebunden – plus serde), Rust 1.70+. Quellcode auf GitHub.
cargo add yourimageshare Ruby
Keine Gem-Abhängigkeiten (Standardbibliothek Net::HTTP + json), Ruby 2.7+. Quellcode auf GitHub.
gem install yourimageshare .NET
Eine Abhängigkeit (Microsofts eigenes System.Text.Json), zielt auf netstandard2.0, funktioniert also mit .NET Framework und modernem .NET. Quellcode auf GitHub. Gegen diese Live-API gebaut und geprüft; die Veröffentlichung auf NuGet folgt in Kürze.
dotnet add package YourImageShare Dart / Flutter
Eine Abhängigkeit (http, das eigene Paket des Dart-Teams), Dart 2.17+. Quellcode auf GitHub. Gegen diese Live-API gebaut und geprüft; die Veröffentlichung auf pub.dev folgt in Kürze.
dart pub add yourimageshare Elixir
Eine Abhängigkeit (Req), Elixir 1.14+. Gibt {:ok, result}| {:error, reason}-Tupel zurück – das direkte Gegenstück zur Fehlerbehandlung dieser API in allen anderen SDKs – plus Bang-Varianten, die Ausnahmen auslösen. Quellcode auf GitHub, Dokumentation auf HexDocs.
{:yourimageshare, "~> 1.1"} MCP-Server
Für KI-Coding-Agenten (Claude Code, Cursor und andere MCP-kompatible Tools) – füge einen Screenshot in einen Fehlerbericht, eine PR-Beschreibung oder einen Support-Thread als echte URL ein statt als Base64-Blob oder manuellen Upload-Schritt. Funktioniert genauso mit Claude Desktop und jedem anderen MCP-Client.
Gehostet, nichts zu installieren: Füge ihn als Remote-MCP-Server hinzu (in Claude: Einstellungen › Konnektoren › Eigenen Konnektor hinzufügen; ebenso in ChatGPT, Cursor, VS Code und anderen Clients, die eine Server-URL annehmen), mit deinem API-Schlüssel in der URL:
https://yourimageshare.com/mcp?key=YOUR_API_KEY Clients, in denen du Header setzen kannst, können stattdessen https://yourimageshare.com/mcp mit Authorization: Bearer YOUR_API_KEY verwenden. Die URL mit deinem Schlüssel funktioniert wie ein Passwort: Halte sie geheim und hole dir unter Mein Konto einen neuen Schlüssel, falls sie bekannt wird. Auf dem gehosteten Server nimmt upload_image einen öffentlichen Link (bis zu 200MB) oder Inline-Base64-Inhalt (bis zu 15MB). Ohne Schlüssel lädt https://yourimageshare.com/mcp weiterhin anonym hoch, wie die Website: nur nicht gelistet oder privat, niedrigere Limits, und der Upload wird mit der delete_url gelöscht, die zurückgegeben wird. Die anderen Tools brauchen einen Schlüssel.
Lokal: Starte ihn direkt mit npx, ohne Installationsschritt (er kann auch Dateien von deiner Festplatte lesen):
npx yourimageshare-mcp Tools: upload_image (eine lokale Datei, Inline-Inhalt oder ein Link, bis zu 200MB, mit optionaler Sichtbarkeit, Titel und automatischem Löschen), list_uploads, get_upload, update_upload und delete_upload.
Auch in der offiziellen MCP-Registry (als io.github.yourimageshare/yourimageshare) und gelistet auf Smithery und Glama, falls dein MCP-Client von dort installiert.
Neu bei MCP? In So verbindest du Claude und ChatGPT per MCP mit dieser API findest du eine vollständige Einrichtungsanleitung.
Alle zehn stehen unter der MIT-Lizenz. Keine offizielle Bibliothek für deine Sprache? Die Codebeispiele unten zeigen, wie du die API direkt aufrufst.
Codebeispiele
curl
# Upload a file
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "uploads=@/path/to/photo.jpg"
# Upload from a link (files up to 200MB; one direct upload request stops at 100MB -
# bigger files go in pieces, see Large Files above)
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "url=https://example.com/video.mp4"
# Upload a file that auto-deletes after 1 hour
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "uploads=@/path/to/photo.jpg" \
-F "expires_in=3600"
# List uploads
curl "https://yourimageshare.com/api" -H "X-API-Key: YOUR_API_KEY"
# Upload a file without a page of its own (file only) and give it a title
curl "https://yourimageshare.com/api" \
-H "X-API-Key: YOUR_API_KEY" \
-F "uploads=@/path/to/photo.jpg" \
-F "visibility=private" \
-F "title=Sunset"
# Look up one upload, then make it public
curl "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY"
curl -X PATCH "https://yourimageshare.com/api/aB3xY9qRz1" \
-H "X-API-Key: YOUR_API_KEY" -d "visibility=public"
# Delete an upload
curl -X DELETE "https://yourimageshare.com/api/aB3xY9qRz1" -H "X-API-Key: YOUR_API_KEY" JavaScript (fetch)
const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://yourimageshare.com/api';
async function uploadFile(file) {
const form = new FormData();
form.append('uploads', file);
const res = await fetch(BASE, {
method: 'POST',
headers: { 'X-API-Key': API_KEY },
body: form,
});
const json = await res.json();
if (json.type !== 'success') throw new Error(json.errors);
return json.data;
}
async function listUploads(page = 1) {
const res = await fetch(`${BASE}?page=${page}`, {
headers: { 'X-API-Key': API_KEY },
});
return res.json();
}
async function deleteUpload(id) {
const res = await fetch(`${BASE}/${id}`, {
method: 'DELETE',
headers: { 'X-API-Key': API_KEY },
});
return res.json();
} Python (requests)
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://yourimageshare.com/api"
HEADERS = {"X-API-Key": API_KEY}
# Upload a file
with open("/path/to/photo.jpg", "rb") as f:
res = requests.post(BASE, headers=HEADERS, files={"uploads": f})
res.raise_for_status()
upload = res.json()["data"]
# List uploads
res = requests.get(BASE, headers=HEADERS, params={"page": 1})
uploads = res.json()
# Delete an upload
res = requests.delete(f"{BASE}/{upload['id']}", headers=HEADERS) PHP (curl)
<?php
$apiKey = 'YOUR_API_KEY';
$base = 'https://yourimageshare.com/api';
// Upload a file
$curl = curl_init($base);
curl_setopt_array($curl, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-API-Key: $apiKey"],
CURLOPT_POSTFIELDS => ['uploads' => new CURLFile('/path/to/photo.jpg')],
CURLOPT_RETURNTRANSFER => true,
]);
$upload = json_decode(curl_exec($curl), true)['data'];
curl_close($curl);
// List uploads
$curl = curl_init("$base?page=1");
curl_setopt($curl, CURLOPT_HTTPHEADER, ["X-API-Key: $apiKey"]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$uploads = json_decode(curl_exec($curl), true);
curl_close($curl); Go (net/http)
Das offizielle Go-SDK oben nimmt dir das ab – diese rohe Variante ist für alle da, die die Abhängigkeit lieber nicht hinzufügen möchten.
package main
import (
"bytes"
"encoding/json"
"io"
"mime/multipart"
"net/http"
"os"
)
const apiKey = "YOUR_API_KEY"
const base = "https://yourimageshare.com/api"
func uploadFile(path string) (map[string]any, error) {
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer file.Close()
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("uploads", path)
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", base, body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", apiKey)
res, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer res.Body.Close()
var result map[string]any
json.NewDecoder(res.Body).Decode(&result)
return result, nil
} Screenshot-Tools
Eine Browser-Erweiterung plus fertige Konfigurationen und Skripte, mit denen du Screenshots direkt zu YourImageShare schickst, ganz ohne manuelles Hochladen. Alle laden über denselben oben dokumentierten /api-Endpunkt hoch.
Browser-Erweiterung (Chrome & Firefox)
Die Erweiterung YourImageShare Capture für Chrome und Firefox kommt ganz ohne Skripte und Konfigurationsdateien aus. Sie nimmt den sichtbaren Bereich, einen per Ziehen gewählten Ausschnitt oder eine ganze scrollende Seite auf und öffnet einen integrierten Editor für Pfeile, Text, Verpixeln/Schwärzen und andere Markierungen. Danach lädst du das Ergebnis herunter, kopierst es in die Zwischenablage oder veröffentlichst es mit einem Klick direkt auf YourImageShare. Das Veröffentlichen nutzt denselben oben dokumentierten /api-Endpunkt – trage deinen API-Schlüssel einmal in den Einstellungen der Erweiterung ein, und jede Veröffentlichung liefert danach sofort einen teilbaren Link. Funktioniert in Chrome am PC (und anderen Chromium-Browsern), Firefox am PC und Firefox für Android.
YourImageShare Capture für Firefox holen YourImageShare Capture für Chrome holen
ShareX
Lade den benutzerdefinierten Uploader unten herunter, geh dann in ShareX zu Destinations > Custom uploader settings > Import > from file, öffne die heruntergeladene .sxcu-Datei und ersetze YOUR_API_KEY im Feld Headers durch deinen echten Schlüssel. Lege sie als Ziel für Bilder/Dateien fest, und Aufnahmen werden automatisch hochgeladen.
YourImageShare.sxcu herunterladen
Löschen: Der „Delete“-Link von ShareX für jeden Upload öffnet unsere Löschseite in deinem Browser (die einmalige delete_url des Uploads), sodass du eine Aufnahme direkt aus dem Verlauf von ShareX entfernen kannst. Du kannst Uploads auch unter Mein Konto löschen. Hast du die Konfiguration vor Oktober 2026 heruntergeladen? Lade sie erneut herunter, um das zu bekommen.
Flameshot (Linux)
Ein kleines Shell-Skript, das flameshot gui startet, die Aufnahme hochlädt und den Link in deine Zwischenablage kopiert. Verknüpfe es in deiner Desktop-Umgebung mit einem Tastenkürzel anstelle des Standard-Kürzels von Flameshot.
yis-flameshot-upload.sh herunterladen
# One-time setup
chmod +x yis-flameshot-upload.sh
export YIS_API_KEY="YOUR_API_KEY" # or add to ~/.config/yourimageshare/api_key
# Then bind this to a hotkey instead of calling flameshot directly:
/path/to/yis-flameshot-upload.sh Greenshot (Windows)
Ein PowerShell-Skript für das eingebaute Ziel External command von Greenshot. Kompatibel mit der Windows PowerShell 5.1, die mit Windows ausgeliefert wird, keine zusätzliche Installation nötig.
yis-greenshot-upload.ps1 herunterladen
# One-time setup
setx YIS_API_KEY "YOUR_API_KEY"
# In Greenshot: Preferences > Destinations > External command > Settings
# Command: powershell.exe
# Arguments: -ExecutionPolicy Bypass -File "C:\path\to\yis-greenshot-upload.ps1" "%1" Forum-Plugins
Füge neben dem Beitragseditor deines Forums einen echten Button „Bild hochladen“ hinzu. Jedes Plugin lädt über denselben oben dokumentierten /api-Endpunkt hoch und fügt BBCode an der Cursorposition ein – kein separater Tab, kein manuelles Kopieren und Einfügen.
Verwende unten deinen Nur-Upload-Schlüssel, nicht deinen API-Schlüssel. Jedes Plugin schreibt den Schlüssel in den Seitenquelltext für jeden Besucher, und der Nur-Upload-Schlüssel (Mein Konto > Tab API) kann nur hochladen – er kann deine Uploads nicht auflisten oder löschen, selbst wenn ihn jemand aus der Seite kopiert.
Forum-Uploads sind standardmäßig privat: Das Bild funktioniert im Beitrag, aber YourImageShare legt dafür keine eigene Seite an (keine Kommentare, Reaktionen oder Werbung). Jedes Plugin hat eine Einstellung, um auf unlisted umzustellen, falls du auch eine Seite für alle mit dem Link möchtest.
phpBB
Eine echte Erweiterung für phpBB 3.2/3.3. Entpacke sie nach ext/, aktiviere sie unter Customise > Manage extensions und ersetze dann YOUR_UPLOAD_ONLY_KEY in der Template-Event-Datei der Erweiterung durch deinen echten Nur-Upload-Schlüssel.
SMF (Simple Machines Forum)
Ein echtes SMF-Paket – installiere es über Admin > Package Manager und ersetze dann YOUR_UPLOAD_ONLY_KEY in Sources/yis_forumupload.php durch deinen echten Nur-Upload-Schlüssel.
MyBB
Ein echtes Plugin für MyBB 1.8. Kopiere es nach inc/plugins/, aktiviere es unter Configuration > Plugins und ersetze dann YOUR_UPLOAD_ONLY_KEY in der Plugin-Datei durch deinen echten Nur-Upload- Schlüssel.
FluxBB, PunBB & ZetaBoards
Diese haben kein formelles Plugin-System, daher ist es ein kleines Snippet, das du direkt in dein Template (FluxBB/PunBB) oder in das Admin-CP (ZetaBoards) einfügst – vollständige Anleitungen zum Kopieren und Einfügen für jedes:
Anleitung für FluxBB Anleitung für PunBB Anleitung für ZetaBoards
WordPress-Plugin
Lagere deine Mediathek zu YourImageShare aus, statt sie auf der lokalen Festplatte zu speichern. Neue Bild-/Video-Uploads laufen automatisch über denselben /api-Endpunkt, der oben dokumentiert ist, die lokale Datei (und jede erzeugte Vorschaugröße) wird gelöscht, sobald der Upload bestätigt ist, und jede WordPress- Anhangs-URL – im Block-Editor, bei Beitragsbildern, in Galerien und in der REST-API – zeigt auf die bei YourImageShare gehostete Datei. Kein Shortcode, keine Änderung im Ablauf.
- Eine bestehende Mediathek im Hintergrund (oder mit
wp yis offload --all) komplett auslagern, nicht nur neue Uploads - Bilder und Videos, die schon in Beiträgen stehen, funktionieren weiter, nachdem ihre lokalen Dateien entfernt wurden
- Vorschaubilder und srcset nutzen unser 280px-Vorschaubild, sodass kleine Bildplätze keine Dateien in voller Größe laden
- Dateien bis zu 200MB, in Teilen gesendet, damit große Videos einen Shared Host nie überlasten
- Jede ausgelagerte Datei lässt sich jederzeit zurück in den lokalen Speicher holen
- Eine Spalte in der Mediathek zeigt, was ausgelagert und was noch lokal ist
- Ausgelagerte Dateien werden als privat gespeichert: Sie laden überall, wo deine Website sie nutzt, bekommen aber keine eigene Seite auf YourImageShare
Verwendet deinen Nur-Upload-Schlüssel, nicht deinen API-Schlüssel. Der optionale vollständige API-Schlüssel wird nur gebraucht, wenn ausgelagerte Dateien auch bei YourImageShare gelöscht werden sollen, sobald du sie in WordPress löschst.
Auf WordPress.org holen ZIP herunterladen
In WordPress: Plugins > Neu hinzufügen, suche nach YourImageShare Media Offload und wähle dann Installieren und Aktivieren.
Kurzbefehl für iPhone & iPad
Lade über das Teilen-Menü jeder App hoch – Fotos, Dateien, Safari, ein Screenshot – und erhalte den Link in deiner Zwischenablage. Keine App zu installieren und kein Konto nötig.
So baust du ihn selbst in der App „Kurzbefehle“ (etwa zwei Minuten):
- Neuer Kurzbefehl, nenne ihn „Upload to YourImageShare“. Aktiviere in den Details Im Share Sheet anzeigen und akzeptiere Bilder und Medien.
- Füge Inhalte von URL abrufen hinzu: URL
https://yourimageshare.com/api/widget, MethodePOST, Anfragetext Formular mit zwei Feldern:uploads(Datei) = Kurzbefehl-Eingabe undclient(Text) =ios-shortcut. - Füge Wörterbuchwert abrufen für
datahinzu, dann noch einen fürsrc– das ist der direkte Link. - Füge In Zwischenablage kopieren und Mitteilung anzeigen („Link kopiert“) hinzu.
Ohne Schlüssel sind Uploads anonym und nicht gelistet, mit einem Tageslimit. Füge einen Header X-API-Key mit deinem Nur-Upload-Schlüssel (Mein Konto > API) hinzu, um in dein Konto hochzuladen. Die Antwort enthält außerdem delete_url, falls du einen Löschlink aufbewahren möchtest.
PicGo & PicList
PicGo und PicList laden eingefügte oder hineingezogene Bilder für Markdown-Editoren hoch – Typora, VS Code, Obsidian, Joplin – und setzen den Link in deinen Text. Unser Plugin macht YourImageShare zu einem ihrer Bilderhoster.
- In PicGo oder PicList: Plugins, suche nach
yourimageshare, installiere es und wähle dann YourImageShare als Uploader. Kommandozeile:picgo install yourimageshare - Oder lade das Plugin herunter und importiere es als lokales Plugin (vorher entpacken)
- Einstellungen: Nur-Upload-Schlüssel (optional – leer = anonyme, nicht gelistete Uploads), Sichtbarkeit und ob der direkte Bildlink (für Markdown) oder der Seitenlink zurückgegeben wird
- Der zurückgegebene Link funktioniert weiter, wenn große Bilder später zu WebP optimiert werden
Telegram-Bot
Hol dir einen Link für ein Foto, Video oder GIF, ohne Telegram zu verlassen. Schick es an @YourImageShare_bot, und der Link kommt direkt zurück – ohne Konto und ohne API-Schlüssel. Der Bot lädt über denselben oben dokumentierten /api-Endpunkt hoch.
- Schick ein Foto, Video, GIF oder eine Bild- oder Videodatei; ein Album mit bis zu 10 Dateien kommt in einer Antwort zurück
- Antworte in einer Gruppe mit
/linkauf ein Foto oder Video, und der Bot postet den Link für alle /autodeletesorgt dafür, dass sich deine nächsten Uploads nach 1 Stunde, 1 Tag, 1 Woche oder 30 Tagen selbst löschen- Jedes Ergebnis hat einen Löschen-Button, der nur für die Person funktioniert, die die Datei hochgeladen hat
- Links sind nicht gelistet: Nur Personen, die den Link haben, können die Datei sehen
- Der Bot antwortet in deiner Telegram-Sprache, wenn die Website in dieser Sprache verfügbar ist
Volle Qualität behalten: Telegram komprimiert Fotos, die auf normalem Weg gesendet werden. Sende sie als Datei (📎 → Datei), dann wird das Original hochgeladen. Telegram lässt Bots Dateien bis zu 20 MB abrufen, lade größere Dateien also auf der Website hoch.
Discord-Bot
Mach aus jedem Bild, GIF oder Video in Discord einen dauerhaften Link. Die eigenen Anhangs-Links von Discord funktionieren nach einer Weile nicht mehr; YourImageShare-Links schon. Kein Konto und kein API-Schlüssel nötig. Der Bot lädt über denselben oben dokumentierten /api-Endpunkt hoch.
/uploadmit einer Datei: optionales automatisches Löschen nach 1, 7 oder 30 Tagen und only_me, damit nur du den Link siehst- Rechtsklick auf eine Nachricht → Apps → Rehost on YourImageShare, um bis zu 6 Bilder oder Videos daraus in einer Antwort neu zu hosten
- Füge ihn einem Server hinzu oder deinem eigenen Konto, um ihn in jedem Chat oder jeder DM zu nutzen
- Jedes Ergebnis hat einen Löschen-Button, der nur für die Person funktioniert, die die Datei hochgeladen hat
- Links sind nicht gelistet: Nur Personen, die den Link haben, können die Datei sehen
GitHub Action für Playwright & Cypress
Wenn End-to-End-Tests in einem Pull Request fehlschlagen, siehst du den Grund, ohne Artefakt-ZIPs herunterzuladen. Die Action lädt die Fehler-Screenshots und visuellen Diffs hoch und zeigt sie als Bilder in einem Pull-Request-Kommentar, der bei jedem Lauf aktualisiert wird.
- Funktioniert mit Playwright und Cypress und erkennt selbst, welches das Projekt nutzt
- Fehlgeschlagene visuelle Vergleiche erscheinen als Expected, Actual und Diff, mit einem Link zu einem Vorher/Nachher-Schieberegler (Playwrights
toHaveScreenshot; bei Cypress die Plugins cypress-image-diff-js und cypress-visual-regression) - Der Kommentar ändert sich zu „all tests passed“, sobald die Tests repariert sind; derselbe Bericht geht in die Job-Zusammenfassung
- Screenshots sind privat (nur Bilddateien, keine Seite) und werden standardmäßig nach 30 Tagen gelöscht
- Braucht deinen Nur-Upload-Schlüssel als Repository-Secret
YOURIMAGESHARE_API_KEY; die Action lässt deinen Build nie fehlschlagen
- uses: yourimageshare/playwright-pr-screenshots@v1
if: always()
with:
api-key: ${{ secrets.YOURIMAGESHARE_API_KEY }} Community-Projekte
Einige der besten YourImageShare-Integrationen stammen von den Menschen, die den Dienst nutzen. Diese Projekte wurden von Mitgliedern der Community mit der oben dokumentierten öffentlichen API gebaut. Sie werden von ihren Autoren gepflegt, bei Fragen oder Fehlerberichten wende dich also über die Seite des Projekts an den Autor.
- YourImageShare Uploads for FlatBB – ein Plugin für das FlatBB-Forum von madromas (MadWay Inc.).
- Fügt dem Beitragseditor von FlatBB einen Upload-Button hinzu: Wähle ein oder mehrere Bilder oder Videos, und das Markdown wird an der Cursorposition eingefügt
- Fügt jeden Upload als anklickbares Vorschaubild, als Bild in voller Größe oder als einfachen Link ein (Videos als Link)
- Uploads laufen über den Server deines Forums mit einem Nur-Upload-API-Schlüssel, sodass der Schlüssel nie in die Browser der Besucher gelangt
- Dateien liegen bei YourImageShare statt auf der Festplatte deines Forums, mit einer von dir gewählten Standard-Sichtbarkeit (privat, nicht gelistet oder öffentlich)
- Funktioniert neben dem eigenen Uploader von FlatBB, mit eigenem Dateigrößenlimit
Danke
Ein großes Dankeschön an alle, die mit YourImageShare bauen und ihre Arbeit mit anderen teilen. Community-Projekte bringen YourImageShare an Orte, die wir allein nie erreicht hätten. Hast du etwas mit der API gebaut? Erzähl uns davon, dann nehmen wir es gern hier auf.
Aus dem Blog
Anleitungen und Walkthroughs für Entwickler
- Screenshots sofort hochladen mit ShareX, Flameshot oder Greenshot
- Einen echten Button zum Bilder hochladen in dein phpBB-, SMF- oder MyBB-Forum einbauen
- MCP nutzen: Claude, ChatGPT und KI-Agenten mit YourImageShare verbinden
- YourImageShare Capture: Screenshot-Erweiterung für Chrome und Firefox
- Deine WordPress-Mediathek zu einem kostenlosen Bilderhoster auslagern
- YourImageShare Telegram-Bot: Einen Link für jedes Foto oder Video erhalten
Bereit zum Ausprobieren?
API-Schlüssel holen →