Blueye HTTP API (1.0.1)

Download OpenAPI specification:

Diagnostics

Drone information

Returns a JSON string of drone information. Using this endpoint is the easiest way to check if there is a drone connected to your network.

Responses

Request samples

curl -X GET "http://192.168.1.101/diagnostics/drone_info"

Response samples

Content type
application/json
{
  • "commit_id_csys": "299238949a",
  • "depth_sensor": "MS5837_30BA26",
  • "features": "lasers,jetpack",
  • "hardware_id": "ea9ac92e1817a1d4",
  • "manufacturer": "Blueye Robotics",
  • "model_description": "Blueye Pioneer Underwater Drone",
  • "model_name": "Blueye Pioneer",
  • "operating_system": "blunux",
  • "serial_number": "BYEDP123456",
  • "sw_version": "1.4.7-warrior-master"
}

Tether bandwidth test

Performs a bandwidth test on the connection between the surface unit and the drone. Set the test duration with the "duration"-parameter. A longer duration should yield a more accurate result.

query Parameters
duration
integer
Default: 10

Duration of the test to perform. Unit is seconds.

Responses

Request samples

curl -X POST "http://192.168.1.101/diagnostics/iperf" -d duration=5

Response samples

Content type
application/json
{
  • "received_Mbps": 79.55458795899487,
  • "sent_Mbps": 80.37122746322603,
  • "success": true
}

Subtitles

Download subtitle file

Downloads a subtitle file (srt) for a video file containing log data from the dive. The data is gathered from the videos accompanying logfile. By passing in varius queries it is possible to select which data one wants displayed, and where to display it.

query Parameters
file
required
string
Example: file=video_BYEDP123456_2019-01-01_000001.mp4

Name of the videofile to download subtitle file for.

title
string
Default: ""

Title of the video.

length-units
string
Default: "meter"
Enum: "meter" "feet"

Unit to use for depth. Use "meter" for metric units, and "feet" for imperial.

temp-units
string
Default: "celsius"

Unit to use for temperature. Use "celsius" for metric units, and "fahrenheit" for imperial.

placement
string
Default: "top"
Enum: "top" "bottom" ""

Where to place the subtitle. Use "top" for placing on the top, "bottom" for placing on the bottom, and "" for using the player default.

field-date
integer
Default: 0
Enum: 0 1

Enable or disable the date field. "1" to enable, "0" to disable.

field-depth
integer
Default: 1
Enum: 0 1

Enable or disable the depth field. "1" to enable, "0" to disable.

field-heading
integer
Default: 1
Enum: 0 1

Enable or disable the heading field. "1" to enable, "0" to disable.

field-temp
integer
Default: 1
Enum: 0 1

Enable or disable the temperature field. "1" to enable, "0" to disable.

date-format
string
Default: "%Y-%m-%d %H:%M:%S"

Format of the date/time.

tz-offset
integer <int32>
Default: 0

The drone stores all time in UTC+0, so if you were diving in another timezone and want to correct for that in the displayed time you can add a timezone offset here. The unit is minutes and both positive and negative values are supported.

format
string
Default: "srt"
Enum: "srt" "vtt"

Subtitles can also be retrived in the WEBVTT format. Use format=vtt to get a .vtt file instead of a .srt file.

Responses

Request samples

curl -X GET -G "http://192.168.1.101/srt" \
  -d "file=video_BYEDP123456_2019-01-01_000001.mp4" \
  -d "title=My title"

Dive data

Array of binary logs

Returns an array of binary logs from the drone. Each array item represents an available log file on the drone. Use the /logs/{filename}/binlog endpoint to get the full log.

Responses

Request samples

curl -X GET "http://192.168.1.101/logs"

Response samples

Content type
application/json
[
  • {
    }
]

Download a binary log file

Returns the binary content of the requested log

path Parameters
logname
required
string
Example: BYEDP070018_ea9add4d0c1961d4_00388

Name of the log to download

Responses

Request samples

# To get log with name BYEDP070018_ea9add4d0c1961d4_00388
curl -X GET "http://192.168.1.101/logs/BYEDP070018_ea9add4d0c1961d4_00388/binlog"

Get dive info for binlog

Returns extended meta data for the requested log. This endpoint is mostly useful for Blunux < 3.3, as the dive info is included with the output of the /logs endpoint from 3.3 and onwards.

path Parameters
logname
required
string
Example: BYEDP070018_ea9add4d0c1961d4_00388

