Connect THETA to your router and send API commands
There are two ways to connect your mobile app to the RICOH THETA with Wi-Fi.
1. Access Point (AP) mode where the THETA camera functions as a hotspot. The mobile phone connects to the THETA as if the camera were a hotspot or Wi-Fi router
2. Client Mode (CM) where the THETA camera connects to your home or office router. Your mobile phone connects to the same router
The RICOH THETA requires Digest Authentication for client mode. When you use client mode, you must use Digest Authentication in addition to the username and password.
On the THETA V, the username is similar to this: THETAYL00105377
The password is the numerical digits. Example: 00105377
The examples were tested using curl on Linux Ubuntu 20.04 and Mac OS 10.15.4, Catalina with a RICOH THETA V running firmware 3.30.1. You can also run curl on Windows from the command prompt or WSL bash.
$ curl --digest --user "THETAYL00105377:00105377" -X GET http://192.168.2.101/osc/info
Response
{"api":["/osc/info","/osc/state","/osc/checkForUpdates","/osc/commands/execute","/osc/commands/status"],"apiLevel":[2],"_bluetoothMacAddress":"00:26:73:D5:4C:40","endpoints":{"httpPort":80,"httpUpdatesPort":80},"firmwareVersion":"3.21.1","gps":false,"gyro":true,"manufacturer":"RICOH","model":"RICOH THETA V","serialNumber":"00105377","supportUrl":"https://theta360.com/en/support/","uptime":1555858,"_wlanMacAddress":"00:26:73:D5:AA:64"}
When you use POST, you must include the header.
curl --digest --user "THETAYL00105377:00105377" -H "Content-Type:application/json" -X POST http://192.168.2.101/osc/state
Response
{"fingerprint":"FIG_0067","state":{"_apiVersion":2,"batteryLevel":1.0,"_batteryState":"charged","_cameraError":[],"_captureStatus":"idle","_capturedPictures":0,"_latestFileUrl":"http://192.168.2.101/files/150100525831424d42079d18e0b6c300/100RICOH/R0010048.JPG","_pluginRunning":false,"_pluginWebServer":false,"_recordableTime":0,"_recordedTime":0,"storageUri":"http://192.168.2.101/files/150100525831424d42079d18e0b6c300/"}}
The next example takes a picture.
curl -d '{"name":"camera.takePicture"}' --digest --user "THETAYL00105377:00105377" -H "Content-Type:application/json; charset=utf-8;" -X POST http://192.168.2.101/osc/commands/execute
Response
{"id":"29","name":"camera.takePicture","progress":{"completion":0.00},"state":"inProgress"}