FastPaste API

FastPaste REST API v1

Erste Schritte

Die FastPaste API ermöglicht das programmgesteuerte Erstellen, Abrufen und Löschen von Pastes.

Zur API-Nutzung ist ein API-Schlüssel erforderlich. Kontaktieren Sie den Administrator.

Authentifizierung

Alle API-Anfragen erfordern den X-API-Key-Header:

X-API-Key: lq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Base URL

https://fastpaste.xyz/api/v1

Antwortformat

Alle Antworten sind im JSON-Format:

{ "error": false, "message": "...", "data": { ... } }

POST /api/v1/paste

Erstellt einen neuen Paste.

Text-Paste (JSON)

ParameterTypPflichtfeldBeschreibung
contentstringJaPaste-Inhalt (min. 3, max. 4.00 MB)
titlestringNeinPaste-Titel
descriptionstringNeinBeschreibung (max. 500 Zeichen)
expirystringNeinDauer: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (Standard: 1d)
passwordstringNeinPasswortschutz
burnbooleanNeinEinmal ansehen und löschen. Bei true wird der Paste nach der ersten Ansicht automatisch gelöscht (Standard: false).
encryptbooleanNeinEnde-zu-Ende-Verschlüsselung. Bei true muss der Inhalt ein clientseitig verschlüsselter "fpe1:..."-String sein (siehe E2E-Abschnitt). Standard: false.
keystringNeinBase64url-Entschlüsselungsschlüssel. Optional; wird nur verwendet, um #Schlüssel an den zurückgegebenen Link anzuhängen, und wird nie auf dem Server gespeichert. Leer lassen, um den Schlüssel vollständig clientseitig zu halten.
downloadablebooleanNeinMacht einen E2E-verschlüsselten Paste herunterladbar (Standard: false). Sollte zusammen mit encrypt=true verwendet werden; bei unverschlüsselten Pastes hat es keine Wirkung und die Antwort enthält eine Warnung (unverschlüsselte Pastes sind ohnehin immer herunterladbar).
languagestringNeinSprache für die Syntaxhervorhebung (z. B. python, javascript). Wird bei Weglassen automatisch erkannt; bei E2E zum Hervorheben nach der Entschlüsselung gespeichert.
publicbooleanNeinWenn true, wird der Paste im öffentlichen Archiv und in der Sitemap gelistet. Standard ist false. Wird ignoriert, wenn Passwort, Burn-after-Read oder Verschlüsselung verwendet wird.
slugstringNeinBenutzerdefinierte Kurzadresse (z. B. „meine-notizen" → /view/meine-notizen). Wenn vergeben, wird eine ähnliche zugewiesen.
Beispielanfrage (cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "content": "print(\"Hello, World!\")", "title": "Test Paste", "expiry": "1d", "burn": true }'
Antwort (201 Created)
{ "error": false, "message": "Paste created successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "sha256": "abc123...", "burn_after_read": true, "encrypted": false, "downloadable": false } }

Datei-Upload (multipart/form-data)

ParameterTypPflichtfeldBeschreibung
filefileJaHochzuladende Datei (max. 10.00 MB)
descriptionstringNeinDateibeschreibung
expirystringNeinAblaufzeit
passwordstringNeinPasswortschutz
burnbooleanNeinEinmal ansehen und löschen. Bei true wird der Paste nach der ersten Ansicht automatisch gelöscht (Standard: false).
encryptbooleanNeinEnde-zu-Ende-Verschlüsselung. Bei true muss der Inhalt ein clientseitig verschlüsselter "fpe1:..."-String sein (siehe E2E-Abschnitt). Standard: false.
keystringNeinBase64url-Entschlüsselungsschlüssel. Optional; wird nur verwendet, um #Schlüssel an den zurückgegebenen Link anzuhängen, und wird nie auf dem Server gespeichert. Leer lassen, um den Schlüssel vollständig clientseitig zu halten.
downloadablebooleanNeinMacht einen E2E-verschlüsselten Paste herunterladbar (Standard: false). Sollte zusammen mit encrypt=true verwendet werden; bei unverschlüsselten Pastes hat es keine Wirkung und die Antwort enthält eine Warnung (unverschlüsselte Pastes sind ohnehin immer herunterladbar).
Beispiel (Datei mit cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "X-API-Key: lq_your_api_key_here" \ -F "[email protected]" \ -F "expiry=1w"

Ende-zu-Ende-Verschlüsselung (E2E)

Verschlüsseln Sie den Inhalt auf Ihrer Seite mit AES-GCM (256-Bit) und senden Sie den Chiffretext als content. Der Server speichert nur die verschlüsselten Daten und sieht den Klartext nie. Es wird dasselbe Format wie in der Weboberfläche verwendet.

Chiffretext-Format: fpe1:<base64(iv)>:<base64(Chiffretext)> — wobei iv ein zufälliger 12-Byte-Wert ist und der Chiffretext das GCM-Tag enthält.

Der Entschlüsselungsschlüssel wird nie auf dem Server gespeichert. Wenn Sie den optionalen Parameter key senden, enthält die zurückgegebene url ihn als #Schlüssel und der Link ist direkt nutzbar; der Schlüssel wird nur zum Erstellen des Links verwendet, nicht gespeichert. Für strengeres E2E lassen Sie key weg und hängen den #Schlüssel-Teil selbst an den Link an.
Herunterladen: E2E-Pastes sind standardmäßig NICHT herunterladbar (/download liefert 403 und download_url ist in der Antwort null). Bei Erstellung mit downloadable=true liefert /download den verschlüsselten "fpe1:..."-Inhalt (entschlüsseln Sie ihn selbst mit Ihrem Schlüssel); der Download-Button auf der Ansichtsseite entschlüsselt den Inhalt im Browser mit dem #Schlüssel und lädt ihn als Klartext herunter.
Wird downloadable=true mit einem unverschlüsselten Paste (encrypt=false) gesendet, wird die Anfrage dennoch akzeptiert, aber die Antwort enthält ein "warning"-Feld.
Beispielanfrage (cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "content": "fpe1:<base64-iv>:<base64-ciphertext>", "encrypt": true, "key": "<base64url-key>", "downloadable": true, "expiry": "1d" }'
Antwort (201 Created)
{ "error": false, "message": "Paste created successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g#<base64url-key>", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "sha256": "abc123...", "burn_after_read": false, "encrypted": true, "downloadable": true } }

GET /api/v1/paste/{id}

Ruft Details und Inhalt eines Pastes ab.

Passwortgeschützte Pastes können nicht über die API abgerufen werden.
Burn-after-read-Pastes werden direkt nach dem ersten erfolgreichen Abruf – über diesen Endpunkt oder /raw – dauerhaft gelöscht.
Beispielanfrage (cURL)
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
Antwort (200 OK)
{ "error": false, "data": { "paste_id": "aB3cD4eF5g", "title": "Test Paste", "description": null, "content": "print(\"Hello, World!\")", "content_type": "text", "original_filename": null, "language": "python", "file_size": 22, "sha256": "abc123...", "created_at": "2025-01-01 15:30:00", "expires_at": "2025-01-02 15:30:00", "view_count": 5, "burn_after_read": false, "burned": false, "encrypted": false, "downloadable": false } }

PUT /api/v1/paste/{id}

Aktualisiert eine vorhandene Paste (nur die dieser API-Schlüssel gehören). Senden Sie nur die zu ändernden Felder: content (nur Text), title, description, expiry, burn, password, language, downloadable. Bei "fpe1:..."-Inhalt encrypt und key angeben.

Beispielanfrage (cURL)
curl -X PUT https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "title": "Updated title", "content": "new content", "expiry": "1w" }'
Antwort (200 OK)
{ "error": false, "message": "Paste updated successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "encrypted": false } }

GET /api/v1/pastes

Listet die mit diesem API-Schlüssel erstellten Pastes auf (neueste zuerst). Paginierung: page und limit (1–100).

Beispielanfrage (cURL)
curl "https://fastpaste.xyz/api/v1/pastes?page=1&limit=20" \ -H "X-API-Key: lq_your_api_key_here"
Antwort (200 OK)
{ "error": false, "data": [ { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "title": "Test Paste", "content_type": "text", "language": "python", "file_size": 22, "created_at": "2025-01-01 15:30:00", "expires_at": "2025-01-02 15:30:00", "view_count": 5, "encrypted": false, "downloadable": false } ], "pagination": { "page": 1, "limit": 20, "total": 1, "total_pages": 1 } }

GET /api/v1/paste/{id}/raw

Gibt den Paste-Inhalt als Klartext zurück. Geeignet für Skripte und Automatisierung.

Beispiel
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g/raw \ -H "X-API-Key: lq_your_api_key_here"

Antwort: Content-Type: text/plain

DELETE /api/v1/paste/{id}

Löscht einen Paste. Nur Pastes, die mit demselben API-Schlüssel erstellt wurden, können gelöscht werden.

Beispiel
curl -X DELETE https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
Antwort (200 OK)
{"error": false, "message": "Paste deleted."}

POST /api/v1/cli

Schnelles Erstellen von Pastes über die Kommandozeile (curl). Senden Sie den Inhalt als rohen Anfragetext von stdin oder als Formularfeld (content/paste/f:1). Die Standardantwort ist eine Klartext-URL.

Der API-Schlüssel ist optional: Funktioniert ohne Schlüssel anonym (IP-Ratenlimit + Inhaltsprüfung). Mit Schlüssel wird die Nutzung diesem zugeordnet. Anonymer Zugriff kann im Admin-Panel deaktiviert werden.

Parameter

ParameterTypPflichtfeldBeschreibung
(gövde)raw / formJaPaste-Inhalt. Für rohen Text wird text/plain empfohlen (damit = und & erhalten bleiben).
expirystringNeinDauer: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (Standard: 1d)
titlestringNeinPaste-Titel
langstringNeinSprache für die Syntaxhervorhebung (z. B. python, javascript). Wird bei Weglassen automatisch erkannt; bei E2E zum Hervorheben nach der Entschlüsselung gespeichert.
burnbooleanNeinEinmal ansehen und löschen. Bei true wird der Paste nach der ersten Ansicht automatisch gelöscht (Standard: false).
Beispielanfrage (cURL)
# stdin → URL (text/plain önerilir) echo "merhaba" | curl -H "Content-Type: text/plain" --data-binary @- https://fastpaste.xyz/api/v1/cli # dosya yükle curl -H "Content-Type: text/plain" --data-binary @app.log https://fastpaste.xyz/api/v1/cli # sprunge/ix.io tarzı echo "merhaba" | curl -F 'f:1=<-' https://fastpaste.xyz/api/v1/cli # seçeneklerle cat x.py | curl -H "Content-Type: text/plain" --data-binary @- 'https://fastpaste.xyz/api/v1/cli?expiry=1w&lang=python' # API anahtarı ile (kota anahtara işlenir) cat x | curl -H "X-API-Key: lq_xxx" -H "Content-Type: text/plain" --data-binary @- https://fastpaste.xyz/api/v1/cli
Antwort
https://fastpaste.xyz/view/aB3cD4eF5g

Accept: application/json veya ?json=1 ile JSON döner. GET /api/v1/cli kullanım örneklerini gösterir.

Erlaubte Dateierweiterungen

.txt .log .json .xml .yaml .yml .ini .cfg .conf .md .csv .sql .js .ts .html .htm .css .py .java .go .rs .c .cpp .h .hpp .lua .rb .jsx .tsx .vue .svelte .scss .sass .less .toml .gitignore .dockerfile .makefile .bat .ps1 .r .swift .kt .kts .scala .pl .pm .tcl .awk .sed .diff .patch .tf .hcl .proto .graphql .tex .bib .rst .adoc .org .wiki .properties .gradle .cmake .mak

Dateien werden auf Erweiterung und MIME-Typ geprüft. Nur Text-/Code-Dateien werden akzeptiert.

Ratenlimits

Für jeden API-Schlüssel können separate Ratenlimits festgelegt werden:

LimittypBeschreibung
Stündliches LimitMaximale Anfragen pro Stunde (0 = unbegrenzt)
Tägliches LimitMaximale Anfragen pro Tag
Monatliches LimitMaximale Anfragen pro Monat

Bei Überschreitung des Limits wird 429 Too Many Requests zurückgegeben.

Fehlercodes

CodeBedeutung
400Ungültige Anfrage (fehlender/falscher Parameter)
401API-Schlüssel fehlt
403Ungültiger/inaktiver API-Schlüssel oder Zugang verweigert
404Paste nicht gefunden oder abgelaufen
405HTTP-Methode nicht erlaubt
413Dateigröße zu groß
429Ratenlimit überschritten
500Serverfehler
503API deaktiviert

Webhook-Benachrichtigungen

Pro API-Schlüssel kann eine eigene Webhook-URL konfiguriert werden. Bei einem neuen Paste wird eine POST-Anfrage gesendet:

{ "event": "paste_created", "paste_id": "aB3cD4eF5g", "type": "text", "source": "api", "api_key_name": "My App", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "created_at": "2025-01-01 15:30:00", "ip": "1.2.3.4" }

API-Schlüssel erhalten

Kontaktieren Sie den Administrator, um einen API-Schlüssel zu erhalten oder Ihr Limit zu erhöhen.

Administrator kontaktieren