Name of the log to download info for

Responses

Request samples

# To get info for log with name BYEDP070018_ea9add4d0c1961d4_00388
curl -X GET "http://192.168.1.101/logs/BYEDP070018_ea9add4d0c1961d4_00388/dive_info"

Response samples

Content type
application/json
{
  • "blunux_version": "3.0.47-honister-master",
  • "is_dive": true,
  • "is_valid": true,
  • "log_name": "BYEDP070018_ea9add4d0c1961d4_00386",
  • "max_depth_magnitude": 0,
  • "model_name": "Blueye Pioneer",
  • "start_time": 1692002908,
  • "videos": [
    ]
}

Array of logs

Returns an array of logs from the drone. Each array item represents an available log file on the drone. Use the /logcsv/{filename} endpoint to get the full log.

query Parameters
all
any

Add all to the parameter list to show logs that are not classified as dives (no auto functions enabled, and max depth < 0.25m). All logs will be shown regardless of the content of the all parameter (even false, 0, etc).

filter_depth_min_mm
integer
Default: 250
Example: filter_depth_min_mm=1000

Filter the minimum depth of the listed logs. Will be ignored if all is included in parameter list.

Responses

Request samples

curl -X GET "http://192.168.1.101/logcsv"

Response samples

Content type
application/json
[
  • {
    }
]

CSV log-file

Downloads a comma-separated-value (CSV) log-file with the requested name.

path Parameters
filename
required
string

Filename of log to download

query Parameters
divisor
integer
Default: 10
Example: divisor=1

Divisor to use when downsampling CSV before downloading. Set to 1 to get max resolution.

Responses

Request samples

# To get log with filename ea9ac92e1817a1d4-00090.csv
curl -X GET "http://192.168.1.101/logcsv/ea9ac92e1817a1d4-00090.csv"

Zipped CSV log files

Download all CSV log files as a zlib compressed zip file

Responses

Request samples

curl -X GET "http://192.168.1.101/logcsv/binary_logs.zip"

Download CSV file with data for creating scaled 3D models

Download CSV file with data for creating scaled 3D models in Agisoft

query Parameters
file
required
string
Example: file=video_BYEDP123456_2019-01-01_000001.mp4

Name of the video file to download data for

frame-step
integer
Example: frame-step=20

Amout of steps between each frame grab

mag-dist
integer [ 1 .. 360 ]
Default: "180"
Example: mag-dist=180

Expected compass variance induced from magnetic disturbance in degrees.

The most important data for an accurate 3D model are roll and pitch, which are not affected by magnetic disturbance, so the default is set quite high (180). If you trust that the data has not been skewed by magnetic interference you can set this to a medium (60) or even low (10) value.

Responses

Request samples

# To get log CSV for videofile video_BYEDP123456_2019-01-01_000001.mp4
curl -X GET "http://192.168.1.101/agisoft \
  -d "file=video_BYEDP123456_2019-01-01_000001.mp4"

Pictures

Download pictures

Downloads a picture (jpg) if get param filename is specified. If no parameter is set you'll get a list of all images.

query Parameters
file
string
Example: file=picture_BYEDP123456_2019-01-01_000001.001.jpg

Name of the image file to download

logo
integer
Example: logo=2

Add logo to picture. 0 = No logo, 1 = Drone default logo, 2 = User uploaded logo

tz-offset
integer
Example: tz-offset=-180

Add timezone offset to the picture EXIF data in minutes, can also be negative number. For example in Norway during summer time the correct value would be 60, while it would be -180 in Chile

Responses

Request samples

curl -X GET -G "http://192.168.1.101/picture" \
  -d "file=picture_BYEDP123456_2019-01-01_000001.001.jpg"

Response samples

Content type
[
  • {
    }
]

Download a thumbnail of a picture

Downloads a picture (jpg) with EXIF metadata from when the photo was captured.

query Parameters
file
required
string
Example: file=picture_BYEDP123456_2019-01-01_000001.001.jpg

Name of the image file to download

width
integer
Default: 1024

Width of the thumbnail in pixels.

height
integer
Default: 576

Height of the thumbnail in pixels.

quality
integer
Default: 85

JPG compression level, 0-100. 100 is best quality, 0 is worst quality.

Responses

Request samples

curl -X GET -G "http://192.168.1.101/picture/thumbnail" \
  -d "file=picture_BYEDP123456_2019-01-01_000001.001.jpg"

