把檔案 POST 到 https://up.anon.cat/upload,預設會回 json。
如果想要 json 以外的格式,加個參數指定要哪一種,例如 https://up.anon.cat/upload?output=csv。
可用的回應格式有:json、csv、text、html 和 gyazo。
每次請求一個檔案,最大 1 GB。
curl -i -F files[]=@yourfile.jpeg https://up.anon.cat/upload
你也可以把檔案直接放進請求主體,而不是用 multipart 表單,檔名則透過查詢字串傳。大檔案用這個比較好:長度一開始就知道,沒有 multipart 那層外殼,而且網站自己也是這樣做的。
curl -i -T yourfile.iso "https://up.anon.cat/upload?filename=yourfile.iso"
兩種方式都是把檔案直接串流到 CDN,所以都不會被伺服器的硬碟空間卡住。
加上 scrub=1,檔案在送往 CDN 的途中會被剝去中繼資料:JPEG 的 Exif 與 GPS、PNG 的文字區塊與 eXIf 區塊、WebP 的 Exif 與 XMP。像素不會被更動,不屬於這三種格式的檔案會原樣保存。
curl -i -T photo.jpg "https://up.anon.cat/upload?filename=photo.jpg&scrub=1"
網站每次上傳都會帶上它。分段上傳時,這個參數加在 /upload/finish 呼叫上,而不是每個分段上。
Anon.Notes 有自己的 API,和上面的上傳端點不是同一回事:它寫入的是某一則筆記,而不是公開的檔案託管。金鑰在筆記自己的設定頁建立,對任何其他筆記都做不了任何事。
它的用途,是把筆記當成收件端。部署腳本、CI 工作、排程或機器人往裡推入一行行內容,你稍後在手機上讀。沒有要註冊的東西,也沒有要輪詢的東西:筆記本身就是信箱。
基礎位址是 https://anon.cat/api/notes/。一切都講 JSON,驗證方式也都一樣。
打開筆記,進到設定,在「開發者 API」底下建立一把金鑰。它只顯示一次——當下就複製起來,因為之後這一端沒有任何東西能把它讀回給你。
每把金鑰都有範圍:append 只能新增條目、讀不到任何東西,read 只能讀、寫不了任何東西,rw 兩者都能做,還能管理通知。給機器最窄而夠用的那一種。
用 bearer 權杖傳送。查詢字串裡永遠不接受,因為查詢字串會被寫進存取記錄。
curl -H "Authorization: Bearer $ANON_KEY" https://anon.cat/api/notes/ping
撤銷金鑰就是同一個面板裡按一下,立即生效,既不動筆記也不動其他金鑰。你的密碼在這裡從頭到尾都不參與,金鑰讀不到它、改不了它,也刪不掉筆記。
向 /api/notes/append 發出 POST,文字放在 text 欄位,或直接當成整個請求主體。兩種寫法效果相同:
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
日誌式筆記會多一則條目。頁面式筆記會變長:文字接在文件末尾,絕不覆蓋,這樣拿著舊副本的腳本就不會抹掉你在這段期間寫下的東西。
回應是 201,裡面帶著筆記的狀態。加上 notify=false 就只在這一次呼叫跳過通知——這正是補推舊內容的迴圈所需要的。
用 read 或 rw 金鑰,/api/notes/entries 會把條目解密後回傳,最舊的在前。limit 和 offset 翻頁,order=desc 從最新的開始,這正是輪詢程式想要的。
curl -H "Authorization: Bearer $ANON_KEY" "https://anon.cat/api/notes/entries?limit=10&order=desc"
/api/notes/note 回傳不含內容的筆記:有幾則條目、上次寫入是什麼時候,以及在閒置清理把它帶走之前還剩多久。透過 API 的每一次存取同樣會把這個計時歸零,所以每天被機器人寫入的筆記永遠不會過期。
當有金鑰寫入時,筆記可以透過 Discord 或 Telegram 通知你。你自己寫入時從來不會送出——重點是聽見機器的動靜,而不是自己的。
在設定裡建立,或用 rw 金鑰透過 API 建立。建立的當下就會送出一次測試,所以複製錯的 webhook 位址會立刻變成你看得見的狀態碼。
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
預設情況下,通知不帶筆記裡的任何文字:它只說有東西到了、有多少、由哪把金鑰送來,並連結回這裡——筆記依然在密碼後面。傳 preview=true,條目本身也會一起送出,那就等於把你的文字交給 Discord 或 Telegram。這是一次真實的取捨,所以除非你開口,它一直是關著的。
只接受 Discord 的 webhook 位址與 Telegram 的機器人。任意 URL 是刻意不提供的:去存取它的會是這台伺服器。