En fait j’ai cherché trop compliqué (api, websocket).
J’ai finalement trouvé une solution très simple :
curl -F "file=@/path/to/local/file" "https://mensuel.framapad.org/p/pad_id/import"
Marche aussi bien sur un pad existant que sur un pad à créer.