Fais un POST du fichier sur https://up.anon.cat/upload, tu obtiendras par défaut une réponse json.
Si tu veux autre chose que du json, ajoute un paramètre précisant le format voulu, par exemple https://up.anon.cat/upload?output=csv.
Les types de réponse acceptés sont : json, csv, text, html et gyazo.
Un fichier par requête, jusqu'à 1 GB.
curl -i -F files[]=@yourfile.jpeg https://up.anon.cat/upload
Tu peux aussi envoyer le fichier directement dans le corps de la requête plutôt que dans un formulaire multipart, en passant le nom dans la query. Pour les gros fichiers c'est la meilleure option : la taille est connue d'emblée, il n'y a pas d'enveloppe multipart, et c'est ce que le site lui-même utilise.
curl -i -T yourfile.iso "https://up.anon.cat/upload?filename=yourfile.iso"
Les deux méthodes envoient le flux directement au CDN, aucune des deux n'est donc limitée par l'espace disque du serveur.
Avec scrub=1, le fichier est débarrassé de ses métadonnées en route vers le CDN : Exif et GPS pour un JPEG, blocs de texte et eXIf pour un PNG, Exif et XMP pour un WebP. Les pixels ne sont pas touchés, et tout ce qui n'est pas l'un de ces trois formats est stocké exactement tel qu'il a été envoyé.
curl -i -T photo.jpg "https://up.anon.cat/upload?filename=photo.jpg&scrub=1"
Le site l'envoie à chaque envoi. Pour un envoi reprenable, le paramètre se place sur l'appel /upload/finish, pas sur chaque morceau.
Anon.Notes a sa propre API, et c'est autre chose que le point d'envoi ci-dessus : elle écrit dans une seule note, pas dans l'hébergeur de fichiers public. Une clé se crée depuis la note elle-même, sur sa page de réglages, et elle ne peut rien faire sur aucune autre note.
À quoi ça sert : une note comme boîte de réception. Un script de déploiement, un job CI, une tâche cron ou un bot y pousse des lignes, et vous les lisez plus tard sur un téléphone. Rien à créer comme compte, rien à interroger : la note est la boîte aux lettres.
L'adresse de base est https://anon.cat/api/notes/. Tout parle JSON, et tout s'authentifie de la même façon.
Ouvrez votre note, allez dans Réglages, et créez une clé sous API développeur. Elle n'est affichée qu'une fois - copiez-la à ce moment-là, car de ce côté-ci plus rien ne pourra vous la relire ensuite.
Une clé porte une portée : append peut ajouter des entrées et ne rien lire, read peut lire et ne rien écrire, et rw peut les deux et gère les notifications. Donnez à une machine la portée la plus étroite qui fasse son travail.
Envoyez-la comme jeton bearer. Elle n'est jamais acceptée dans la chaîne de requête, parce que celle-ci est écrite dans le journal d'accès.
curl -H "Authorization: Bearer $ANON_KEY" https://anon.cat/api/notes/ping
Révoquer une clé, c'est un clic dans le même panneau, l'effet est immédiat, et cela ne touche ni la note ni aucune autre clé. Votre mot de passe n'intervient nulle part ici, et une clé ne peut ni le lire, ni le changer, ni supprimer la note.
POST vers /api/notes/append, avec le texte dans un champ text, ou comme corps entier de la requête. Les deux font la même chose :
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
Une note en journal reçoit une entrée de plus. Une note en page grandit : le texte est ajouté à la fin du document, jamais par-dessus, pour qu'un script travaillant sur une copie périmée ne puisse pas effacer ce que vous avez tapé entre-temps.
La réponse est un 201 contenant l'état de la note. Ajoutez notify=false pour sauter les notifications sur un appel - c'est ce que veut une boucle qui rejoue d'anciennes lignes.
Avec une clé read ou rw, /api/notes/entries renvoie les entrées déchiffrées, des plus anciennes aux plus récentes. limit et offset paginent, et order=desc commence par la plus récente, ce que veut un programme qui interroge régulièrement.
curl -H "Authorization: Bearer $ANON_KEY" "https://anon.cat/api/notes/entries?limit=10&order=desc"
/api/notes/note renvoie la note sans son contenu : combien d'entrées elle porte, quand on y a écrit pour la dernière fois, et combien de temps il lui reste avant que le nettoyage ne l'emporte. Chaque accès par l'API remet aussi cette horloge à zéro, donc une note où un bot écrit tous les jours n'expire jamais.
Une note peut vous prévenir quand une clé y écrit, sur Discord ou sur Telegram. Écrire vous-même dans la note n'en envoie jamais - le but est d'entendre parler de la machine, pas de vous.
Créez-en une dans les Réglages, ou par l'API avec une clé rw. Un test part au moment même de la création, pour qu'une URL de webhook mal copiée soit un code de statut que vous voyez tout de suite.
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
Par défaut une notification ne transporte aucun texte de la note : elle dit que quelque chose est arrivé, quelle taille, quelle clé l'a envoyé, et renvoie ici - et la note reste derrière son mot de passe. Passez preview=true et l'entrée elle-même part avec, ce qui revient à confier votre texte à Discord ou à Telegram. C'est un vrai arbitrage, et c'est pour ça que c'est désactivé tant que vous ne le demandez pas.
Seules les adresses de webhook Discord et les bots Telegram sont acceptés. Une URL quelconque n'est délibérément pas proposée : c'est ce serveur qui irait la chercher.