Developers · Beta

Remoting SDK

Remoting.org speaks the open Matrix client-server protocol, so you can build your own clients, bots and integrations with any Matrix SDK, or plain HTTP.

Homeserver

https://matrix.remoting.org

Server name

remoting.org

IDs look like

@alice:remoting.org

STEP 1

Register an account

Registration is a short handshake. Start it to get a session, solve the Remoting captcha (a small proof-of-work: find a nonce so sha256(salt + nonce) begins with the required number of zero bits), then finish with the dummy stage. Prefer the website? Create an account at chat.remoting.org.

# 1. start: 401 + session id + required stages
curl -s -X POST https://matrix.remoting.org/_matrix/client/v3/register \
  -d '{"username":"alice","password":"a-long-password"}'

# 2. get a captcha challenge, solve it (see the Python tab), then send it
curl -s https://chat.remoting.org/signup/challenge
#   -> {"salt":"…","exp":…,"difficulty":17,"sig":"…"}
#   response = base64url(JSON {salt, exp, sig, nonce})
curl -s -X POST https://matrix.remoting.org/_matrix/client/v3/register \
  -d '{"username":"alice","password":"a-long-password",
       "auth":{"type":"m.login.recaptcha","session":"SESSION","response":"TOKEN"}}'

# 3. finish
curl -s -X POST https://matrix.remoting.org/_matrix/client/v3/register \
  -d '{"username":"alice","password":"a-long-password",
       "auth":{"type":"m.login.dummy","session":"SESSION"}}'
#   -> {"user_id":"@alice:remoting.org","access_token":"…"}

STEP 2

Log in

Exchange a username and password for an access token. Send it as a Bearer token on every other request.

curl -s -X POST https://matrix.remoting.org/_matrix/client/v3/login -d '{
  "type": "m.login.password",
  "identifier": {"type": "m.id.user", "user": "alice"},
  "password": "a-long-password"
}'
# -> {"access_token":"syt_…","user_id":"@alice:remoting.org", …}
export TOKEN=syt_…

STEP 3

Create a room

Make a private room and invite people by their Remoting ID. Use preset public_chat and a room_alias_name for a public one.

curl -s -X POST https://matrix.remoting.org/_matrix/client/v3/createRoom \
  -H "Authorization: Bearer $TOKEN" -d '{
  "name": "Project chat",
  "preset": "private_chat",
  "invite": ["@bob:remoting.org"]
}'
# -> {"room_id":"!abc123:remoting.org"}

STEP 4

Join a room

Join a public room by alias, or any room you were invited to by its ID. The community room is #remoting.org:remoting.org.

# '#' and ':' must be URL-encoded
curl -s -X POST "https://matrix.remoting.org/_matrix/client/v3/join/%23remoting.org%3Aremoting.org" \
  -H "Authorization: Bearer $TOKEN" -d '{}'

STEP 5

Send a message

Messages are events. The transaction ID at the end makes retries safe: re-sending the same ID never double-posts.

curl -s -X PUT "https://matrix.remoting.org/_matrix/client/v3/rooms/!abc123:remoting.org/send/m.room.message/txn-$(date +%s%N)" \
  -H "Authorization: Bearer $TOKEN" -d '{"msgtype":"m.text","body":"Hello, Remoting!"}'

STEP 6

Send a file

Upload the bytes first to get a content URI (mxc://…), then send a message that points at it. Use msgtype m.image for pictures.

curl -s -X POST "https://matrix.remoting.org/_matrix/media/v3/upload?filename=report.pdf" \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/pdf" \
  --data-binary @report.pdf
# -> {"content_uri":"mxc://remoting.org/AbCdEf"}

curl -s -X PUT "https://matrix.remoting.org/_matrix/client/v3/rooms/!abc123:remoting.org/send/m.room.message/txn-$(date +%s%N)" \
  -H "Authorization: Bearer $TOKEN" -d '{
  "msgtype": "m.file", "body": "report.pdf",
  "url": "mxc://remoting.org/AbCdEf",
  "info": {"mimetype": "application/pdf"}
}'

STEP 7

Read messages (sync)

Sync returns your rooms and new events. Pass the next_batch value back as since= and use timeout= to long-poll for new messages.

curl -s "https://matrix.remoting.org/_matrix/client/v3/sync?timeout=30000" -H "Authorization: Bearer $TOKEN"
# then: …/sync?since=NEXT_BATCH&timeout=30000

Libraries & end-to-end encryption

Any Matrix client SDK works with Remoting. Point it at https://matrix.remoting.org. Direct messages and private rooms made in the Remoting apps are end-to-end encrypted, and plain HTTP can't read or write those. For encrypted rooms, use an SDK with encryption support:

  • • JavaScript/TypeScript: matrix-js-sdk
  • • Python: matrix-nio (with the e2e extra)
  • • Rust: matrix-rust-sdk
  • • Bots: any of the above

The registration captcha is Remoting-specific (step 1). Everything else is standard Matrix client-server API.