Stars: 316
Forks: 27
Pull Requests: 13
Issues: 24
Watchers: 24
Last Updated: 2023-04-24 03:45:32
Docs and implementation of the reMarkable file sync API
License: MIT License
Languages: PHP
https://www.splitbrain.org/blog/2018-02/02_file_sync_for_remarkable_tablet
Goal of this project is to figure out and document the API which is used by the reMarkable Paper Tablet for syncing documents between the device, the desktop and mobile clients and the cloud service. A sample client implementation in PHP is also part of the project.
The API allows you to exchange files with your reMarkable tablet without the need to be in the same network or have physical access to the device. This makes it possible to create your own cloud services. Eg. tools that periodically sync files to other services like Dropbox or you could add automatic export to reMarkable in your tools.
I did my best to document what I cold figure out about the reMarkable File Sync API in the wiki: API Documentation
It should give you a good starting point when implementing your own client. You can also run the command line client in this repository (see below) with the --loglevel debug
option to see the API calls in action.
Please feel free to extend and improve the documentation.
This repository implements a PHP client to talk to the reMarkable file API. To use it in your projects, install via composer (currently only dev-master
is available, versioning will be introduced later).
composer require splitbrain/remarkable-api
The library consists of three classes:
splitbrain\ReMarkableAPI\ReMarkableAPI
- this the main API interface, implementing the calls as described in the wikisplitbrain\ReMarkableAPI\ReMarkableFS
- the reMarkable stores all info in a flat hierarchy with documents identified by UUIDs only. This class makes the items accessible by path names (using /
as a directory separator)splitbrain\ReMarkableAPI\Client
- this is just a thin wrapper around the Guzzle HTTP client which adds logging and handles authenticationAfter instantiating the ReMarkableAPI
object, you need to call either register()
or init()
on it before you can issue any of the other calls. The first call will register your client through a 8 char code and return an API token. You need to save that token somewhere and pass it to init()
for subsequent calls. Have a look at the command line client in remarkable.php
to see how to use it all.
To demonstrate the use of the PHP client library a command line script is included in the project. To use it, clone this project, then initialize the dependencies with composer:
composer install
Run the following to get a help screen on the usage:
./remarkable.php -h
Currently the following commands are implemented:
register
- register this application as a new devicelist
- list all available filesdelete
- delete a folder or documentmkdir
- create new foldersupload
- upload a new PDFdownload
- download a Document