Download OpenAPI specification:Download
The GoPro API allows developers to create apps and utilities that interact with and control a GoPro camera.
The GoPro API allows you to control and query the camera to:
Model ID | Model Code | Marketing Name | Minimal Firmware Version |
---|---|---|---|
62 | H23.01 | HERO12 Black | v01.10.00 |
60 | H22.03 | HERO11 Black Mini | v01.10.00 |
58 | H22.01 | HERO11 Black | v01.10.00 |
57 | H21.01 | HERO10 Black | v01.10.00 |
55 | HD9.01 | HERO9 Black | v01.70.00 |
While the version listed above are minimum versions needed to support the Open GoPro API, the documentation assumes that the GoPro is always updated to the most recent version. This is relevant in cases where functionality changes between versions.
Connection to the camera via WiFi requires that the camera's WiFi Access Point be enabled. This can be done by connecting to the camera via Bluetooth Low Energy and sending a command to enable AP Mode.
Open GoPro systems that utilize USB must support the Network Control Model (NCM) protocol. Connecting via USB requires the following steps:
Once the WiFi Access Point has been turned on, authentication with the camera simply requires connecting with the correct SSID and password. This information can be obtained in two ways:
No authentication is necessary.
The socket address for WiFi connections is 10.5.5.9:8080.
The socket address for USB connections is 172.2X.1YZ.51:8080 where XYZ are the last three digits of the camera's serial number.
The camera's serial number can be obtained in any of the following ways:
For example, if the camera's serial number is C0000123456789, the IP address for USB connections would be 172.27.189.51.
Alternatively, the IP address can be discovered via mDNS as the camera registers the _gopro-web service.
Using the Open GoPro API, a client can perform various command, control, and query operations.
Depending on the camera's state, it may not be ready to accept specific commands. This ready state is dependent on the System Busy and the Encoding Active status flags. For example:
If the system is not ready, it should reject an incoming command; however, best practice is to always wait for the System Busy and Encode Active flags to be unset before sending messages other than camera status queries. For details regarding camera state, see the Get State Operation
It is necessary to periodically send a keep-alive signal to maintain the connection.
In order to prevent undefined behavior between the camera and a connected app, simultaneous use of the camera and a connected app is discouraged. A third party client should use the Set Camera Control Status command to tell the camera that the client wishes to claim control of the camera.
General
Supported Protocols:
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/analytics/set_client_info
{ }
The Camera On the Home Network (COHN) capability allows the client to perform command and control with the camera indirectly through an access point such as a router at home.
For security purposes, all communications are performed over HTTPS.
The following cameras support COHN:
Camera | Supported |
---|---|
HERO | ❌ |
HERO12 Black | ✔ |
HERO11 Black Mini | ❌ |
HERO11 Black | ❌ |
HERO10 Black | ❌ |
HERO9 Black | ❌ |
In order to use the COHN capability, the camera must first be provisioned for COHN. For instructions on how to do this, see the Open GoPro BLE spec.
Once the camera is provisioned, the client can issue commands and set settings via HTTPS using the COHN certificate and Basic authorization (username/password) credentials obtained during provisioning or subsequently by querying for COHN status.
All HTTPS messages must contain Basic access authentication headers, using the username and password from the COHN status obtained during or after provisioning.
Supported Protocols:
cohn_active |
integer
Enum: 0 1 1 to enable, 0 to disable When |
{-
"cohn_active": 0
}
{ }
Supported Protocols:
This creates the Camera On the Home Network SSL/TLS certs certs. The created certificate(s) can be obtained via Get COHN Certificate and used for SSL/TLS communications
override |
integer
Enum: 0 1 If 1, replace existing Root CA cert with a newly-generated one. |
{-
"override": 0
}
{ }
Supported Protocols:
curl --request POST \ --url http://10.5.5.9:8080/gopro/cohn/cert/clear
{ }
curl --request POST \ --url http://10.5.5.9:8080/GoProRootCA.crt
-----BEGIN CERTIFICATE----- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -----END CERTIFICATE----
Supported Protocols:
enabled |
integer
Enum: 0 1 Is COHN currently enabled? |
|||||||||||||||||||||||||||
ipaddress |
string
Example: "123.45.67.890"
Camera's IP address on the local network |
|||||||||||||||||||||||||||
macaddress |
string
MAC address of the wifi adapter |
|||||||||||||||||||||||||||
password |
string
Password used for http basic auth header |
|||||||||||||||||||||||||||
ssid |
string
Currently connected SSID |
|||||||||||||||||||||||||||
state |
integer (EnumCOHNNetworkState)
Enum: 0 1 2 5 27 28 29 30
|
|||||||||||||||||||||||||||
status |
integer (EnumCOHNStatus)
Enum: 0 1
|
|||||||||||||||||||||||||||
username |
string
Username used for http basic auth header |
curl --request POST \ --url http://10.5.5.9:8080/gopro/cohn/status
{
-
"enabled": 0,
-
"ipaddress": "123.45.67.890",
-
"macaddress": "string",
-
"password": "string",
-
"ssid": "string",
-
"state": 0,
-
"status": 0,
-
"username": "string"
}
Supported Protocols:
Some cameras support Turbo Transfer mode, which allows media to be downloaded over WiFi more rapidly.
This special mode should only be used during media offload.
It is recommended that the user check for and, if necessary, disable Turbo Transfer on connection.
Note that Disabling / enabling turbo mode willa lso enable / disable the transferring media camera UI.
p<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 0 to disable, 1 to enable |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/turbo_transfer?p=0'
{ }
Supported Protocols:
p<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 If 1, enable wired usb control; If 0, disable usb control |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/control/wired_usb?p=0'
{ }
Supported Protocols:
In order to maximize battery life, GoPro cameras automatically go to sleep after some time. This logic is handled by a combination of the Auto Power Down setting which most (but not all) cameras support and a Keep Alive message that the user can regularly send to the camera.
The camera will automatically go to sleep if both timers reach zero.
The Auto Power Down timer is reset when the user taps the LCD screen, presses a button on the camera, programmatically (un)sets the shutter, sets a setting, or loads a Preset.
The Keep Alive timer is reset when the user sends a keep alive message.
The best practice to prevent the camera from inadvertently going to sleep is to start sending Keep Alive messages every 3.0 seconds after a connection is established.
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/keep_alive
{ }
Supported Protocols:
This command is used to tell the camera that a client (i.e. External Control) wishes to claim control of the camera. This causes the camera to immediately exit most contextual menus and return to the idle screen. Any interaction with the camera's physical buttons will cause the camera to reclaim control and update control status accordingly. If the user returns the camera UI to the idle screen, the camera updates control status to Idle.
Note:
See the below diagram for a state diagram of Camera Control:
p<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/control/set_ui_controller?p=0'
{ }
Supported Protocols:
date<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: date=2023_12_31
current date in format YYYY_MM_DD |
time<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: time=21_12_13
current time in format HH_MM_SS in 24 hour format |
tzone<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> | integer Example: tzone=-480Timezone offset in minutes. See here for a listing of all UTC offsets. Not supported on Hero 10 Black Hero 9 Black |
dst<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> | integer Enum: 0 1 Is daylight savings time active? Not supported on Hero 10 Black Hero 9 Black |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/set_date_time?date=2023_12_31&time=21_12_13&tzone=-480&dst=0'
{ }
Supported Protocols:
percent<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 100 ]
Example: percent=50
Zoom Level (0-100) |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/digital_zoom?percent=50'
{ }
Supported Protocols:
mode<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Enum: "start" "stop"
Example: start
Start / stop encoding. |
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/shutter/start
{ }
The HiLight Tags feature allows the user to tag moments of interest either during video capture or on existing media.
Once HiLight tags have been added, they can be queried via Media Info
Supported Protocols:
Add a hilight / tag to an existing photo or media file.
path<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: path=100GOPRO/GOPR0002.MP4
The path to a file on the camera to HiLight |
ms |
integer
Example: ms=1
The offset from the beginning of a video file, in milliseconds |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/hilight/file?path=100GOPRO/GOPR0002.MP4&ms=1'
{ }
Supported Protocols:
Add hilight at current time while recording video
This can only be used during recording.
curl --request GET \ --url http://10.5.5.9:8080/gopro/media/hilight/moment
{ }
Supported Protocols:
Remove an existing hilight from a photo or video file.
path<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: path=100GOPRO/GOPR0002.MP4
The path to a file on the camera to remove a HiLight from |
ms |
integer
Example: ms=1
The offset from the beginning of a video file, in milliseconds |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/hilight/remove?path=100GOPRO/GOPR0002.MP4&ms=1'
{ }
This section describes the operations to query basic details about media captured on the sdcard.
All GoPro cameras break longer videos into chapters. GoPro cameras currently limit file sizes on sdcards to 4GB for both FAT32 and exFAT file systems. This limitation is most commonly seen when recording longer (10+ minute) videos. In practice, the camera will split video media into chapters named Gqccmmmm.MP4 (and ones for THM/LRV) such that:
When media becomes chaptered, the camera increments subsequent Chapter Numbers while leaving the Media ID unchanged. For example, if the user records a long High-quality video that results in 4 chapters, the files on the sdcard may look like the following:
-rwxrwxrwx@ 1 gopro 123456789 4006413091 Jan 1 00:00 GH010078.MP4
-rwxrwxrwx@ 1 gopro 123456789 17663 Jan 1 00:00 GH010078.THM
-rwxrwxrwx@ 1 gopro 123456789 4006001541 Jan 1 00:00 GH020078.MP4
-rwxrwxrwx@ 1 gopro 123456789 17357 Jan 1 00:00 GH020078.THM
-rwxrwxrwx@ 1 gopro 123456789 4006041985 Jan 1 00:00 GH030078.MP4
-rwxrwxrwx@ 1 gopro 123456789 17204 Jan 1 00:00 GH030078.THM
-rwxrwxrwx@ 1 gopro 123456789 756706872 Jan 1 00:00 GH040078.MP4
-rwxrwxrwx@ 1 gopro 123456789 17420 Jan 1 00:00 GH040078.THM
-rwxrwxrwx@ 1 gopro 123456789 184526939 Jan 1 00:00 GL010078.LRV
-rwxrwxrwx@ 1 gopro 123456789 184519787 Jan 1 00:00 GL020078.LRV
-rwxrwxrwx@ 1 gopro 123456789 184517614 Jan 1 00:00 GL030078.LRV
-rwxrwxrwx@ 1 gopro 123456789 34877660 Jan 1 00:00 GL040078.LRV
curl --request GET \ --url http://10.5.5.9:8080/gp/gpControl/command/storage/delete/all
{ }
Supported Protocols:
Delete an entire group of media files such as in a burst, timelapse, or chaptered video. This API should not be used to delete single files. Instead use Delete Single File
p<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: p=105GOPRO/G0016880.JPG
The path to the group on the camera to delete. This path must be the first file in the group. |
curl --request GET \ --url 'http://10.5.5.9:8080/gp/gpControl/command/storage/delete/group?p=105GOPRO/G0016880.JPG'
{ }
Supported Protocols:
When operating on a file that is part of a group, only the individual file will be deleted. To delete the entire group, use Delete Grouped Media Item
p<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: p=105GOPRO/GOPR6879.JPG
path to media file to delete |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/delete/file?p=105GOPRO/GOPR6879.JPG'
{ }
Supported Protocols:
Note that this is the same endpoint for all media (photos, video, etc.).
directory<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: 100GOPRO
Case sensitive directory that media resides in |
filename<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Examples:
Case sensitive media filename |
curl --request GET \ --url http://10.5.5.9:8080/videos/DCIM/100GOPRO/%7Bfilename%7D
Supported Protocols:
This will return the complete path of the last captured media. Depending on the type of media captured, it will return:
file |
string
Example: "GOPR0002.JPG"
Filename of media |
folder |
string
Example: "100GOPRO"
Directory in which the media is contained in |
curl --request GET \ --url http://10.5.5.9:8080/gopro/media/last_captured
{
-
"file": "GOPR0002.JPG",
-
"folder": "100GOPRO"
}
Supported Protocols:
None
path<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: path=100GOPRO/GOPR0002.JPG
media file name |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/gpmf?path=100GOPRO/GOPR0002.JPG'
Supported Protocols:
path<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: path=100GOPRO/GOPR0002.JPG
media file name |
ct<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 3 4 5 6 8 9 10 11 12 Media content type
|
||||||||||||||||||||||||||
cre<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1692992748"
Creation time in seconds since epoch |
||||||||||||||||||||||||||
s<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1234567890"
File size in bytes |
||||||||||||||||||||||||||
gumi<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "12345678998765443211234567899875"
Globally Unique Media ID |
||||||||||||||||||||||||||
h<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1080"
Height of media in pixels |
||||||||||||||||||||||||||
w<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1920"
Width of media in pixels |
||||||||||||||||||||||||||
hc<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 99 ]
Number of hilights in media |
||||||||||||||||||||||||||
eis<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if stabilized, 0 otherwise |
||||||||||||||||||||||||||
mp<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if metadata is present, 0 otherwise |
||||||||||||||||||||||||||
rot<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Deprecated |
||||||||||||||||||||||||||
tr<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if file is transcoded, 0 otherwise |
||||||||||||||||||||||||||
us<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 Has the file been uploaded? 0 if no, 1 if yes |
||||||||||||||||||||||||||
ao<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Enum: "auto" "wind" "stereo" "off"
Example: "auto"
Audio option |
||||||||||||||||||||||||||
profile<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 255 ]
Advanced Video Codec Level |
||||||||||||||||||||||||||
avc_profile<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 255 ]
Example: "0"
Advanced Video Code Profile |
||||||||||||||||||||||||||
cl<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if clipped, 0 otherwise |
||||||||||||||||||||||||||
dur<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "42"
Video duration in seconds |
||||||||||||||||||||||||||
fps<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1001"
Video frame rate numerator |
||||||||||||||||||||||||||
fps_denom<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "30000"
Video frame rate denominator |
||||||||||||||||||||||||||
ls<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ -1 .. 1234567890 ]
Low Resolution Video file size in bytes. -1 if there is no LRV file |
||||||||||||||||||||||||||
pta<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if protune audio is present, 0 otherwise |
||||||||||||||||||||||||||
subsample<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if subsampled from other video, 0 otherwise |
||||||||||||||||||||||||||
fov |
string
Field of View |
||||||||||||||||||||||||||
hi |
Array of integers
Example: "1500,4700"
List of hilights in ms offset from start of video |
||||||||||||||||||||||||||
lc |
integer
Enum: 0 1 Lens configuration ==> 0 for front, 1 for rear |
||||||||||||||||||||||||||
mos |
Array of strings
Items Enum: "app" "pc" "other"
Example: "app,pc"
List of offload states |
||||||||||||||||||||||||||
prjn |
integer
Enum: 0 1 2 3 4 5 6 7 8 Lens projection
|
||||||||||||||||||||||||||
progr |
integer
Enum: 0 1 Is video progressive? 1 if progressive, 0 if interlaced |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/info?path=100GOPRO/GOPR0002.JPG'
{
-
"ao": "auto",
-
"avc_profile": 0,
-
"cl": 0,
-
"cre": 1692992748,
-
"ct": 0,
-
"dur": 42,
-
"eis": 0,
-
"fov": "string",
-
"fps": 1001,
-
"fps_denom": 30000,
-
"gumi": "12345678998765443211234567899875",
-
"h": 1080,
-
"hc": 99,
-
"hi": [
-
1500,
- 4700
],
-
"lc": 0,
-
"ls": -1,
-
"mos": [
-
"app",
- "pc"
],
-
"mp": 0,
-
"prjn": 0,
-
"profile": 255,
-
"progr": 0,
-
"pta": 0,
-
"rot": "string",
-
"s": 1234567890,
-
"subsample": 0,
-
"tr": 0,
-
"us": 0,
-
"w": 1920
}
Supported Protocols:
A screennail is a low-res preview image that is higher resolution than a thumbnail.
path<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: path=100GOPRO/GOPR0002.JPG
media file name |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/screennail?path=100GOPRO/GOPR0002.JPG'
Supported Protocols:
Get Media File Telemetry track data
path<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: path=100GOPRO/GOPR0002.JPG
media file name |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/telemetry?path=100GOPRO/GOPR0002.JPG'
Supported Protocols:
path<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: path=100GOPRO/GOPR0002.JPG
media file name |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/media/thumbnail?path=100GOPRO/GOPR0002.JPG'
Supported Protocols:
To minimize the size of the JSON transmitted by the camera, grouped media items such as Burst Photos, Time Lapse Photos, Night Lapse Photos, etc are represented with a single item in the media list with additional keys that allow the user to extrapolate individual filenames for each member of the group.
Filenames for group media items have the form "GXXXYYYY.ZZZ" where XXX is the group ID, YYY is the group member ID and ZZZ is the file extension.
For example, take the media list below, which contains a Time Lapse Photo group media item:
{
"id": "2530266050123724003",
"media": [
{
"d": "100GOPRO",
"fs" : [
{
"b": "8",
"cre": "1613669353",
"g": "1",
"l": "396",
"m": ["75", "139"],
"mod": "1613669353",
"n": "G0010008.JPG",
"s": "773977407",
"t": "t"
}
]
}
]
}
The first filename in the group is G0010008.JP
(key: n
).
The ID of the first group member in this case is 008
(key: b
).
The ID of the last group member in this case is 396
(key: l
).
The IDs of deleted members in this case are 75
and 139
(key: m
)
Given this information, the user can extrapolate that the group currently contains
G0010008.JPG, G0010009.JPG, G0010010.JPG,
...,
G0010074.JPG, G0010076.JPG,
...,
G0010138.JPG, G0010140.JPG,
...,
G0010394.JPG, G0010395.JPG. G0010396.JPG
id<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "1554375628411872255"
media list identifier |
||||||||||||||||||
<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
Array of objects
|
||||||||||||||||||
Array
|
curl --request GET \ --url http://10.5.5.9:8080/gopro/media/list
{
-
"id": "1554375628411872255",
-
"media": [
-
{
-
"d": "100GOPRO",
-
"fs": [
-
{
-
"cre": 1696600109,
-
"glrv": 817767,
-
"ls": -1,
-
"mod": 1696600109,
-
"n": "GOPR0001.JPG",
-
"s": 2806303
}
]
}
]
}
n<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "G0010011.MP4"
Media filename |
cre<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1696600109"
Creation time in seconds since epoch |
mod<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1696600109"
Time file was last modified in seconds since epoch |
g<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1"
Group Identifier |
s<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "5"
Number of files in the group |
b<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1"
ID of first member in the group |
l<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "6"
ID of last member in the group |
m<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
Array of integers
Example: "1,2"
File ID's that are missing or deleted |
t<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Enum: "b" "c" "n" "t" Group Type (b -> burst, c -> continuous shot, n -> night lapse, t -> time lapse) |
glrv |
integer
Example: "817767"
Low resolution video size |
id |
string
Media list session identifier |
ls |
integer
Example: "-1"
Low resolution file size. -1 if there is no LRV file |
{
-
"b": 1,
-
"cre": 1696600109,
-
"g": 1,
-
"glrv": 817767,
-
"id": "string",
-
"l": 6,
-
"ls": -1,
-
"m": [
-
1,
- 2
],
-
"mod": 1696600109,
-
"n": "G0010011.MP4",
-
"s": 5,
-
"t": "b"
}
id<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "1554375628411872255"
media list identifier |
||||||||||||||||||
<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
Array of objects
|
||||||||||||||||||
Array
|
{
-
"id": "1554375628411872255",
-
"media": [
-
{
-
"d": "100GOPRO",
-
"fs": [
-
{
-
"cre": 1696600109,
-
"glrv": 817767,
-
"ls": -1,
-
"mod": 1696600109,
-
"n": "GOPR0001.JPG",
-
"s": 2806303
}
]
}
]
}
ct<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 3 4 5 6 8 9 10 11 12 Media content type
|
||||||||||||||||||||||||||
cre<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1692992748"
Creation time in seconds since epoch |
||||||||||||||||||||||||||
s<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1234567890"
File size in bytes |
||||||||||||||||||||||||||
gumi<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "12345678998765443211234567899875"
Globally Unique Media ID |
||||||||||||||||||||||||||
h<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1080"
Height of media in pixels |
||||||||||||||||||||||||||
w<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1920"
Width of media in pixels |
||||||||||||||||||||||||||
hc<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 99 ]
Number of hilights in media |
||||||||||||||||||||||||||
eis<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if stabilized, 0 otherwise |
||||||||||||||||||||||||||
mp<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if metadata is present, 0 otherwise |
||||||||||||||||||||||||||
rot<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Deprecated |
||||||||||||||||||||||||||
tr<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if file is transcoded, 0 otherwise |
||||||||||||||||||||||||||
us<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 Has the file been uploaded? 0 if no, 1 if yes |
||||||||||||||||||||||||||
fov |
string
Field of View |
||||||||||||||||||||||||||
hdr |
integer
Enum: 0 1 1 if photo taken with high dynamic range, 0 otherwise |
||||||||||||||||||||||||||
lc |
integer
Enum: 0 1 Lens configuration ==> 0 for front, 1 for rear |
||||||||||||||||||||||||||
mos |
Array of strings
Items Enum: "app" "pc" "other"
Example: "app,pc"
List of offload states |
||||||||||||||||||||||||||
prjn |
integer
Enum: 0 1 2 3 4 5 6 7 8 Lens projection
|
||||||||||||||||||||||||||
raw |
integer
Enum: 0 1 1 if photo has raw version, 0 otherwise |
||||||||||||||||||||||||||
wdr |
integer
Enum: 0 1 1 if photo taken with wide dynamic range, 0 otherwise |
{
-
"cre": 1692992748,
-
"ct": 0,
-
"eis": 0,
-
"fov": "string",
-
"gumi": "12345678998765443211234567899875",
-
"h": 1080,
-
"hc": 99,
-
"hdr": 0,
-
"lc": 0,
-
"mos": [
-
"app",
- "pc"
],
-
"mp": 0,
-
"prjn": 0,
-
"raw": 0,
-
"rot": "string",
-
"s": 1234567890,
-
"tr": 0,
-
"us": 0,
-
"w": 1920,
-
"wdr": 0
}
icon |
integer (EnumPresetIcon)
Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 58 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 78 79 1000 1001
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
id |
integer <int32>
Unique preset identifier |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isFixed |
boolean
Is this preset mutable? |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isModified |
boolean
Has the preset been modified from the factory defaults? |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mode |
integer (EnumFlatMode)
Enum: -1 4 5 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (PresetSetting)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
titleId |
integer (EnumPresetTitle)
Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 82 83 93 94
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
titleNumber |
integer <int32>
Preset title number |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
userDefined |
boolean
Is this preset user defined? |
{
-
"icon": 0,
-
"id": 0,
-
"isFixed": true,
-
"isModified": true,
-
"mode": -1,
-
"settingArray": [
-
{
-
"id": 0,
-
"isCaption": true,
-
"value": 0
}
],
-
"titleId": 0,
-
"titleNumber": 0,
-
"userDefined": true
}
canAddPreset |
boolean
Is there room in the group to add additional Presets? |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
icon |
integer (EnumPresetGroupIcon)
Enum: 0 1 2 3 4 5 6 7
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
id |
integer (EnumPresetGroup)
Enum: 1000 1001 1002
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (Preset)
Array of Presets contained in this Preset Group |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array
|
{
-
"canAddPreset": true,
-
"icon": 0,
-
"id": 1000,
-
"presetArray": [
-
{
-
"icon": 0,
-
"id": 0,
-
"isFixed": true,
-
"isModified": true,
-
"mode": -1,
-
"settingArray": [
-
{
-
"id": 0,
-
"isCaption": true,
-
"value": 0
}
],
-
"titleId": 0,
-
"titleNumber": 0,
-
"userDefined": true
}
]
}
id |
integer <int32>
Setting identifier |
isCaption |
boolean
Does this setting appear on the Preset "pill" in the camera UI? |
value |
integer <int32>
Setting value |
{
-
"id": 0,
-
"isCaption": true,
-
"value": 0
}
n<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "GOPR0001.JPG"
Media filename |
cre<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1696600109"
Creation time in seconds since epoch |
mod<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1696600109"
Time file was last modified in seconds since epoch |
s<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "2806303"
Size of media in bytes |
glrv |
integer
Example: "817767"
Low resolution video size |
ls |
integer
Example: "-1"
Low resolution file size. -1 if there is no LRV file |
{
-
"cre": 1696600109,
-
"glrv": 817767,
-
"ls": -1,
-
"mod": 1696600109,
-
"n": "GOPR0001.JPG",
-
"s": 2806303
}
object
All currently known setting values indexed by setting ID |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
All currently known status values indexed by status ID |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
{
-
"settings": {
-
"2": 1,
-
"3": 0,
-
"43": 0,
-
"59": 0,
-
"83": 0,
-
"108": 0,
-
"121": 0,
-
"122": 19,
-
"123": 19,
-
"128": 13,
-
"134": 2,
-
"135": 0,
-
"150": 0,
-
"151": 0,
-
"162": 0,
-
"167": 2,
-
"171": 0,
-
"172": 0,
-
"173": 0,
-
"175": 0,
-
"176": 0,
-
"177": 0,
-
"178": 0,
-
"179": 1,
-
"180": 0,
-
"182": 0,
-
"183": 0,
-
"184": 0,
-
"186": 0,
-
"187": 0,
-
"189": 0,
-
"190": 0,
-
"191": 0,
-
"192": 0,
-
"193": 0
},
-
"status": {
-
"1": 0,
-
"2": 0,
-
"6": 0,
-
"8": 0,
-
"9": 0,
-
"10": 0,
-
"11": 0,
-
"13": 0,
-
"17": 0,
-
"19": 0,
-
"20": 0,
-
"21": 0,
-
"22": 0,
-
"23": 0,
-
"24": 0,
-
"26": 0,
-
"27": 0,
-
"28": 0,
-
"29": "string",
-
"30": "string",
-
"31": 0,
-
"32": 0,
-
"33": -1,
-
"34": 0,
-
"35": 0,
-
"38": 0,
-
"39": 0,
-
"41": 0,
-
"42": 0,
-
"45": 0,
-
"49": 0,
-
"54": 0,
-
"55": 0,
-
"56": 0,
-
"58": 0,
-
"59": 0,
-
"60": 0,
-
"65": 0,
-
"66": 100,
-
"67": 100,
-
"68": 0,
-
"69": 0,
-
"70": 100,
-
"74": 0,
-
"75": 100,
-
"76": 0,
-
"77": 0,
-
"78": 0,
-
"79": 0,
-
"81": 0,
-
"82": 0,
-
"83": 0,
-
"85": 0,
-
"86": 0,
-
"88": 0,
-
"89": 0,
-
"93": 0,
-
"94": 0,
-
"95": 0,
-
"96": 0,
-
"97": 0,
-
"98": 0,
-
"99": 0,
-
"100": 0,
-
"101": 0,
-
"102": 0,
-
"103": 0,
-
"104": 0,
-
"105": 0,
-
"106": 0,
-
"107": 0,
-
"108": 0,
-
"110": 0,
-
"111": 0,
-
"112": 0,
-
"113": 0,
-
"114": 0,
-
"115": 0,
-
"116": 0,
-
"117": 0,
-
"118": 0
}
}
ct<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 3 4 5 6 8 9 10 11 12 Media content type
|
||||||||||||||||||||||||||
cre<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1692992748"
Creation time in seconds since epoch |
||||||||||||||||||||||||||
s<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1234567890"
File size in bytes |
||||||||||||||||||||||||||
gumi<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "12345678998765443211234567899875"
Globally Unique Media ID |
||||||||||||||||||||||||||
h<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1080"
Height of media in pixels |
||||||||||||||||||||||||||
w<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1920"
Width of media in pixels |
||||||||||||||||||||||||||
hc<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 99 ]
Number of hilights in media |
||||||||||||||||||||||||||
eis<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if stabilized, 0 otherwise |
||||||||||||||||||||||||||
mp<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if metadata is present, 0 otherwise |
||||||||||||||||||||||||||
rot<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Deprecated |
||||||||||||||||||||||||||
tr<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if file is transcoded, 0 otherwise |
||||||||||||||||||||||||||
us<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 Has the file been uploaded? 0 if no, 1 if yes |
||||||||||||||||||||||||||
ao<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Enum: "auto" "wind" "stereo" "off"
Example: "auto"
Audio option |
||||||||||||||||||||||||||
profile<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 255 ]
Advanced Video Codec Level |
||||||||||||||||||||||||||
avc_profile<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ 0 .. 255 ]
Example: "0"
Advanced Video Code Profile |
||||||||||||||||||||||||||
cl<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if clipped, 0 otherwise |
||||||||||||||||||||||||||
dur<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "42"
Video duration in seconds |
||||||||||||||||||||||||||
fps<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "1001"
Video frame rate numerator |
||||||||||||||||||||||||||
fps_denom<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Example: "30000"
Video frame rate denominator |
||||||||||||||||||||||||||
ls<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer [ -1 .. 1234567890 ]
Low Resolution Video file size in bytes. -1 if there is no LRV file |
||||||||||||||||||||||||||
pta<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if protune audio is present, 0 otherwise |
||||||||||||||||||||||||||
subsample<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 1 if subsampled from other video, 0 otherwise |
||||||||||||||||||||||||||
fov |
string
Field of View |
||||||||||||||||||||||||||
hi |
Array of integers
Example: "1500,4700"
List of hilights in ms offset from start of video |
||||||||||||||||||||||||||
lc |
integer
Enum: 0 1 Lens configuration ==> 0 for front, 1 for rear |
||||||||||||||||||||||||||
mos |
Array of strings
Items Enum: "app" "pc" "other"
Example: "app,pc"
List of offload states |
||||||||||||||||||||||||||
prjn |
integer
Enum: 0 1 2 3 4 5 6 7 8 Lens projection
|
||||||||||||||||||||||||||
progr |
integer
Enum: 0 1 Is video progressive? 1 if progressive, 0 if interlaced |
{
-
"ao": "auto",
-
"avc_profile": 0,
-
"cl": 0,
-
"cre": 1692992748,
-
"ct": 0,
-
"dur": 42,
-
"eis": 0,
-
"fov": "string",
-
"fps": 1001,
-
"fps_denom": 30000,
-
"gumi": "12345678998765443211234567899875",
-
"h": 1080,
-
"hc": 99,
-
"hi": [
-
1500,
- 4700
],
-
"lc": 0,
-
"ls": -1,
-
"mos": [
-
"app",
- "pc"
],
-
"mp": 0,
-
"prjn": 0,
-
"profile": 255,
-
"progr": 0,
-
"pta": 0,
-
"rot": "string",
-
"s": 1234567890,
-
"subsample": 0,
-
"tr": 0,
-
"us": 0,
-
"w": 1920
}
The Over The Air (OTA) update feature allows the user to update the camera's firmware via HTTP connection. There are two ways to perform OTA updates: Simple OTA Update and Resumable OTA Update.
Firmware update files can be obtained from GoPro's update page or programmatically using the firmware catalog.
In order to complete the firmware update process, the camera will reboot one or more times. This will cause any existing HTTP connections to be lost.
The simple OTA update process is done by sending an entire update file to the camera in a single HTTP/POST. Details can be found in the diagram below.
The resumable OTA update process involves uploading chunks (or all) of a file, marking the file complete and then telling the camera to begin the update process. Chunks are stored until they are explicitly deleted, allowing the client to stop and resume as needed. Details can be found in the diagram below.
Supported Protocols:
Perform Resumable OTA Update
To send a portion of the OTA image as per the requestBody specification, do not use the request
parameter.
request |
string
Enum: "delete" "showui" "start" "progress" "cancelled"
Example: request=progress
Optional request parameter to control / query OTA functionality.
|
OTA image chunk used when executed with no request
parameter
file |
string <binary>
Binary file |
offset |
integer
Offset (in bytes) into the file data to start reading from |
sha1 |
string
SHA of the complete firmware upload zip file |
bytes_complete |
integer
|
||||||||||||||||||||||||||||||||||||||||||
complete |
boolean
|
||||||||||||||||||||||||||||||||||||||||||
message |
string
|
||||||||||||||||||||||||||||||||||||||||||
sha1 |
string
|
||||||||||||||||||||||||||||||||||||||||||
status |
integer (OtaStatus)
Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12 OTA Status
|
curl --request POST \ --url 'http://10.5.5.9:8080/gp/gpSoftUpdate?request=progress' \ --header 'content-type: multipart/form-data'
{
-
"bytes_complete": 0,
-
"complete": true,
-
"message": "string",
-
"sha1": "string",
-
"status": 0
}
Supported Protocols:
DirectToSD |
integer
Always set to 1 |
file |
string <binary>
Binary file |
sha1 |
string
SHA of the complete firmware upload zip file |
update |
integer
Always set to 1 |
status |
integer (OtaStatus)
Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12 OTA Status
|
curl --request POST \ --url http://10.5.5.9:8080/gp/gpUpdate \ --header 'content-type: multipart/form-data'
{-
"status": 0
}
The camera organizes many modes of operation into Presets.
Note: The Preset ID is required to load a Preset via Load Preset.
Depending on the camera's state, different collections of presets will be available for immediate loading and use. Below is a table of settings that affect the current preset collection and thereby which presets can be loaded:
ID | Setting |
---|---|
162 | Max Lens |
173 | Video Performance Mode |
175 | Controls |
177 | Enable Night Photo |
180 | Video Mode |
186 | Video Mode |
187 | Lapse Mode |
189 | Max Lens Mod |
190 | Max Lens Mod Enable |
191 | Photo Mode |
Presets are organized into Preset Groups.
To find the currently available Presets / Preset Groups, use Get Preset Status.
Supported Protocols:
Get the currently available Preset Groups and Presets, the set of which depends on the current camera settings.
Array of objects
A list of ranges of icon ID's available for custom presets. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects
A list of ranges of title ID's available for custom presets. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (PresetGroup)
Array of Preset Groups |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Array
|
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/presets/get
{
-
"customIconIds": [
-
{
-
"length": 10,
-
"start": 0
}
],
-
"customTitleIds": [
-
{
-
"length": 25,
-
"start": 18
}
],
-
"presetGroupArray": [
-
{
-
"canAddPreset": true,
-
"icon": 0,
-
"id": 1000,
-
"presetArray": [
-
{
-
"icon": 0,
-
"id": 0,
-
"isFixed": true,
-
"isModified": true,
-
"mode": -1,
-
"settingArray": [
-
{
-
"id": 0,
-
"isCaption": true,
-
"value": 0
}
],
-
"titleId": 0,
-
"titleNumber": 0,
-
"userDefined": true
}
]
}
]
}
Supported Protocols:
Preset ID's are not constant and must be retrieved via Get Preset Status
id<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Preset to load |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/presets/load?id=0'
{ }
Supported Protocols:
id<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 1000 1001 1002
Example: id=1000
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/presets/set_group?id=1000'
{ }
Supported Protocols:
This only operates on the currently active Preset and will fail if the current Preset is not custom.
The use cases are:
Update the Custom Preset Icon
icon_id
is always optional and can always be passedand / or
Update the Custom Preset Title to a...
title_id
to a non-PRESET_TITLE_USER_DEFINED_CUSTOM_NAME
(94) valuetitle_id
to PRESET_TITLE_USER_DEFINED_CUSTOM_NAME
(94) and
specify a custom_name
Note! The range of acceptable custom title_id
's and icon_id
's can be found in the
Get Preset Status response
custom_name | string UTF-8 encoded target custom preset name which obeys the following must be between 1 and 16 characters (inclusive) No special characters outside of the following languages: English, French, Italian, German, Spanish, Portuguese, Swedish, Russian | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
icon_id |
integer (EnumPresetIcon)
Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 58 59 60 61 62 63 64 65 66 67 70 71 73 74 75 76 77 78 79 1000 1001
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
title_id |
integer (EnumPresetTitle)
Enum: 0 1 2 3 4 5 6 7 8 9 10 11 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 82 83 93 94
|
{
-
"custom_name": "string",
-
"icon_id": 0,
-
"title_id": 0
}
{ }
When the preview stream is started, the camera starts up a UDP client and begins writing MPEG Transport Stream data to the client on port 8554. In order to stream this data, the client must implement a UDP connection that binds to the same port and decode the data.
Supported Protocols:
port | integer Example: port=8556Port to use for Preview Stream. Not supported on Hero 11 Black Mini Hero 11 Black Hero 10 Black Hero 9 Black |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/stream/start?port=8556'
{ }
Supported Protocols:
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/stream/stop
{ }
Supported Protocols:
Get all camera settings and statuses.
object
All currently known setting values indexed by setting ID |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
All currently known status values indexed by status ID |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/state
{
-
"settings": {
-
"2": 1,
-
"3": 0,
-
"43": 0,
-
"59": 0,
-
"83": 0,
-
"108": 0,
-
"121": 0,
-
"122": 19,
-
"123": 19,
-
"128": 13,
-
"134": 2,
-
"135": 0,
-
"150": 0,
-
"151": 0,
-
"162": 0,
-
"167": 2,
-
"171": 0,
-
"172": 0,
-
"173": 0,
-
"175": 0,
-
"176": 0,
-
"177": 0,
-
"178": 0,
-
"179": 1,
-
"180": 0,
-
"182": 0,
-
"183": 0,
-
"184": 0,
-
"186": 0,
-
"187": 0,
-
"189": 0,
-
"190": 0,
-
"191": 0,
-
"192": 0,
-
"193": 0
},
-
"status": {
-
"1": 0,
-
"2": 0,
-
"6": 0,
-
"8": 0,
-
"9": 0,
-
"10": 0,
-
"11": 0,
-
"13": 0,
-
"17": 0,
-
"19": 0,
-
"20": 0,
-
"21": 0,
-
"22": 0,
-
"23": 0,
-
"24": 0,
-
"26": 0,
-
"27": 0,
-
"28": 0,
-
"29": "string",
-
"30": "string",
-
"31": 0,
-
"32": 0,
-
"33": -1,
-
"34": 0,
-
"35": 0,
-
"38": 0,
-
"39": 0,
-
"41": 0,
-
"42": 0,
-
"45": 0,
-
"49": 0,
-
"54": 0,
-
"55": 0,
-
"56": 0,
-
"58": 0,
-
"59": 0,
-
"60": 0,
-
"65": 0,
-
"66": 100,
-
"67": 100,
-
"68": 0,
-
"69": 0,
-
"70": 100,
-
"74": 0,
-
"75": 100,
-
"76": 0,
-
"77": 0,
-
"78": 0,
-
"79": 0,
-
"81": 0,
-
"82": 0,
-
"83": 0,
-
"85": 0,
-
"86": 0,
-
"88": 0,
-
"89": 0,
-
"93": 0,
-
"94": 0,
-
"95": 0,
-
"96": 0,
-
"97": 0,
-
"98": 0,
-
"99": 0,
-
"100": 0,
-
"101": 0,
-
"102": 0,
-
"103": 0,
-
"104": 0,
-
"105": 0,
-
"106": 0,
-
"107": 0,
-
"108": 0,
-
"110": 0,
-
"111": 0,
-
"112": 0,
-
"113": 0,
-
"114": 0,
-
"115": 0,
-
"116": 0,
-
"117": 0,
-
"118": 0
}
}
Supported Protocols:
date<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "2023_12_31"
current date in format YYYY_MM_DD |
time<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
string
Example: "11_05_45"
current time in format HH_MM_SS |
dst |
integer
Enum: 0 1 Is daylight savings time active? |
tzone |
integer
Example: "-480"
Timezone offset in minutes |
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/get_date_time
{
-
"date": "2023_12_31",
-
"dst": 0,
-
"time": "11_05_45",
-
"tzone": -480
}
Supported Protocols:
object
|
|||||||||||||
|
curl --request GET \ --url http://10.5.5.9:8080/gopro/camera/info
{-
"info": {
-
"ap_mac_addr": "065747046ceb",
-
"ap_ssid": "GP24645504",
-
"firmware_version": "H23.01.01.10.00",
-
"model_name": "Hero12 Black",
-
"model_number": "62",
-
"serial_number": "C3501324645504"
}
}
Supported Protocols:
This will return the complete path of the last captured media. Depending on the type of media captured, it will return:
file |
string
Example: "GOPR0002.JPG"
Filename of media |
folder |
string
Example: "100GOPRO"
Directory in which the media is contained in |
curl --request GET \ --url http://10.5.5.9:8080/gopro/media/last_captured
{
-
"file": "GOPR0002.JPG",
-
"folder": "100GOPRO"
}
Supported Protocols:
version |
string <version>
Example: "2.0"
Open GoPro version |
curl --request GET \ --url http://10.5.5.9:8080/gopro/version
{-
"version": "2.0"
}
GoPro cameras have hundreds of setting options to choose from, all of which can be set using a single endpoint. The endpoint is configured with a setting id and an option value. Note that setting option values are not globally unique. While most option values are enumerated values, some are complex bit-masked values.
Camera capabilities usually change from one camera to another and often change from one release to the next. Below are documents that detail whitelists for basic video settings for every supported camera release.
These Capability documents define supported camera states. Each state is comprised of a set of setting options that are presented in dependency order. This means each state is guaranteed to be attainable if and only if the setting options are set in the order presented. Failure to adhere to dependency ordering may result in the camera's blacklist rules rejecting a set-setting command.
Camera | Command 1 | Command 2 | Command 3 | Command 4 | Command 5 | Guaranteed Valid? |
---|---|---|---|---|---|---|
HERO10 Black | Res: 1080 | Anti-Flicker: 60Hz (NTSC) | FPS: 240 | FOV: Wide | Hypersmooth: OFF | ✔ |
HERO10 Black | FPS: 240 | Anti-Flicker: 60Hz (NTSC) | Res: 1080 | FOV: Wide | Hypersmooth: OFF | ❌ |
In the example above, the first set of commands will always work for basic video presets such as Standard.
In the second example, suppose the camera's Video Resolution was previously set to 4K. If the user tries to set Video FPS to 240, it will fail because 4K/240fps is not supported.
Capability documents for each camera / firmware version can be found in the following file formats:
An XLSX file can be found here.
The capabilities spreadsheet contains worksheets for every supported release. Each row in a worksheet represents a whitelisted state and is presented in dependency order as outlined above.
A JSON file can be found here.
The capabilities JSON contains a set of whitelist states for every supported release. Each state is comprised of a list of objects that contain setting and option IDs necessary to construct set-setting commands and are given in dependency order as outlined above. For more information on the object format, see the JSON schema
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 2 3
Example: option=2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=2&setting=134'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 3 4
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=108'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 3
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=192'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 4 6 7 11 12
Example: option=11
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=11&setting=59'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=183'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
Example: option=1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=1&setting=182'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=175'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 3 4 5 6 7 8 9
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=172'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=176'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=177'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 5 6 8 9 10 13
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=3'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=193'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
Example: option=1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=1&setting=83'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 2 3 4
Example: option=2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=2&setting=167'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=150'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=151'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 3 4 100
Example: option=4
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=4&setting=135'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 2 3 4 5 6 7 8 9 10
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=171'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2 3 4 5 6 7
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=187'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 2 3 4 7 8 9 10 11
Example: option=7
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=7&setting=121'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 19 100 101 102
Example: option=100
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=100&setting=122'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=162'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=189'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=190'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 13 20 21 26
Example: option=13
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=13&setting=128'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=191'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=184'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 1 4 6 7 9 18 24 25 26 27 28 100 107 108 109 110 111
Example: option=100
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=100&setting=2'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 19 100 101 102
Example: option=101
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=101&setting=123'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 1 2 3
Example: option=3
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=3&setting=179'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 101 102
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=180'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=186'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1 2
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=173'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 2 3 4
Example: option=3
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=3&setting=43'
{ }
option<div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div> |
integer
Enum: 0 1
|
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/camera/setting?option=0&setting=178'
{ }
The webcam feature enables developers who are interested in writing custom drivers to broadcast the camera's video preview with a limited set of resolution, field of view, port, and protocol options.
While active, the webcam feature sends raw data to the connected client using a supported protocol. To enable multi-cam support, some cameras support running on a user-specified port. Protocol and port details are provided in a table below.
To test basic functionality, start the webcam, and use an application such as VLC to open a network stream:
Protocol | Port |
---|---|
TS | udp://@:{PORT} |
RTSP | rtsp://{CAMERA_IP}:554/live |
For readers interested in using a GoPro camera as a webcam with preexisting tools, please see How to use GoPro as a Webcam.
For USB connections, prior to issuing webcam commands, Wired USB Control should be disabled.
Should the client require stabilization, the
Hypersmooth setting
can be used while in the state: READY (Status: OFF)
. This setting can only be set while webcam is disabled, which
requires either sending the Webcam Exit command or reseating the USB-C connection to the camera.
Note! The Low Hypersmooth option provides lower/lighter stabilization when used in Webcam mode vs other camera modes.
Supported Protocols:
Not supported on WiFi for:
curl --request GET \ --url http://10.5.5.9:8080/gopro/webcam/preview
{ }
Supported Protocols:
Not supported on WiFi for:
curl --request GET \ --url http://10.5.5.9:8080/gopro/webcam/exit
{ }
Supported Protocols:
error |
integer
Enum: 0 1 2 3 4 5 6 7 8 Current webcam error (if status was not successful)
|
||||||||||||||||||||
status |
integer
Enum: 0 1 2 3 Current webcam status
|
curl --request GET \ --url http://10.5.5.9:8080/gopro/webcam/status
{
-
"error": 0,
-
"status": 0
}
Supported Protocols:
max_lens_support |
boolean
Does the webcam support Max Lens Mod? |
usb_3_1_compatible |
boolean
Is the webcam USB 3.1 compatible? |
version |
integer
Current webcam version |
curl --request GET \ --url http://10.5.5.9:8080/gopro/webcam/version
{
-
"max_lens_support": true,
-
"usb_3_1_compatible": true,
-
"version": 0
}
Supported Protocols:
Not supported on WiFi for:
res |
integer
Example: res=12
Webcam Resolution
|
|||||||||||||||
fov |
integer
Webcam Field-of-View
|
|||||||||||||||
port | integer Default: 8554 Example: port=8556Port to use for Webcam Stream. Defaults to 8554 if not set Not supported on Hero 11 Black Mini Hero 10 Black Hero 9 Black | |||||||||||||||
protocol | string Enum: “RTSP” “TS” Example: protocol=RTSPStreaming protocol to use. Not supported on Hero 11 Black Mini Hero 11 Black Hero 10 Black Hero 9 Black |
curl --request GET \ --url 'http://10.5.5.9:8080/gopro/webcam/start?res=12&fov=0&port=8556&protocol=RTSP'
{ }
Supported Protocols:
Not supported on WiFi for:
curl --request GET \ --url http://10.5.5.9:8080/gopro/webcam/stop
{ }