Schick eine Datei per POST an https://up.anon.cat/upload, standardmäßig bekommst du eine json-Antwort.
Willst du ein anderes Format als json, häng einen Parameter an, der das gewünschte Format angibt, zum Beispiel https://up.anon.cat/upload?output=csv.
Gültige Antworttypen sind: json, csv, text, html und gyazo.
Eine Datei pro Anfrage, bis zu 1 GB.
curl -i -F files[]=@yourfile.jpeg https://up.anon.cat/upload
Du kannst die Datei auch direkt im Body statt als multipart-Formular schicken und den Namen über die Query übergeben. Für große Dateien ist das die bessere Variante: die Länge steht von Anfang an fest, es gibt keinen multipart-Umschlag, und die Website selbst macht es genauso.
curl -i -T yourfile.iso "https://up.anon.cat/upload?filename=yourfile.iso"
Beide Varianten streamen direkt zum CDN durch, keine von beiden ist also durch den Plattenplatz auf dem Server begrenzt.
Mit scrub=1 werden die Metadaten auf dem Weg zum CDN entfernt: Exif und GPS aus einem JPEG, Text- und eXIf-Blöcke aus einem PNG, Exif und XMP aus einem WebP. Die Pixel bleiben unberührt, und alles, was keines dieser drei Formate ist, wird genau so gespeichert, wie es gesendet wurde.
curl -i -T photo.jpg "https://up.anon.cat/upload?filename=photo.jpg&scrub=1"
Die Website sendet den Parameter bei jedem Upload. Bei einem fortsetzbaren Upload gehört er an den Aufruf /upload/finish, nicht an jeden Chunk.
Anon.Notes hat eine eigene API, und sie ist etwas anderes als der Upload-Endpunkt weiter oben: sie schreibt in eine einzige Notiz, nicht in den öffentlichen Dateihoster. Einen Schlüssel legt man in der Notiz selbst an, auf ihrer Einstellungsseite, und er kann mit keiner anderen Notiz irgendetwas anfangen.
Wofür das gut ist: eine Notiz als Empfänger. Ein Deploy-Skript, ein CI-Job, ein Cronjob oder ein Bot schiebt Zeilen hinein, und du liest sie später am Telefon. Nichts anzumelden und nichts abzufragen: die Notiz ist der Briefkasten.
Die Basisadresse ist https://anon.cat/api/notes/. Alles spricht JSON, und alles wird auf dieselbe Weise authentifiziert.
Öffne deine Notiz, geh zu Einstellungen und lege unter Entwickler-API einen Schlüssel an. Er wird ein einziges Mal angezeigt - kopiere ihn dann, denn diese Seite kann ihn dir danach nicht mehr zurücklesen.
Ein Schlüssel hat einen Geltungsbereich: append darf Einträge hinzufügen und nichts lesen, read darf lesen und nichts schreiben, und rw darf beides und verwaltet Benachrichtigungen. Gib einer Maschine den engsten Bereich, mit dem sie ihre Arbeit tut.
Schick ihn als Bearer-Token. In der Query-Zeichenkette wird er nie angenommen, denn die landet im Zugriffsprotokoll.
curl -H "Authorization: Bearer $ANON_KEY" https://anon.cat/api/notes/ping
Einen Schlüssel zurückzuziehen ist ein Klick im selben Feld, wirkt sofort und rührt weder die Notiz noch einen anderen Schlüssel an. Dein Passwort kommt hier an keiner Stelle vor, und ein Schlüssel kann es weder lesen noch ändern noch die Notiz löschen.
POST an /api/notes/append, mit dem Text im Feld text oder als ganzem Anfragekörper. Beides tut dasselbe:
curl -H "Authorization: Bearer $ANON_KEY" -d "text=deploy 1.9.9 finished" https://anon.cat/api/notes/append
curl -H "Authorization: Bearer $ANON_KEY" -H "Content-Type: application/json" -d '{"text":"deploy 1.9.9 finished"}' https://anon.cat/api/notes/append
tail -n 20 build.log | curl -H "Authorization: Bearer $ANON_KEY" --data-binary @- https://anon.cat/api/notes/append
Eine Log-Notiz bekommt einen Eintrag mehr. Eine Seiten-Notiz wächst: der Text wird ans Ende des Dokuments gehängt, nie darüber, damit ein Skript mit einer veralteten Kopie nicht löschen kann, was du inzwischen selbst geschrieben hast.
Die Antwort ist 201 und enthält den Zustand der Notiz. Mit notify=false bleiben die Benachrichtigungen für diesen einen Aufruf aus - das will eine Schleife, die alte Zeilen nachträgt.
Mit einem read- oder rw-Schlüssel gibt /api/notes/entries die Einträge entschlüsselt zurück, älteste zuerst. limit und offset blättern, und order=desc fängt beim neuesten an, was ein pollendes Programm will.
curl -H "Authorization: Bearer $ANON_KEY" "https://anon.cat/api/notes/entries?limit=10&order=desc"
/api/notes/note liefert die Notiz ohne ihren Inhalt: wie viele Einträge sie hat, wann zuletzt hineingeschrieben wurde, und wie lange sie noch hat, bevor die Aufräumung sie holen würde. Jeder Zugriff über die API stellt diese Uhr ebenfalls zurück, also läuft eine Notiz, in die täglich ein Bot schreibt, nie ab.
Eine Notiz kann dir sagen, wenn ein Schlüssel in sie schreibt, über Discord oder Telegram. Wenn du selbst hineinschreibst, wird nie eine verschickt - es geht darum, von der Maschine zu hören, nicht von dir selbst.
Richte eine in den Einstellungen ein, oder über die API mit einem rw-Schlüssel. Sofort beim Anlegen wird ein Test verschickt, damit eine falsch kopierte Webhook-URL ein Statuscode ist, den du gleich siehst.
curl -H "Authorization: Bearer $ANON_KEY" -H "Content-Type: application/json" -d '{"kind":"discord","url":"https://discord.com/api/webhooks/…","label":"deploys"}' https://anon.cat/api/notes/hooks
curl -H "Authorization: Bearer $ANON_KEY" -H "Content-Type: application/json" -d '{"kind":"telegram","bot":"123456789:AA…","chat":"-1001234567890"}' https://anon.cat/api/notes/hooks
Standardmäßig trägt eine Benachrichtigung keinen Text aus der Notiz: sie sagt, dass etwas ankam, wie viel, welcher Schlüssel es geschickt hat, und verlinkt hierher zurück - und die Notiz steckt weiterhin hinter ihrem Passwort. Mit preview=true geht der Eintrag selbst mit, was heißt: du gibst deinen Text an Discord oder Telegram. Das ist ein echter Handel, und darum ist es aus, solange du nicht danach fragst.
Angenommen werden nur Discord-Webhook-Adressen und Telegram-Bots. Eine beliebige URL wird bewusst nicht angeboten: dieser Server wäre derjenige, der sie abruft.