Shelly DevKit · For iPhone
Every tap, and the call behind it.
See and control your Shelly devices from the cloud, then open any control up to the exact HTTP request it sent. Contract pages for the whole API, a runner to try them, a log of what you ran.
- Free to use
- Your password stays on Shelly's page
- No account with us
iPhone · iOS 17 or later
POST /v2/devices/api/set/switch
{ "id": "a4cf12ef4b91",
"on": false }Devices
Your whole inventory, live over WebSocket.
Every cloud-connected device in your Shelly account, grouped by room. Status is pushed the moment it changes, so there is nothing to pull down and refresh.
- Grouped by room; one tap filters to a single room
- Switches, covers with slats, dimmers and RGBW lights
- BLU sensors: temperature, humidity, doors, battery
- Not logged in yet? A demo inventory lets you look around first
View API call
Open any control up to the request it sent.
Flip a switch, then tap View API call: the method, the endpoint, the body, and what the cloud answered. Copy it as cURL, Swift or JavaScript and paste it straight into your own project.
curl -X POST 'https://<user_api_url>/v2/devices/api/set/switch' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"id":"80646f8c31a4","channel":0,"on":true}'import Foundation
var request = URLRequest(url: URL(string: "https://<user_api_url>/v2/devices/api/set/switch")!)
request.httpMethod = "POST"
request.setValue("Bearer <ACCESS_TOKEN>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = Data("""
{
"id": "80646f8c31a4",
"channel": 0,
"on": true
}
""".utf8)
let (data, response) = try await URLSession.shared.data(for: request)
print((response as? HTTPURLResponse)?.statusCode ?? 0, String(decoding: data, as: UTF8.self))const response = await fetch("https://<user_api_url>/v2/devices/api/set/switch", {
method: "POST",
headers: {
Authorization: "Bearer <ACCESS_TOKEN>",
"Content-Type": "application/json",
},
body: JSON.stringify({
"id": "80646f8c31a4",
"channel": 0,
"on": true
}),
});
console.log(response.status, await response.json());Host and token are always placeholders. A real token never reaches the clipboard.
API Explorer
The whole API, documented. Bundled with the app.
Contract pages for OAuth, inventory, control and real-time events, plus the Gen1 REST and Gen2+ RPC local APIs. Fields, constraints, examples and every documented error. They work with the plane in the air.
Authentication
ReferenceOAuth · token exchange · JWT payload
4 pages
Device inventory
Try itall_status · devices/api/get · device/list · room/list
4 pages
Control
Try itswitch · cover · light · groups
4 pages
Real-time events
ReferenceStatusOnChange · Online · CommandResponse
4 pages
Gen1 local REST
Docs only/relay/0?turn=on · /status
6 pages
Gen2+ local RPC
Docs onlySwitch.Set · Cover.GoToPosition
7 pages
Try it against your own devices
Read and control calls run for real and show the raw response. Endpoints that could brick a device — firmware updates, factory reset, settings — stay documentation-only.
Your last 50 calls
Every Try-it run lands in History with its status and timing. Copy any of them as code, token masked.
One request per second
Every cloud call goes through one throttle that respects Shelly's rate limit, so a busy session never trips it.
Build
Write one sentence. Get a real iOS Shortcut.
Compose multi-step recipes: read a value, branch on it, wait, show a result or send a raw request. Test-run the recipe inside the app before it goes anywhere.
Turn on Garage Heater then back after 30 min.
What it sends
POST set/switch · on:true · toggle_after:1800
- 1Pick a device and fill the blanks. The sentence is the whole editor.
- 2Read exactly what it will send. Nothing is hidden behind the words.
- 3Tap Add to Shortcuts. It appears in Apple's Shortcuts app under the name you gave it.
Step types
- Read a value
- If · otherwise
- Wait
- Show a result
- Switch
- Pulse
- Cover
- Light
- Raw request
Run
Then run it from anywhere. The app stays closed.
A Shortcut is a first-class citizen on iOS. Once yours exists, everything Apple lets Shortcuts do, your Shelly devices can do.
Say it
“Hey Siri, warm up the garage”
Tap it
Home Screen widget · Lock Screen · Action button
Schedule it
Shortcuts automations: time, arrival, sunset, NFC
Chain it
Combine with any other app's actions
Privacy by design
Your devices live in your Shelly account, not in ours.
There is no Shelly DevKit account and no backend of ours. The app talks to Shelly Cloud directly from your iPhone, and nothing about your devices is sent to us.
Log in on Shelly's own page
Your password is typed only into Shelly's login page, inside Apple's secure browser sheet. The app receives a token, never the password.
Token in the Keychain
The token is stored in the iOS Keychain and sent only to Shelly Cloud. Wherever it is shown, it is masked.
No tracking
No advertising identifier, no tracking across apps or websites. Device names and IDs never appear in analytics or crash reports.
You hold the switch
Anonymous analytics can be turned off in Settings. Delete local data wipes the token, cache, recipes and history in one tap.
Free and Pro
Composing is free. Landing it in Shortcuts is the paid part.
Everything you need to see, control and understand your devices is free, and stays free.
Free
No trial clock. No account.
- Live device inventory and controls
- View API call on every control
- The full API reference and Try it
- History of your last 50 calls, copy as code
- Compose and test-run recipes
DevKit Pro
ProMonthly or yearly subscription
- Everything in Free
- Export any recipe to the Shortcuts app
- Siri phrases and Spotlight suggestions
- Shortcuts run headlessly — the app stays closed
- Unlimited saved recipes
Pro is an auto-renewable subscription billed to your Apple ID. The price for your region is shown in the app before you subscribe. It renews automatically unless cancelled at least 24 hours before the end of the current period; manage or cancel it in your App Store account settings.
Questions
Before you download
No. Shelly DevKit is an independent app published by Sydcup OÜ. It is not affiliated with, endorsed by or connected to Allterco Robotics or the Shelly brand. “Shelly” is used only to describe compatibility.
To work with your own devices, yes: a Shelly Cloud account with cloud-connected devices. Without logging in, the app runs on a built-in demo inventory, so you can look around, read the API reference and compose recipes first.
Cloud-connected Gen1, Gen2+ and BLU devices: switches and plugs, covers and rollers (with slats where calibrated), dimmers and RGBW lights, and BLU sensors. Devices the app cannot control yet are listed separately, so nothing silently disappears.
No. Every call goes through Shelly Cloud, so the app works the same at home and away. The Gen1 REST and Gen2+ RPC local APIs are documented in the app, with the local equivalent next to each cloud action, ready to copy.
Try it runs only read and control calls. Endpoints that could brick a device — firmware updates, factory reset, settings — are documentation-only.
No. A recipe is exported as an App Intent, so it runs from Siri, Spotlight, widgets or Shortcuts automations while the app stays closed.
In your App Store account settings, like any other subscription. Pro is tied to your Apple ID, not to your Shelly account; Restore purchases in the app's Settings brings it back on another iPhone.
Settings › Privacy › Delete local data wipes everything the app stores on your iPhone. There is no account of ours to delete. Data held by Shelly Cloud is managed in your Shelly account.
Not yet. Shelly DevKit is made for iPhone and requires iOS 17 or later.
Open up your Shelly devices.
Free to download, free to explore. Pro only when you want it in Shortcuts.
iPhone · iOS 17 or later