Manage Ember devices from your own system
Everything a reseller can do in the panel — list devices, load playlists, activate licences, check credit — is available over HTTPS with an API key. Same rules, same limits, same ledger; the key simply acts as a manager of your reseller account.
Getting a key
Sign in to the reseller panel at ember.ruscus.net, open API in the side menu and press Generate key. The key is shown once; we store only a hash. Up to five active keys per reseller; revoke any of them at any time. API access is enabled by default and can be switched off by RUSCUS.
Base URL https://ember.ruscus.net/api/ember/v1/reseller ·
header Authorization: Bearer rk_… · JSON in, JSON out
· device IDs exactly as the app shows them (AB:12:34:56:78:9A)
· timestamps in RFC 3339.
Endpoints
| Method & path | What it does |
|---|---|
GET /devices | Your devices (sub-resellers’ included). Each: id, platform, version, latestVersion, status, expiresAt, playlistCount, lastSeen, country, note, playlistError, playlistItems, firstPlayback, lastPlayback, latencyMs · releases[]: platform, store, status (published | in_review), version, build, date, notes{lang} |
GET /devices/{id} | One device: licence (id, status, source, expiresAt, active), playlists, note, transferredTo |
POST /devices/{id}/activate | Activate. No body: one year, costs 1 credit. Body {"days": N}: N days from the day pool; missing credits are converted automatically (1 credit = 365 days). Renewal is possible at any time and is added to the current end. Returns {"reseller"} |
POST /devices/{id}/playlists | Add a playlist. Body: {"name","type":"m3u"|"xtream","url","username","password"}. Returns 201 {"id"} Note: the type is stored as sent. For the TV browser client (LG webOS, Samsung Tizen) only, an M3U URL of the form …/get.php?username=…&password=… is served as Xtream (base URL + username + password → player_api.php), because downloading a large M3U is too slow there; phones, Android TV and Mac receive the M3U unchanged, so parameters such as output=mpegts are preserved. |
PUT /devices/{id}/playlists/{playlist} | Change a playlist (same body) |
DELETE /devices/{id}/playlists/{playlist} | Remove a playlist |
POST /devices/takeover | Take over a device with its transfer PIN. Body: {"device","pin"} |
PUT /devices/{id}/name | Device name shown in the reseller panel list. Body: {"name"}. Can also be passed to activate as {"name"} |
PUT /devices/{id}/note | Reseller note on a device (never shown to the customer). Body: {"note"} |
GET /credit | Credit and day balances with recent movements: {"balance", "days", "movements": [...], "dayMovements": [{id, type, days, balanceAfter, description, createdAt}]} |
POST /credit/convert | Convert credits to days. Body: {"credits": n} — one-way, 1 credit = 365 days. Returns {"converted", "balance", "days"} |
Licence status is one of trial, active, expired, transferred, closed, none;
source is trial, reseller, direct, manual. Playlist type is m3u
(a direct M3U link) or xtream (server URL + username + password).
Examples
Add an Xtream playlist to a device:
curl -X POST https://ember.ruscus.net/api/ember/v1/reseller/devices/AB:12:34:56:78:9A/playlists \
-H "Authorization: Bearer rk_…" \
-H "Content-Type: application/json" \
-d '{"name":"Package 1","type":"xtream","url":"http://host:8080","username":"user","password":"pass"}'
Activate it for a year:
curl -X POST https://ember.ruscus.net/api/ember/v1/reseller/devices/AB:12:34:56:78:9A/activate \ -H "Authorization: Bearer rk_…"
List your devices:
curl https://ember.ruscus.net/api/ember/v1/reseller/devices -H "Authorization: Bearer rk_…"
Errors
Every error is {"error": "…", "code": "…"}. Codes you will
meet: 401 invalid_key (bad or revoked key),
403 api_disabled (API switched off for your account),
403 account_suspended,
409 insufficient_credit, 409 insufficient_days, 409 licence_active, 409 device_owned_by_user (→ POST /devices/takeover), 404 device_not_found
(not your device, or no such device), 404 playlist_not_found,
400 invalid_type / invalid_url / invalid_body,
409 direct_licence (customer-bought licence cannot be moved).
Good to know
A key cannot do account-level things — change members, close the account, transfer credit; those stay in the panel. Playlists never pass through RUSCUS servers: the device fetches them from your provider. Requests over plain HTTP are refused.
Not a reseller yet? Write to hello@ruscus.net.