API de Anon.Cat

Dirección

Haz POST de un archivo a https://up.anon.cat/upload; por defecto recibirás una respuesta en json.

Si quieres otro formato distinto de json, añade un parámetro indicando cuál, por ejemplo https://up.anon.cat/upload?output=csv.

Los tipos de respuesta válidos son: json, csv, text, html y gyazo.

Un archivo por petición, hasta 1 GB.

Ejemplo con curl

curl -i -F files[]=@yourfile.jpeg https://up.anon.cat/upload

Subida en el cuerpo de la petición

También puedes mandar el archivo en el cuerpo de la petición en lugar de un formulario multipart, pasando el nombre en la query. Para archivos grandes es la mejor opción: el tamaño se conoce desde el principio, no hay sobre multipart, y es lo que usa la propia web.

curl -i -T yourfile.iso "https://up.anon.cat/upload?filename=yourfile.iso"

Las dos formas van directas al CDN, así que ninguna está limitada por el espacio en disco del servidor.

Eliminar metadatos

Con scrub=1 el archivo pierde sus metadatos camino al CDN: Exif y GPS de un JPEG, fragmentos de texto y eXIf de un PNG, Exif y XMP de un WebP. Los píxeles no se tocan, y todo lo que no sea uno de esos tres formatos se guarda tal cual se envió.

curl -i -T photo.jpg "https://up.anon.cat/upload?filename=photo.jpg&scrub=1"

La web lo envía en cada subida. En una subida reanudable el parámetro va en la llamada a /upload/finish, no en cada fragmento.

API de notas

Anon.Notes tiene su propia API, y es algo distinto del punto de subida de arriba: escribe en una sola nota, no en el alojamiento público de archivos. La clave se crea dentro de la nota, en su página de ajustes, y no puede hacer nada con ninguna otra nota.

Para lo que sirve: una nota como receptor. Un script de despliegue, un trabajo de CI, un cron o un bot le empuja líneas, y tú las lees luego desde el móvil. Nada que registrar y nada que consultar en bucle: la nota es el buzón.

La dirección base es https://anon.cat/api/notes/. Todo habla JSON y todo se autentica igual.

Claves

Abre tu nota, ve a Ajustes y crea una clave en API para desarrolladores. Se muestra una sola vez: cópiala entonces, porque después nada de este lado puede volver a leértela.

Cada clave lleva un alcance: append puede añadir entradas y no leer nada, read puede leer y no escribir nada, y rw puede ambas cosas y gestiona las notificaciones. Dale a cada máquina el alcance más estrecho con el que haga su trabajo.

Mándala como token bearer. En la cadena de consulta nunca se acepta, porque la cadena de consulta acaba en el registro de accesos.

curl -H "Authorization: Bearer $ANON_KEY" https://anon.cat/api/notes/ping

Revocar una clave es un clic en el mismo panel, surte efecto de inmediato y no toca la nota ni ninguna otra clave. Tu contraseña no interviene en ninguna parte de esto, y una clave no puede leerla, ni cambiarla, ni borrar la nota.

Enviar una entrada

POST a /api/notes/append, con el texto en un campo text o como cuerpo entero de la petición. Las dos formas hacen lo mismo:

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

Una nota de registro recibe una entrada más. Una nota de página crece: el texto se añade al final del documento, nunca encima, para que un script con una copia vieja no pueda borrar lo que tú escribiste mientras tanto.

La respuesta es un 201 con el estado de la nota. Añade notify=false para saltarte las notificaciones en una llamada, que es lo que quiere un bucle que reenvía líneas antiguas.

Leer una nota

Con una clave read o rw, /api/notes/entries devuelve las entradas descifradas, de la más antigua a la más reciente. limit y offset paginan, y order=desc empieza por la más nueva, que es lo que quiere un programa que consulta cada poco.

curl -H "Authorization: Bearer $ANON_KEY" "https://anon.cat/api/notes/entries?limit=10&order=desc"

/api/notes/note devuelve la nota sin su contenido: cuántas entradas tiene, cuándo se escribió por última vez y cuánto le queda antes de que la limpieza por inactividad se la lleve. Cada acceso por la API también reinicia ese reloj, así que una nota en la que un bot escribe a diario no caduca nunca.

Notificaciones

Una nota puede avisarte cuando una clave escribe en ella, por Discord o por Telegram. Escribir tú mismo no envía ninguna: la idea es enterarte de lo que hace la máquina, no de lo que haces tú.

Configúralas en Ajustes, o por la API con una clave rw. Al crearla se dispara una prueba, de modo que una URL de webhook mal copiada sea un código de estado que ves en ese momento.

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

Por defecto una notificación no lleva ningún texto de la nota: dice que llegó algo, cuánto, qué clave lo envió, y enlaza aquí de vuelta, con la nota todavía detrás de su contraseña. Pasa preview=true y va también la entrada misma, lo que significa entregar tu texto a Discord o a Telegram. Es un intercambio real, y por eso está apagado salvo que lo pidas.

Solo se aceptan direcciones de webhook de Discord y bots de Telegram. Una URL cualquiera no se ofrece a propósito: sería este servidor quien fuera a buscarla.