Download pictures with metadata overlay

Downloads a picture (jpg) with metadata from when the photo was captured.

query Parameters
file
required
string
Example: file=picture_BYEDP123456_2019-01-01_000001.001.jpg

Name of the image file to download

title
string
Default: ""

Title of the image.

subtitle
string
Default: ""

Subtitle of the image

length-units
string
Default: "meter"

Unit to use for all distance/length measurements such as depth, altitude, distance etc. For shorter lengths mm or inches will be used accordingly.

  • meter - Metric unit
  • feet - Imperial unit
temp-units
string
Default: "celsius"

Unit to use for the temperature field and any temperature related measurements.

  • celsius - Metric unit
  • fahrenheit - Imperial unit
field-date
integer
Default: 1
Enum: 0 1

Enable or disable the date field.

  • 1 - Enable
  • 0 - Disable
field-depth
integer
Default: 1
Enum: 0 1

Display water depth in the image overlay.

  • 1 - Enable
  • 0 - Disable
field-heading
integer
Default: 1
Enum: 0 1

Display compass heading in the image overlay.

  • 1 - Enable
  • 0 - Disable
field-temp
integer
Default: 1
Enum: 0 1

Display water temperature in the image overlay.

  • 1 - Enable
  • 0 - Disable
field-tilt
integer
Default: 0
Enum: 0 1

Display camera tilt angle in the image overlay.

  • 1 - Enable
  • 0 - Disable
date-format
string
Default: "%Y-%m-%d %H:%M:%S"

Format of the date/time.

tz-offset
integer <int32>
Default: 0
Example: tz-offset=60

The drone stores all time in UTC+0, so if you were diving in another timezone and want to correct for that in the displayed time you can add a timezone offset here. The unit is minutes and both positive and negative values are supported.

logo
integer
Default: 0
Enum: 0 1 2

Which logo to overlay.

  • 0 - No logo
  • 1 - Drone default logo
  • 2 - User uploaded logo
ignore-exif-titles
integer
Default: 0
Enum: 0 1

Ignore title and subtitle set by the app during the dive. If title and subtitle is not specified, the title and/or subtitle selected for the video overlay will be written unless this parameter is enabled.

  • 1 - Ignore exif titles
  • 0 - Use title from exif
field-guestport
integer
Default: 1
Enum: 0 1

Display data from connected guestport sensors in the image overlay.

  • 1 - Enable
  • 0 - Disable
field-gps
integer
Default: 0
Enum: 0 1

Display GPS coordinates (decimal degrees) in the image overlay. Requires Blunux 3.0 or newer. If a positioning system is used, the coordinates of the drone is shown, else the operator position reported by the app is shown.

  • 1 - Enable
  • 0 - Disable

Responses

Request samples

curl -X GET -G "http://192.168.1.101/picture/overlay" \
  -d "file=picture_BYEDP123456_2019-01-01_000001.001.jpg" \

Upload logo

Upload user selectable logo for watermarking videos and pictures. Allowed filetype: JPG or PNG. Max resolution: 2000px. Max file size: 5MB.

query Parameters
image
required
object

JPG or PNG, <5MB, <2000px

Responses

Request samples

curl -X POST "http://192.168.1.101/asset/logo" --form 'image=@"logo.png"'

Download logo

Download the original user uploaded logo (PNG or JPG)

Responses

Request samples

curl -X GET "http://192.168.1.101/asset/logo"

Delete logo

Delete the uploaded logo

Responses

Request samples

curl -X DELETE "http://192.168.1.101/asset/logo"

Get logo md5sum

Returns uploaded logo md5sum

Responses

Request samples

curl -X GET "http://192.168.1.101/asset/logo/md5"

Response samples

Content type
application/json
{
  • "md5sum": "10194c9eb82fd0237342ce80a2747ed2"
}

Surface unit

Get current version(s)

Get version of update file stored on drone and the version installed on the surface unit

Responses

Response samples

Content type
application/json
{
  • "version_on_drone": {
    },
  • "installed_version": {
    }
}

Update the surface unit firmware

Updates the surface unit firmware. If a binary image is included in the request, it will use that image for the update. If not, it will use the version stored on the drone.

Request Body schema: application/octet-stream
optional
string <binary>

Binary image for the update

Responses

Request samples

curl -X POST -F "update-file=@firmware.bin" "http://192.168.1.101/surface_unit/update"